Главная страница
    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.006 c
2-1197643683
Sallity
2007-12-14 17:48
2008.01.13
Задача про машини


2-1197411565
Koss
2007-12-12 01:19
2008.01.13
ServerSocket for LAzarus


2-1197566659
Свой
2007-12-13 20:24
2008.01.13
Добавить символы(строку) в строку


15-1197004170
Slider007
2007-12-07 08:09
2008.01.13
С днем рождения ! 7 декабря 2007 пятница


15-1197276822
ArtemESC
2007-12-10 11:53
2008.01.13
А вы ели когда-нибудь насекомых?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский