Как добавить столбец гиперссылки в TcxGrid (экспресс-сетка разработчика)
Привет В Delphi мне удалось (!) Добавить столбец в табличное представление TcxGrid, которое отображается в виде гиперссылки (вместо простой строки). Для этого вы просто редактируете "свойства" столбца и выбираете "гиперссылку". Теперь в ячейке отображается стиль гиперссылки (подчеркнут), но я не могу на всю жизнь понять, как:
- Получить курсор, чтобы перейти на "руку", когда над ссылкой.
- Добавьте событие, которое запускается, когда я нажимаю на ссылку.
Кто-нибудь может помочь? Благодарю.
2 ответа
Нажмите на заголовок столбца, столбец выбран.
Перейти к "События"
Свойства - OnStartClick
-> это событие вызывается при нажатии на ссылку
В моей системе Delphi 7 с установленным последним dev.express курсор изменяется на руку при наличии URL-адреса.
Я заархивировал образец программы и исполняемый файл Dephi 7, чтобы вы сами увидели полный проект (загрузка с моего собственного сайта www.edelcom.com)
- запустить exec
- нажмите кнопку вставки внизу
- введите URL: www.google.com
- нажмите Ввод
- переместить по ссылке - появляется стрелка, и, щелкая по ссылке, отображается сообщение "нажал", если у вас нет события щелчка, запускается URL-адрес, по которому щелкнули (возможно, он тоже может это сделать, но я не пробовал этот)
После того, как вы установите свойства для гиперссылки, вы можете расширить свойства. Установите для свойства SiongleClick значение True для активации одним щелчком мыши.
Поменять курсор сложнее. Вам нужно будет отреагировать на событие перемещения мыши и определить, находится ли мышь над столбцом гиперссылки. С сайта DevExpress:
procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Ht: TcxCustomGridHitTest;
begin
Ht := TcxGridSite(Sender).GridView.Viewinfo.GetHitTest(X,Y);
If (Ht is TcxGridRecordCellHitTest) and
(TcxGridRecordCellHitTest(Ht).Item.Properties is TcxHyperLinkEditProperties) then
Screen.Cursor := crHandPoint
else
Screen.Cursor := crDefault;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Screen.Cursor <> crDefault then
Screen.Cursor := crDefault;
end;