Hallo Leute,
Ich würde gerne beim MouseOver über die Items einer CheckListBox einen von mir erstellten String über einen Hint ausgeben.
Mein Problem bei folgendem Code ist nun, dass mir der Hint nur angezeigt wird, wenn er dem Inhalt des Items entspricht, ansonsten kommt er gar nicht erst.
.ShowHint der Komponente ist auf True, .Hint ist leer.
Alternativ muss es auch nicht über einen Hint gelöst werden, ich würde nur gerne ein paar weitere Infos zu den Items jeweils anzeigen, aber unabhängig davon würde ich gerne wissen, warum ich keinen Hint bekomme, wenn ich nicht den Iteminhalt anzeigen lasse.
Das false und true schalten von ShowHint hab ich woanders mal gesehen und es zu testzwecken erfolglos mit reingenommen.
Delphi-Quellcode:
procedure TFormZaubervorbereitung.CLBAG0MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
Zauber : WideString;
LB : TCheckListBox;
begin
LB := Sender as TCheckListBox;
LB.ShowHint := False;
if gHintItem <> LB.itemAtpos(Point(x, y), true) then
begin
gHintItem := LB.itemAtpos(Point(x, y), true);
if (gHintItem >= 0) then
begin
////////////////////////////Bearbeitung des Strings///////////
Zauber := Split(LB.Items.Strings[gHintItem],'>')[0];
if pos(']',Zauber) > 0 then
begin
Zauber := split(Zauber,'[')[1];
end;
gHint := SucheKomponenten(Zauber, StrToInt(Copy(TCheckListBox(Sender).Name,6,1)));
//////////////////////////////////////////////////////////////
LB.ShowHint := True;
LB.Hint := gHint;
Application.ActivateHint(Point(X,Y));
end;
end
else
begin
LB.ShowHint := True;
LB.Hint := gHint;
Application.ActivateHint(Point(X,Y));
end;
end;
Lg Cordt