Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Вниз

Курсор на в области StringGrid   Найти похожие ветки 

 
kyn66   (2007-12-11 14:29) [0]

На форме кроме остальных контролов есть StringGrid. Хочу для ячеек сделать свой хинт. Каким образом отлавливать в событии MouseMove появление курсора в регионе StringGrid и при покидании его, т.е. чтобы хинт окно прятать?


 
Palladin ©   (2007-12-11 14:38) [1]

ну очевидно, что на OnMouseMove
или тебе такая мысль в голову не приходила?


 
{RASkov} ©   (2007-12-11 14:38) [2]

> [0] kyn66   (11.12.07 14:29)
> Каким образом отлавливать в событии MouseMove

Чье событие-то?

> [0] kyn66   (11.12.07 14:29)

Что-то не понятно задан вопрос (
Но может вот это
StringGrid.MouseToCell()
нужно?


 
kyn66   (2007-12-11 14:49) [3]

Смысл такой, когда курсор над SG - показываем хинт.... как тока курсор уходит из области SG - хинт прячем.

procedure TMainFrm.StringGrid1MouseMove(Sender: TObject;
 Shift: TShiftState; X, Y: Integer);
Var
 Column, Row : Integer;
 T : TRect;
 P : TPoint;
 s : String;
begin
 StringGrid1.MouseToCell(x, y, Column, Row);
 GetCursorPos(P);
  s := "Строка хинта";
  T := HWin.CalcHintRect(Screen.Width, s, nil); // внешняя ф-я вывода хинта
  T.Left   := P.X;
  T.Top    := P.Y + 21;
  T.Right  := T.Left + T.Right;
  T.Bottom := T.Top + T.Bottom;
   HWin.ActivateHint(T, S);
end;


HWin.ReleaseHandle; нужно вставить куда-то при потере фокуса SG


 
{RASkov} ©   (2007-12-11 15:26) [4]

> [3] kyn66   (11.12.07 14:49)
>  T.Bottom := T.Top + T.Bottom;
>   HWin.ActivateHint(T, S);
> end;

А что там(ActivateHint) происходит? иначе как-то подозрительно выглядит....
можно, как вариант, посоветовать ловить "глючное" сообщение CM_MOUSELEAVE, посылаемое гриду, при покидании его мышой....
(Почему глючное, а потому, что не всегда срабатывает:()
Можно таймером проверять положение курсора...


 
kyn66   (2007-12-11 15:40) [5]

В свое время я так делал для ноды TreeView

procedure TImpDataFrm.TreeView1MouseMove(Sender: TObject;
                                        Shift: TShiftState; X, Y: Integer);
var
 trvNode: TTreeNode;
 s : String;
 T : TRect;
 P : TPoint;
 k : Integer;
begin
 if VhodAdmin then
  begin
    GetCursorPos(P);
    if htOnItem in TreeView1.GetHitTestInfoAt(X, Y) then
     begin
       trvNode := TreeView1.GetNodeAt(X, Y);
       if Assigned(trvNode) and (trvNode.Data <> nil) and (trvNode.Parent = nil) then
        begin
          T := trvNode.DisplayRect(True);
          k := Integer(trvNode.Data);
          if RepListTbl.Locate("RepKod", k, []) then
           s := "&#206;&#242;&#247;&#229;&#242;.&#185; - " + IntToStr(k) + #10#13 +
                 RepListTblNameUser.Value;
          T := HWin.CalcHintRect(Screen.Width, s, nil);
          T.Left   := P.X;
          T.Top    := P.Y + 21;
          T.Right  := T.Left + T.Right;
          T.Bottom := T.Top + T.Bottom;
          HWin.ActivateHint(T, S);
        end
       else
        HWin.ReleaseHandle;
     end
    else
     HWin.ReleaseHandle;
  end;
end;


Но у него был свой хитрый метод GetHitTestInfoAt(X, Y) как сдесь сделать похожее нечто? 8-(

ActivateHint- да ничего особенного , хинт собственного изготовления да и все



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
15-1196969820
Бедняжка
2007-12-06 22:37
2008.01.13
Друзья нужна помощь


15-1196879629
@!!ex
2007-12-05 21:33
2008.01.13
Темы для XP


2-1197394841
Виталий
2007-12-11 20:40
2008.01.13
Работа с Ole


8-1171869199
_iceman_
2007-02-19 10:13
2008.01.13
GDI &amp; Antializing


15-1197027915
oldman
2007-12-07 14:45
2008.01.13
Минимальный размер IP-пакета...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский