![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
MistMan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.4.2004 Репутация: нет Всего: нет |
Есть БД Paradox с картинками в BLOB'ах, я хочу чтоб они отображались в DBGrid'е, а то в ячейках пишется Graphiks.
|
|||
|
||||
Maverick |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Предлагаю использовать сторонний компонент dxDBGrid, обычный таких вещей не позволяет.... Поищи по форуму, где скачать - ссылки есть....
Если не хочешь сторонних, то, по-моему, единственный вариант - расположить рядом с DBGrid компонент DBImage, в котором отображать эти самые картинки.... |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
ну, не совсем. можно перехватывать OnDrawCell. конечно, рисовать в ячейке в 17 пикселов высотой никому не интересно, но это тоже решается через взлом класса:
type TFake = class (TCustomGrid); ... TFake (DbGrid1).DefaultRowHeight := 64; типа того. короче, можно. если протрезвею к вечеру, то скину код ![]() -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
MistMan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.4.2004 Репутация: нет Всего: нет |
Maverick
А где его можно скачать, подскажи пожалуйста |
|||
|
||||
MistMan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.4.2004 Репутация: нет Всего: нет |
x77
скинь плизз, очень нужно, если не затруднит с пояснениями, т.к. я не являюсь монстром программирования. а мне еще придется защищать работу Это сообщение отредактировал(а) MistMan - 11.4.2004, 11:48 |
|||
|
||||
Unregistered |
|
|||
Unregistered |
Да все рисуется в обычном дбгриде. Обрабатывай OnDrawCell. Blob-ы содержат обычные бмп-шки (хотя может и что угодно
![]() |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
MistMan, сорри за задержку, работа.
я тебе полный текст модуля приведу:
обработчиков всего два, комментарии, я думаю, излишни ![]() Добавлено @ 14:57 пояснять, наверное, стоит только момент с TFake = class (TCustomGrid). детальное описание сего действа можно найти у Марко Кэнту, по-моему, в Delphi Developer's Handbook. смысл в том, что в DbGrid'е, например, скрыты поля типа DefaultColWidth, DefaultRowHeight и пр., объявленные в TCustomGrid. но концепция ООП не позволяет понизить видимость поля в наследниках. для этого их объявляют в protected - разделе. в наследниках те, которые должны быть видимы, переобъявляются в public или в published, а все остальные оказываются как бы скрытыми. но на самом деле они по прежнему видны, и до них можно добраться вышеприведённым способом. с лёгкой руки Марко Кэнту этот способ называется "взломом класса", и суть его в том, что он позволяет в компонентах-наследниках добраться до свойств, которые в их предках были объявлены, как protected. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
Maverick |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Ссылки на форуме действительно не работают.... У меня есть версия - 9 мегабайт занимает.... Как перекинуть? на мыло? Он все это делает сам - и высоту, и картинку....
Тож извини за тормоза - после правильного замечания x77 немного потерял интерес к топику.... |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
ещё, наверное, немного странно выглядит bmp.Assign (Table1.FieldByName ('...')); в форумах обычно приводятся многоэтажные примеры с чтением в потоки, хорошо ещё, если без создания оных. здесь дело в том, что для каждого поля его значение возвращается по умолчанию. т.е. объявление Table1.FieldByName ('asd').Value, в общем-то, эквивалентно Table1 ['asd']. на практике это использовать не рекомендуется, т.к. никто не гарантирует, что вариант будет правильно преобразован. поле, содержащее графику, при инициализации получает DataType = ftGraphic. Соответственно, при вызове Assign (а реально - TPersistent.Assign) будет осуществляться копирование в зависимости от типа данных. а эти данные у нас равны Table1.FieldByName ('Graphic').Value, т.е., битмапу. решительно не знаю, что ещё тут можно пояснять ![]() -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
Unregistered |
|
|||
Unregistered |
Порылся у себы в исходниках и хочу немного добавить. Следующий код:
НЕ РАБОТАЕТ: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var bmp:TBitmap; str:Tstream; begin if Column.Index=7 then begin With TDBGrid(Sender) do begin bmp:=Tbitmap.Create; str:=DataSource.DataSet.CreateBlobStream(Column.Field,bmRead); bmp.LoadFromStream(str) ; Canvas.StretchDraw(Rect,bmp); bmp.Free; str.Free; end; end; end; получаю "BitMap image is not valid" таблица animals из DBDEMOS Через Assign - вопросов нет. (кстати, у меня код тоже взят у Марко Кэнту "Дельфи 4 для профессионалов") Ну а через TStream? Что не так? Преобразование? У меня есть парадокс-база в которой картинки храняться в формате JPG и там этот код работает, если, конечно, вместо TBitMap указать TJpegImage Поясните |
|||
|
||||
MistMan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.4.2004 Репутация: нет Всего: нет |
Спасибо x77 , в принципе все понятно.
Maverick мое мыло [email protected] пришли пожалуйста. Если будете в Майкопе заходите в гост, в долгу не останусь ![]() |
|||
|
||||
x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
MistMan, ух ты, я 10 лет в Армавире жил, там до сих пор родители и дочка. где-то через полгода поеду в ваши края.
сбрось координаты на мыло, [email protected], чем чёрт не шутит ![]() -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
MistMan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.4.2004 Репутация: нет Всего: нет |
x77
Какого фига появляется ошибка: Incopatibles types 'TDrawGridState' and 'Enumeration' (типа того) можт я чего не то делаю? |
|||
|
||||
Maverick |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
MistMan
Я вчера полдня пытался закачать это дело хоть куда-нибудь в нете.... Не получилось... Компонент называется DevExpress Quantum Grid, Производитель - Developer Express Inc.... Кто-нибудь подскажет как передать zip-файл в 8 мб на форум? |
|||
|
||||
MistMan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.4.2004 Репутация: нет Всего: нет |
Кто-нибудь может подсказать где даунлоад на этой странице
http://www.delphixjs.com/Soft_Show.asp?SoftID=518 ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |