AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListBox: Hint = Item @ Mouse

Ein Thema von SvenLittkowski · begonnen am 1. Feb 2011 · letzter Beitrag vom 2. Feb 2011
Antwort Antwort
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#1

ListBox: Hint = Item @ Mouse

  Alt 1. Feb 2011, 08:41
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).

Geändert von SvenLittkowski ( 1. Feb 2011 um 09:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

AW: ListBox: Hint = Item @ Mouse

  Alt 1. Feb 2011, 09:03
Ungefähr so?
hint.png
Wenn ja: Das ist eine ganz normale ListView (ViewStyle := vsList, ShowHint := True).
Code musst du dafür keinen schreiben
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#3

AW: ListBox: Hint = Item @ Mouse

  Alt 1. Feb 2011, 09:32
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.

Geändert von SvenLittkowski ( 2. Feb 2011 um 05:01 Uhr)
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#4

AW: ListBox: Hint = Item @ Mouse

  Alt 2. Feb 2011, 05:03
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?
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#5

AW: ListBox: Hint = Item @ Mouse

  Alt 2. Feb 2011, 18:30
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 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