![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Доброго времени суток! Вопрос такой, и мучает очень!(
В БД есть таблица, содержащая индексы и изображения (объект OLE). Необходимо отображать все изображения на форме. И кликая, допустим, на одно из них оно копируется в таблицу с изображениями. Примерно как мы выбираем из изобилия смайлов нужный нам, и он отображается в нашем поле для текста сообщения. И еще эти выбранные изображения должны сохраняться в БД как последовательность, т.е. в одном поле последовательность индексов на изображения. Подкиньте идеек как это сделать, свежим взглядом, так сказать, посмотрите, пожалуйста. P.S. была идея изображения поместить в DrawGrid, т.к. изображений немало упорядочить немного и еще в DBCtrlGrid была идея поместить, но не увенчалось успехом, может что не правильно делала...( ![]() ![]() |
#2
|
|||
|
|||
![]() Если это что-то типа смайлов, то там сделано немного по другому. На самом деле там передается некоторая комбинация символов, которую уже клиент разпознаёт и вместо этих символов выводит изображение из своего списка. А уж как ты этот список будешь хранить - дело десятое.
|
#3
|
||||
|
||||
![]() Как сохранять
Код:
uses Jpeg; procedure PictureToGraphicField(D: TDataSet; F: TField); var FileName: TFileName; Bmp: TBitmap; jpg: TJPEGImage; begin D:= F.DataSet; // множество данных, которое содержит поле F if D.Active then // если таблица открыта, то if D.RecordCount > 0 then // если в таблице есть записи, то if OpenPictureDialog1.Execute then // если файл картинки выбран, то begin if not (D.State in [dsEdit]) then D.Edit; // перевод таблицы в режим редактирования FileName:= OpenPictureDialog1.FileName; // имя файла с картинкой try Bmp:= TBitmap.Create; // создаем Bitmap в памяти jpg:= TJPEGImage.Create; // создаем JPEG jpg.CompressionQuality:= 100; // качество сжатия изображения jpg.Compress; // сжатие jpg.LoadFromFile(FileName); // загрузка bmp.Assign(jpg); // передача из JPEG в BMP F.Assign(bmp); // передача картинки из Bitmap в поле "Каринка" D.Post; // сохранение записи except // в случае исключительной ситуции делать: ShowMessage('Не удалось загрузить картинку.'); // сообщение об ошибке FreeAndNil(jpg); // освобождение памяти, занятой JPEG FreeAndNil(bmp); // освобождение памяти, занятой Bitmap end; end; end; Код:
PictureToGraphicField(DataSource.DataSet,DataSource.DataSet.FieldByName('Картинка')); Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
|||
|
|||
![]() Спасибо, очень полезная вещь, она мне пригодится
![]() Но все же основная проблема не решена ![]() У меня в БД есть таблица (Element), где хранятся изображения. Мне нужно "вытащить эти изображения" (все) на форму. Пусть коряво, но у меня получилось пока только так: Код:
procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Im1: TBitmap; begin Im1:=TBitmap.Create; if (Column.FieldName='Symbol' ) then begin with DBGrid2.Canvas do begin Brush.Color:=clWhite; FillRect(Rect); if (data.DataForm.Element.FieldByName('Ind').Value=1) then begin ImageList1.GetBitmap(0,Im1); end else begin ImageList1.GetBitmap(1,Im1); end; Draw(round((Rect.Left+Rect.Right-Im1.Width)/2),Rect.Top,Im1); end; end; end; как то так ![]() прошу Вас о помощи, и буду рада даже малейшей ![]() |
#5
|
||||
|
||||
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
AlSh17 (30.11.2015)
|
#6
|
|||
|
|||
![]() Ваши наброски работают, спасибо!)
Но только я вставляю в свой код пишет такую ошибку: Project raised exception class EAccessViolation with message 'Access Violation at address 0052bafa in module Project1.exe. Read of address 000002f4' Я и Ваш полностью модуль добавляла в проект и копировала, не помогло. Изменяла - аналогичный результат( И еще, этот вопрос покажется глупым, но у Вас БД изображения хранятся как двоичные данные, как Вы это сделали? У меня тот же тип данных, но хранится как "Пакет" |
#7
|
||||
|
||||
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
AlSh17 (02.12.2015)
|