Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2010, 14:15   #1
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
Подмигивание При щелчке на ячейке DBGrid загружать изображение в Image1 из БД

И снова здравствуйте...
У меня клиентское приложение по продаже автомобилей.
Автомобили, имеющиеся в наличии выводятся в DBGrid.
При щелчке на ячейке с названием машины на форме должна возникать фотография этой машины, которая должна загружаться из БД (объект Image1), в БД есть поле Photo (тип-текстовый), где прописан путь к изображению (напр.: L:\Проектир_ИС_лаб\bmw.bmp). Как это сделать, подскажите пожалуйста!
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Старый 09.10.2010, 14:24   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Я делал так:
Код:
procedure Tmainform.ADOTable1AfterScroll(DataSet: TDataSet);    //любой переход по таблице
begin
  if  adotable1.RecordCount<>0 then     //если есть какие-либо записи в таблице тогда
    begin
      Image1.Picture := nil;   //обнуляем картинку 1
        if ADOTable1image.AsString<>'' then    //если существует запись о фото тогда
          image1.Picture.LoadFromFile(ADOTable1image.AsString);    //загружаем картинку 1
    end;
end;
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 09.10.2010, 14:42   #3
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
По умолчанию

Спасибо за отклик, но мне нужно загружать при каждом щелчке на ячейке DBGrid изображение, соответствующее выбранной модели машины, изображение это хранится просто в папке, а в БД в ячейках поля Photo хранится только адрес на это изображение и тип у этого поля текстовый
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Старый 09.10.2010, 14:43   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

А можно и так. По щелчку в ячейке (OnCellClick):
Код:
procedure TForm1.DBGrid1CellClick(Sender: TObject);
var FN : string;
begin
  Image1.Picture := nil;
  FN := Query1.FieldByName('Photo').AsString;
  if FileExists(FN) then
    Image1.Picture.Bitmap.LoadFromFile(FN);
end;
Прик вне форума Ответить с цитированием
Старый 09.10.2010, 14:51   #5
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от ulala Посмотреть сообщение
Спасибо за отклик, но мне нужно загружать при каждом щелчке на ячейке DBGrid изображение, соответствующее выбранной модели машины, изображение это хранится просто в папке, а в БД в ячейках поля Photo хранится только адрес на это изображение и тип у этого поля текстовый
А Вы посмотрите мой код внимательно. Там так и происходит загрузка изображения из указанного адреса (не из базы):
Код:
image1.Picture.LoadFromFile(ADOTable1image.AsString);
Просто у меня поле с адресом изображения называется в базе "Image"
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 09.10.2010, 14:54   #6
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
По умолчанию

Код:
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.Bitmap.LoadFromFile(FN);
end;
end.
raised exception class Einvalid Graphic with message 'Bitmap image is not valid'
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Старый 09.10.2010, 14:56   #7
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Сделайте так:
Image1.Picture.LoadFromFile(FN);
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 09.10.2010, 15:04   #8
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
По умолчанию

Точно такая же ошибка.
Ну ладно, всем спасибо за идеи, буду думать.
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Старый 09.10.2010, 15:55   #9
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Эта ошибка означает то что в ней написано (Bitmap image is not valid).
Скорее всего, изображение не формате bmp или файл испорчен.
Прик вне форума Ответить с цитированием
Старый 09.10.2010, 16:05   #10
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
По умолчанию

Заработало Спасибо! =*
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрытие flowLayoutPanel при щелчке вне элемента Vistar Общие вопросы .NET 2 19.09.2010 23:39
delphi, при щелчке по пустой форме, создается кнопка, при щелчке на кнопку, она становится цветная KaZaaM Помощь студентам 5 15.05.2010 00:48
Текст при щелчке BloodWizard JavaScript, Ajax 6 12.05.2010 21:23
Мерцание модального окна при щелчке на родительское Vadik(R) Общие вопросы Delphi 11 14.10.2009 19:37
Посылаемые сообщения при щелчке на рабочем столе chandrasecar Win Api 4 09.11.2008 10:57