DBgrid - открытие почтовой программы

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Scuer
новенький
Сообщения: 12
Зарегистрирован: 01.09.2016 14:07:09

DBgrid - открытие почтовой программы

Сообщение Scuer »

Обыскал весь инет для решения задачи и пусто (( А вопрос таков
Имеем стандартный грид, в нём записи полученные из БД( поля типа имя, фамилия, номер телефона и т.д.).
Задача, есть поле email (в ктором содержится записи электронной почты).
Надо чтоб эти записи были как активная ссылка при нажатии на которую открывалась почтовая программа. Сам вызов mailto прост, реализовать можно через SellExecute

Код: Выделить всё

shellexecute(Application.Mainform.handle, 'open',PChar('mailto:' + 'почта' ),nil, nil, sw_normal);


А вот как это дело привинтить к самуму dbgrid?
Аватара пользователя
vada
энтузиаст
Сообщения: 691
Зарегистрирован: 14.02.2006 12:43:17

Сообщение vada »

Событие Click на гриде обработать никак?
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 565
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Обработать событие onCellClick

Код: Выделить всё

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  if Column.FieldName = 'EMAIL' then shellexecute(Application.Mainform.handle, 'open',PChar('mailto:' + Column.Field.AsString\0 ),nil, nil, sw_normal);
end;
 
Scuer
новенький
Сообщения: 12
Зарегистрирован: 01.09.2016 14:07:09

Сообщение Scuer »

Огромное спасибо

Код: Выделить всё

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  if Column.FieldName = 'EMAIL' then shellexecute(Application.Mainform.handle, 'open',PChar('mailto:' + Column.Field.AsString\0 ),nil, nil, sw_normal);
end;


Всё как надо супер)) Обработку если поле пустое то не надо ничего и никого посылать я уже сам допишу )))

3 строчки и пол дня думать как это обработать, а ответ простой.
Всем, ешё раз спасибою

Добавлено спустя 7 минут 8 секунд:

Код: Выделить всё

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
   if Column.FieldName = EMAIL' then
begin
  if Column.Field.AsString ='' then
     exit
else
    shellexecute(Application.Mainform.handle, 'open',PChar('mailto:' + Column.Field.AsString),nil, nil, sw_normal);
end;
end;


Вот так всё просто и всё работает.
Тему можно считать закрытой.
Всем спасибо.
Ответить