![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
И снова здравствуйте...
![]() У меня клиентское приложение по продаже автомобилей. Автомобили, имеющиеся в наличии выводятся в DBGrid. При щелчке на ячейке с названием машины на форме должна возникать фотография этой машины, которая должна загружаться из БД (объект Image1), в БД есть поле Photo (тип-текстовый), где прописан путь к изображению (напр.: L:\Проектир_ИС_лаб\bmw.bmp). Как это сделать, подскажите пожалуйста! ![]() |
|
#2
|
||||
|
||||
|
Классика жанра)
Берёшь Image1 с панели additional. Visible:=false; В коде на Код:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
Image1.Picture.LoadFromFile('');
Image1.Top:=;
Image1.Left:=;
Image1.Visible:=true;
end;Image можно поместить где-то просто на форме, а можно просчитать форматы колонки по которой прошёлся клик, и подставить картинку туда ![]() |
|
#3
|
||||
|
||||
|
Спасибо за отклик
Бесспорно это всё верно, но у меня в БД 20 записей о разных моделях автомобилей и соответственно фотографии у каждой тоже разные![]() |
|
#4
|
||||
|
||||
|
Код:
Image1.Picture.LoadFromFile('');Что то вроде Код:
Image1.Picture.LoadFromFile(Table1.FieldByname('Photo').AsString);Последний раз редактировалось Uniq!, 09.10.2010 в 14:55. |
|
#5
|
||||
|
||||
|
Просто так из таблицы невозможно взять ресурс, Дельфи видит её как переменную, а не как таблицу. Ну ладно, спасибо за идеи, буду думать.
|
|
#6
|
||||
|
||||
|
Что значит нельзя? o.O
Напишите связку по какому пинципу вы связываете данные и по какому драйверу? ![]() Table1 это лишь пример. Если вы используете Query поставляйте query или ADOQuery? всё зависит от структуры вашей связки |
|
#7
|
||||
|
||||
|
ADOConnection1 связан с БД Avto.mdb
ADOQuery1 связан с ADOConnection1 DataSource1 связан с ADOQuery1 Код:
Image1.Picture.LoadFromFile(ADOQuery1.FieldByname('Photo').AsString); |
|
#8
|
||||
|
||||
|
Код:
unit LAB6Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, RpRender, RpRenderHTML, RpCon,
RpConDS, RpDefine, RpRave, DB, ADODB, Grids, DBGrids;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
RvProject1: TRvProject;
RvDataSetConnection1: TRvDataSetConnection;
RvRenderHTML1: TRvRenderHTML;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Memo1: TMemo;
BitBtn3: TBitBtn;
RvProject2: TRvProject;
RvDataSetConnection2: TRvDataSetConnection;
Image1: TImage;
Label1: TLabel;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
DataSource1: TDataSource;
DataSource2: TDataSource;
procedure BitBtn1Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject); {информация о моделях, имеющихся в наличии}
begin
ADOQuery1.Active:=False;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT Name, Price, Data, Comments, Photo');
ADOQuery1.SQL.Add('FROM Table1');
ADOQuery1.Open;
ADOQuery1.Active:=True;
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
//FN: string;
begin
Label1.Caption:=ADOQuery1.FieldByName('Name').AsString;
Memo1.Lines.Text:=ADOQuery1.FieldByName('Comments').AsString;
{FN:=ADOQuery1.FieldByName('Photo').AsString;
if FileExists(FN) then
Image1.Picture.LoadFromFile(FN);}
Image1.Picture.LoadFromFile(ADOQuery1.FieldByname('Photo').AsString);
end;
end. |
|
#9
|
||||
|
||||
|
а ошибка то какая?)
Не вижу ни кода ни сообщения. Скорее всего формат загружаемый <> доступным для Image1 Последний раз редактировалось Uniq!, 09.10.2010 в 16:00. |
|
#10
|
||||
|
||||
|
Ошибка raised exception class Einvalid Graphic with message 'Bitmap image is not valid'.
|
|
#11
|
||||
|
||||
|
ЧТД (что и требовалось доказать)
Картинки загружаются какие? jpeg или БМП? ![]() |
|
#12
|
||||
|
||||
|
По заданию написанному в методичке необходимо bmp, ну и у меня соответственно bmp
|
|
#13
|
||||
|
||||
|
Так мой косяк.
В целом и общем: можно сделать так: Вытасикваем вместо TImage Код:
DBImage: Его свойства: DataSource: DataSource1 DataField: Photo Кода никакого, ибо загрузка идёт по стандартной навигации С Memo и Label советую сделать так же. DBMemo1 вместо Memo1 и DBLabel вместо Label свойства теже DataSource : datasource1 DataField: Comments DataSource : datasource1 DataField: Name Стандартная база по имени: biolife.db Там рыбки в виде graphic Откройте и посомтри что за поле типа graphic и как оно содавалось. Последний раз редактировалось Uniq!, 09.10.2010 в 16:17. |
|
#14
|
||||
|
||||
|
Всё, разобралась, огромное спасибо :-*
![]() |
|
#15
|
||||
|
||||
|
Есть только одно замечание, если вы по совету Уника сохраняете фотку в БД, то делайте это в отдельной таблице и загружайте данные из нее по мере надобности, а не подобным запросом:
Код:
SELECT Name, Price, Data, Comments, Photo |