![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте! в blob загрузил c:\1.bmp но в DB Grid отображение идет каряво BLOB в место название файлов.
![]() потом при нажатие на кнопку: Код:
Image1.Picture.Bitmap.Assign(TBlobField(SQLTable1.FieldByName('name'))); ![]() |
#2
|
|||
|
|||
![]() Код:
for i:=0 to dbgrid1.Columns.Count-1 do begin memo1.Visible:=true; DBGrid1.Columns.FieldAddress('name'); memo1.Text:=DBGrid1.SelectedField.AsString; Image1.Picture.Bitmap.Assign(TBlobField(SQLTable1.FieldByName(DBGrid1.SelectedField.AsString))); ![]() |
#3
|
|||
|
|||
![]() получается во второй колонке у меня картинка блоб.
Код:
Image1.Picture.Bitmap.Assign(TBlobField(SQLTable1.Fields[2])); error2.jpg Последний раз редактировалось leon2009, 11.09.2023 в 15:21. Причина: картинка |
#4
|
|||
|
|||
![]() Картинку читает из текущей записи. Соотвеисвенно, тебе надо "отловить" момент смены текущей записи (соотв событие у TDataSource) и загрузить новую картинку в Image1. Нет кода под рукой, но в интернете достаточно примеров на эту тему...
|
#5
|
|||
|
|||
![]() примеров много, на адо, Query и.т.п но я не могу сообразить
![]() Код:
memo1.Lines.Add(DBGrid1.SelectedField.AsString); ![]() error3.jpg |
#6
|
|||
|
|||
![]() Код:
SQLQuery: TSQLQuery; begin SQLQuery := TSQLQuery.Create(nil); try SQLQuery.SQLConnection := SqlConnection1; // указываем соединение с базой данных image1.Picture.LoadFromFile(SQLQuery.FieldByName('name').AsString); SQLQuery.ExecSQL(); // выполняем запрос finally SQLQuery.Free(); end; не может найти имя файла ![]() error5.jpg |
#7
|
|||
|
|||
![]() "(BLOB)" отображается именно гридом, т.к. он понятия не имеет что там в BLOB поле сохранено и как его отображать. Если программисту хочется, то он может перекрыть отрисовку ячеек грида, бо как он, программист, в курсе, что там хранится.
Вот пример как это сделано у меня: Код:
procedure TMainForm.dsMoviesDataChange(Sender: TObject; Field: TField); var MovieId : Integer; begin MovieId := qMovies.FieldByName('ID').AsInteger; lbMovieName.Caption := qMovies.FieldByName('MOVIE_TITLE').AsString; lbStudioYear.Caption := Format('%s (%d)',[qMovies.FieldByName('STUDIO_NAME').AsString,qMovies.FieldByName('MOVIE_YEAR').AsInteger]); LoadMovieInfo(MovieId); end; А вот процедурка, которая вызывается из LoadMovieInfoi: Код:
procedure LoadCover(Image : TJpegImage; Field : TBlobField); var Stream : TMemoryStream; begin Stream := TMemoryStream.Create; Try Field.SaveToStream(Stream); Stream.Seek(0,soFromBeginning); Image.LoadFromStream(Stream); Finally Stream.Free; End; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
leon2009 (12.09.2023)
|
#8
|
|||
|
|||
![]() на много проще все
Код:
Image: TImage; Stream: TStream; Memo: TMemo; begin Stream := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('name'), bmRead); try Image1.Picture.Bitmap.LoadFromStream(Stream); //Memo.Lines.LoadFromStream(Stream); finally Stream.Free; end; |
#9
|
|||
|
|||
![]() В смысле? У тебя в блобе может быть картика или ее адрес?
Ну тогда тебе надо менять дизайн БД. Не надо так делать. Заведи отдельные поля для картинки и адреса. Если блоб не пустой, то грузим из блоба, в противном случае проверяем адрес (в другом поле). |
#10
|
|||
|
|||
![]() Была картинка (хост free), пришлось менять на адреса
![]() |