Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.11.2011, 19:20
Evita Evita вне форума
Прохожий
 
Регистрация: 05.11.2011
Сообщения: 8
Репутация: 10
По умолчанию Как отобразить URL-ссылку из поля БД в DBLabel

У меня в аксесс-БД есть поле с ссылками на сайты, и e-mail (тип поля: гиперссылка). Для отображения этой информации в делфи, использовала DBLabel. Но он отобразил данные так: (MEMO). Подскажите пожалуйста, как отобразить ссылки нормально в лейблах, с дальнейшим кликаньем на них и переходом по ссылке на нужный сайт (и с открытием MS Outlook для e-mail)? Заранее большое при большое спасибо!!!
Ответить с цитированием
  #2  
Старый 11.11.2011, 11:01
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от Evita
У меня в аксесс-БД есть поле с ссылками на сайты, и e-mail (тип поля: гиперссылка). Для отображения этой информации в делфи, использовала DBLabel. Но он отобразил данные так: (MEMO). Подскажите пожалуйста, как отобразить ссылки нормально в лейблах, с дальнейшим кликаньем на них и переходом по ссылке на нужный сайт (и с открытием MS Outlook для e-mail)? Заранее большое при большое спасибо!!!

Вот у меня сразу вопрос возникает, Вы пытаетесь что-нибудь сделать самостоятельно, или сразу на форум бежите?

По порядку:
1. Вместо DBText кидаем на форму стандартный Label. Сразу же идем в font, ставим подчеркивание и выбираем синий цвет. Также желательно выбрать cursor в виде руки с вытянутым указательным пальцем (crHandPoint).

2. Помещаем на форму еще один кверик с запросом вида:
Код:
select ssilka from table where id = :id
Вместо id должно быть Ваше уникальное поле.

3. У грида на событие OnCellClick прописываем следующее:
Код:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var s: string;
begin
  ADOQuery2.Close;
  ADOQuery2.Parameters.ParamByName('id').DataType:= ftInteger;
  ADOQuery2.Parameters.ParamByName('id').Value:= ADOQuery1.fieldByName('id').AsString;
  ADOQuery2.Open;
  s:= ADOQuery1.FieldByName('Ssilka').AsString;
  if pos('@', s) = 0 then//ссылка на страницу
    Label1.Caption:= StringReplace(s,'#','',[rfReplaceAll])
  else //e-mail
    Label1.Caption:= copy(s, 1, pos('#', s)-1);
, где ADOQuery1 - кверик привязанный к гриду, ADOQuery2 - наш новый кверик. StringReplace убирает знаки # которые будут отображаться в label, т.к. тип поля у нас гиперссылка.

4. В uses добавляем модуль ShellApi.

5. Обработка клика на label:
Код:
procedure TForm1.Label1Click(Sender: TObject);
begin
  if pos('@', Label1.Caption) = 0 then //ссылка на страницу
    ShellExecute(Application.Handle, PChar('open'), pChar(Label1.Caption), nil, nil, SW_NORMAL)
  else //e-mail
    ShellExecute(Application.Handle, PChar('open'), PChar('mailto:'+Label1.Caption),nil,nil,1);
end;

P.S. Не сразу заметил, что еще и outlook открывать.
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 11.11.2011 в 11:31.
Ответить с цитированием
  #3  
Старый 11.11.2011, 14:38
Evita Evita вне форума
Прохожий
 
Регистрация: 05.11.2011
Сообщения: 8
Репутация: 10
По умолчанию

Большое спасибо.
На форум бегу потому что мне конкретные примеры нужны и нет времени читать кучу непонятной литературы. Да и исходника даже похожего не нахожу, чтобы просто посмотреть как подобные вещи реализуются и возможно ли это вообще
Ответить с цитированием
  #4  
Старый 11.11.2011, 14:42
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от Evita
Большое спасибо.
На форум бегу потому что мне конкретные примеры нужны и нет времени читать кучу непонятной литературы. Да и исходника даже похожего не нахожу, чтобы просто посмотреть как подобные вещи реализуются и возможно ли это вообще

Я первый раз столкнулся с гиперссылками в делфи. Первый раз. И на весь сбор инфы и ее обработку ушло не больше получаса. Это учитывая, что мне это не нужно было, а если бы по работе требовалось, потратил бы еще меньше времени.
__________________
Google в помощь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter