Форум: "Основная";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
ВнизActivateHint Найти похожие ветки
← →
dima_crt (2004-02-02 10:26) [0]Нужно показать подсказку в StringGride при наведении на первый столбец. Что неправильно в коде? Application.ActivateHint(Point(X,Y)) выполняется, но хинта нет! ShowHint для грида стоит в TRUE. Если честно, то вообще непонятно как ActivateHint работает. У меня для TreeView написан почти такой же код - всё нормально!
procedure TfrmDistribOnWorkshop.sgResultMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Column, Row: Longint;
begin
sgResult.MouseToCell(X, Y, Column, Row);
if (Column <> 0) or (Row <= 0) or (FHintRow = Row)then
begin
Application.CancelHint;
sgResult.Hint := "";
FHintRow := -1;
exit;
end;
FHintRow := Row;
Application.CancelHint;
sgResult.Hint := "Hint!!!";
Application.ActivateHint(Point(X,Y));
end;
← →
Семен Сорокин (2004-02-02 11:10) [1]ошибка в этой строчке:
Application.ActivateHint(Point(X,Y));
т.к. туда должны передаваться координаты экрана, а передаются координаты ячейки в гриде
для пересчета используй sgResult.ClientOrigin
Application.ActivateHint(Point(sgResult.ClientOrigin.X + X, sgResult.ClientOrigin.Y + Y));
← →
dima74 (2004-02-02 11:51) [2]Не помогает... И так делал
Application.ActivateHint(sgResult.ClientToScreen(Point(X, Y)))
Потом какая разница, ну всплыл бы хинт не на гриде, в где-нибудь в левом верхнем углу...
← →
Семен Сорокин (2004-02-02 12:09) [3]проверь св-во:
Application.ShowHint
← →
dima74 (2004-02-02 12:37) [4]Всё, нашел свою глупость...
if (Column <> 0) or (Row <= 0) {or (FHintRow = Row)} then
begin
Application.CancelHint;
sgResult.Hint := "";
FHintRow := -1;
exit;
end;
if (FHintRow = Row) then exit;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c