Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   ListBox: Hint = Item @ Mouse (https://www.delphipraxis.net/157975-listbox-hint-%3D-item-%40-mouse.html)

SvenLittkowski 1. Feb 2011 07:41

ListBox: Hint = Item @ Mouse
 
Hi,

ich hatte dieses Problem schon in einem anderen Thread angesprochen: ich will dafür sorgen, daß meine ListBox als Hint immer den Inhalt des Items anzeigt, über welchem die Mouse sich gerade befindet. Der Grund ist, daß einige dieser Items die Breite der ListBox überschreiten. Die Hints sind also quasi eien "Pflicht", um meinem Benutzern zu helfen.

Klar hatte ich auch schon hier im Forum etwas recherchiert mittels der Suchfunktion. Ich bin dabei auf einen Code gestoßen, der vielversprechend war. Den habe icgh eingebaut, und tatsächlich, mein Programm wird kompiliert, und läuft sogar! Und weder mein Schreibtisch fängt Feuer, noch vergeht dise Seite der Erde in einem atomaren Feuerball! Aber leider passiert auch nichts von dem, was eigentlich passieren soltle: kein Hint erscheint bei MouseOver über jedem Item, kein Item-Inhalt im Hint. Nur der ganz normale Standard-Hint, den ich für diese Listbox bereits definiert hatte.

Nachstehend der Code. Was mache ich falsch?
Und hier der Ursprung des Codes: http://www.delphipraxis.net/15882-on...box-items.html
Die dortigen Korrekturen kann ich mangels Erfahrung leider nicht umsetzen.

Code:
procedure TAlpha.ListBoxFromMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
 ID:          Integer;
 OriginalHint: string;
begin
 with ListBoxFrom do
 begin
  OriginalHint:=Hint;
  ID:=ItemAtPos(Point(x,y),False);
  if (ID<=Items.Count-1) then Hint:=Items.Strings[ID]
  else Hint:='';
  if Hint<>OriginalHint then Application.CancelHint;
 end;
end;
KORREKTUR: Es funktioniert. Nur Itemstrings mit Sonderzeichen funktionieren nicht (Hint wird nicht angezeigt).

Deep-Sea 1. Feb 2011 08:03

AW: ListBox: Hint = Item @ Mouse
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ungefähr so?
Anhang 33209
Wenn ja: Das ist eine ganz normale ListView (ViewStyle := vsList, ShowHint := True).
Code musst du dafür keinen schreiben :-D

SvenLittkowski 1. Feb 2011 08:32

AW: ListBox: Hint = Item @ Mouse
 
Hi. DeepSea, danke für Deine Antwort.

Ich hatte etwas falsch gemacht aber inzwischen korrigiert. Bei MouseOver werden nun die ItemStrings als Hint angezeigt. .. :-)

Nur - enthält ein ItemString Sonderzeichen, wird KEIN Hint angezeigt. Wer kann helfen? Ich benutze Unicode: griechischer Zeichensatz. Die ListBoxen sind TTntListBox-Objekte, die mit Unicode funktionieren.

SvenLittkowski 2. Feb 2011 04:03

AW: ListBox: Hint = Item @ Mouse
 
Es klappt soweit, daß Hints mit dem jeweiligen Item angezeigt werden. Nur - enthält so ein ItemString Sonderzeichen, wird KEIN Hint angezeigt. Wer kann helfen? Ich benutze Unicode: griechischer Zeichensatz. Die ListBoxen sind TTntListBox-Objekte, die mit Unicode funktionieren.

Code:
procedure TAlpha.ListBoxFromMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
 ID:         Integer;
 OriginalHint: string;
begin
 with ListBoxFrom do
 begin
  OriginalHint:=Hint;
  ID:=ItemAtPos(Point(x,y),False);
  if (ID<=Items.Count-1) then Hint:=Items.Strings[ID]
  else Hint:='';
  if Hint<>OriginalHint then Application.CancelHint;
 end;
end;
Meine ListBox ist vom Typ TTntListBox. Deren Komponenten arbeiten mit Unicode.

Wie muß dieser Code geändert werden, damit der Hint auch dann erscheint (und mit dem ItemString), wenn jener ItemString in Unicode gehalten ist und Sonderzeichen aufweist?

SvenLittkowski 2. Feb 2011 17:30

AW: ListBox: Hint = Item @ Mouse
 
Das Problem ist gelöst. Ich habe in diesen Funktionen den String als WideString redefiniert, nun klappt's! :-)

Dieser Thread kann nun als "gelöst" markiert werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz