Как отображать и редактировать гиперссылки в DBGrid в Delphi 7?

Я использую DBGrid для отображения поля типа гиперссылки из базы данных Microsoft Access (MDB). Обычно dbgrid отображает значения гиперссылок, такие как "(MEMO)", без возможности редактирования. Есть ли способ решить эту проблему?


person Tofig Hasanov    schedule 22.03.2010    source источник
comment
проверьте эту статью: http://delphi.about.com/library/weekly/aa030105a.htm Надеюсь, это поможет вам   -  person Issam Ali    schedule 22.03.2010
comment
Используя это, я могу отображать содержимое поля, но оно не ведет себя как гиперссылка и отображается как простой текст. Есть ли способ это исправить?   -  person Tofig Hasanov    schedule 22.03.2010
comment
вы можете использовать событие cellclick и вызвать функцию ShellExcecute: ShellExecute(0, 'open', pchar([fieldname].AsString), nil,nil, SW_Normal);   -  person Issam Ali    schedule 22.03.2010
comment
В Access поле гиперссылки представляет собой памятное поле с каким-то специальным атрибутом, который сообщает Access, что обращаться с ним иначе, чем с обычными полями. Я не верю, что есть отдельное поле гиперссылки Jet/ACE. В общем, я бы рекомендовал вообще не использовать поля гиперссылок, так как они создают больше проблем, чем решают. Если у вас есть контроль над схемой, определите, нужно ли вам хранить URL-адреса длиннее 255, и если да, сделайте это простой заметкой, а если нет, текстом 255. Затем вы обрабатываете его выполнение в коде в пользовательском интерфейсе вашего приложения.   -  person David-W-Fenton    schedule 22.03.2010
comment
Использовал это, и это сработало, хотя мне пришлось отформатировать содержимое ячейки. По какой-то причине гиперссылка была сохранена не как обычный текст, а как www.google.com #www.google.com#. До сих пор работает, спасибо   -  person Tofig Hasanov    schedule 22.03.2010
comment
www.google.com #www.google.com# - это то, как гиперссылки хранятся в поле гиперссылки Access, которое представляет собой просто поле для заметок с флагом где-то, который указывает Access отображать его как гиперссылку. Большинство известных мне разработчиков Access избегают их использования. Если вы можете изменить базу данных Jet, я бы порекомендовал сбросить поле гиперссылки в пользу поля Text 255 или обычного поля memo.   -  person David-W-Fenton    schedule 24.03.2010


Ответы (1)


DBGrid отображает значения в зависимости от типа поля. Если он показывает (MEMO), то вы, вероятно, объявили свое поле в своей базе данных как TEXT или что-то подобное. Не помню Access, но в MS-SQL Server вы можете изменить тип поля на varchar, и DBGrid будет отображать значения в виде редактируемого текста.

person Linas    schedule 22.03.2010