Hallo,
ich habe folgendes Problem. In einem Programm versuche ich einen Hint für die Buttons eines HeaderControls zu relisieren.
Die versuche scheiterten, da ich nicht den Index auslesen kann, über dem sich der Mauszeiger befindet.
hier ein wenig Code:
<pre>
//Anfang
procedure TForm1.HeaderControl_NavigationMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Maus_Pos : TPoint ;
Han : THandle ;
begin
//Hint bestimmen
{1.Möglichkeit}
if THeaderControl(THeaderSection(Sender)).Sections.It ems[0].Index = 0 then
THeaderControl(Sender).Hint := 'Ersten Eintrag anzeigen' ;
if THeaderControl(THeaderSection(Sender)).Sections.It ems[1].Index = 1 then
THeaderControl(Sender).Hint := 'Einen Eintrag zurück' ;
//[..]
GetCursorPos (Maus_Pos) ;
{2.Möglichkeit :}
Han := WindowFromPoint (Maus_Pos) ;
Caption := IntToStr(han) ;
//für mich
Han := FindWindowEx(THeaderControl(Sender).Handle, 0, 'TCollection', nil);
Caption := Caption + '.' + IntToStr(han) ;
//wieder für mich
Application.ActivateHint(Maus_Pos);
end;
//Ende
</pre>
Bei der ersten Möglichkeit versuchte ich über den Index an den Button zu kommen.
Bei der 2. Möglichkeit über das Handle des Buttons.
Da es aber Panels sind, diese aber nicht als Klasse (TPanel) auftauchen, bekomme ich kein Handle zurück.
Hat jemand vielleicht eine Lösung, ich möchte nicht auf eine Fremdkomponente zurückgreifen, da dies bei Codeweitergabe immer nachteilig ist.
Mit frdl. Grüßen
Mathias
ich habe folgendes Problem. In einem Programm versuche ich einen Hint für die Buttons eines HeaderControls zu relisieren.
Die versuche scheiterten, da ich nicht den Index auslesen kann, über dem sich der Mauszeiger befindet.
hier ein wenig Code:
<pre>
//Anfang
procedure TForm1.HeaderControl_NavigationMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Maus_Pos : TPoint ;
Han : THandle ;
begin
//Hint bestimmen
{1.Möglichkeit}
if THeaderControl(THeaderSection(Sender)).Sections.It ems[0].Index = 0 then
THeaderControl(Sender).Hint := 'Ersten Eintrag anzeigen' ;
if THeaderControl(THeaderSection(Sender)).Sections.It ems[1].Index = 1 then
THeaderControl(Sender).Hint := 'Einen Eintrag zurück' ;
//[..]
GetCursorPos (Maus_Pos) ;
{2.Möglichkeit :}
Han := WindowFromPoint (Maus_Pos) ;
Caption := IntToStr(han) ;
//für mich
Han := FindWindowEx(THeaderControl(Sender).Handle, 0, 'TCollection', nil);
Caption := Caption + '.' + IntToStr(han) ;
//wieder für mich
Application.ActivateHint(Maus_Pos);
end;
//Ende
</pre>
Bei der ersten Möglichkeit versuchte ich über den Index an den Button zu kommen.
Bei der 2. Möglichkeit über das Handle des Buttons.
Da es aber Panels sind, diese aber nicht als Klasse (TPanel) auftauchen, bekomme ich kein Handle zurück.
Hat jemand vielleicht eine Lösung, ich möchte nicht auf eine Fremdkomponente zurückgreifen, da dies bei Codeweitergabe immer nachteilig ist.
Mit frdl. Grüßen
Mathias
Comment