Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Bei zu langem Text den Inhalt vollständig anzeigen (Hint)


kandesbunzler - Mo 30.04.18 16:33
Titel: Bei zu langem Text den Inhalt vollständig anzeigen (Hint)
Hallo,

ich habe ein Edit-Feld, in welches Text eingegeben werden kann.

Wenn der Text länger als das Edit-Feld ist, möchte ich den vollständigen Text beim Mausover als Hint/Tooltip anzeigen lassen.

Wie kann ich das am besten bewerkstelligen?

Danke und vG!


Symbroson - Mo 30.04.18 17:00

es gibt bei den Controls eine Option Hint, der du jeweils den aktuellen Inhalt zuweisen kannst.
Um den dann anzuzeigen definierst du einfach ein OnMouseMove-Event für dieses Objekt und setzt dort edit1.ShowHint := true;

das war's ;)


jaenicke - Mo 30.04.18 21:06

ShowHint kann man auch gleich im Objektinspektor oder per Quelltext mit dem Hint setzen.

Zur direkten Anzeige des Hints (mit ShowHint auf True und gesetztem Hint), so dass er an der Maus klebt:

Delphi-Quelltext
1:
2:
3:
4:
// im OnMouseMove des Edits:
  Application.ActivateHint(Mouse.CursorPos);
// im OnMouseLeave des Edits:
  Application.HideHint;


kandesbunzler - Di 01.05.18 19:44

Danke für eure Rückmeldungen.

Ich habe im Objektinspektor für Edit1 das ShowHint auf true gestellt. Für TextHint habe ich Edit1.Text zugewiesen.

Wenn ich bei OnMouseMove nun edit1.ShowHint oder edit1.ShowHint := true eintrage, erhalte ich die Fehlermeldung, dass edit1.ShowHint bzw. edit1.ShowHint := true kein gültiger Bezeichner ist.

Irgendwie stehe ich auf dem Schlauch ...


mandras - Di 01.05.18 21:02

Mach einmal einen Doppelklick ins Eingabefeld für OnMouseMove.

Die IDE erstellt dann die erforderl. Prozedurdeklaration für das Form sowie die Prozedur selbst
(bzw. den Prozedurrahmen, mehr ist das ja nicht).

Darin kannst Du dann eigenen Code eingeben.


jaenicke - Mi 02.05.18 08:56

user profile iconkandesbunzler hat folgendes geschrieben Zum zitierten Posting springen:
Für TextHint habe ich Edit1.Text zugewiesen.
TextHint ist etwas anderes, siehe Doku:
http://docwiki.embarcadero.com/Libraries/Tokyo/de/Vcl.StdCtrls.TEdit.TextHint
Was du brauchst ist schlicht die Property Hint.

user profile iconkandesbunzler hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich bei OnMouseMove nun edit1.ShowHint oder edit1.ShowHint := true eintrage, erhalte ich die Fehlermeldung, dass edit1.ShowHint bzw. edit1.ShowHint := true kein gültiger Bezeichner ist.
Das bringt dort ohnehin nichts, da du es bereits im Objektinspektor gesetzt hast. Du musst dort schon die Anzeige des Hints direkt aktivieren wie ich es geschrieben habe oder die Maus nicht bewegen und auf den Hint warten.