Einzelnen Beitrag anzeigen

Cordt

Registriert seit: 10. Jan 2013
32 Beiträge
 
#1

Individueller Hint in einer CheckListBox für Items

  Alt 13. Jan 2014, 12:43
Delphi-Version: 2009
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
  Mit Zitat antworten Zitat