![]() |
TEdit: Hint bei zu großen Einträgen
Hallo,
ich möchte bei einem TEdit einen Hint anzeigen, wenn man mit der Maus drüberfährt und wenn der Eintrag zu lang ist (also länger als das TEdit). Weiss jemand wie man dass am Besten hinbekommt? mfg Helmi |
Re: TEdit: Hint bei zu großen Einträgen
ich würd mir erst mal ne TApplicationEvent kompo aufs formular holen, und dann im OnShowHint ereignis etwas in dieser richtung eintragen:
Delphi-Quellcode:
auch schon getestet, funzt soweit
procedure TFormX.ApplicationEventsShowHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo);
const BS: array[TBorderStyle] of Byte = (0,4);//bei bsSingle ist der Anzeigebereich des Edit 4 Pixel kleiner begin if HintInfo.HintControl is TEdit then begin //nur wenn Sender is TEdit, sonst standartverarbeitung with Application.MainForm.Canvas do begin //mittels Canvas.TextWidth breite des textes rauskriegen Font := TEdit(HintInfo.HintControl).Font;//dafür Font übertragen if TextWidth(TEdit(HintInfo.HintControl).Text) > TEdit(HintInfo.HintControl).Width - BS[TEdit(HintInfo.HintControl).BorderStyle] then //ist Text wirklich länger? HintStr := TEdit(HintInfo.HintControl).Text; //falls ja, den angezeigten Text verändern end; end; end; Edit: natürlich muss dann das ShowHint des Edit auf True stehen |
Re: TEdit: Hint bei zu großen Einträgen
danke
aber wie ruft mann die procedure auf? hab probs mit dem hintinfo |
Re: TEdit: Hint bei zu großen Einträgen
Zitat:
//Edit: okok reinkopieren alleine reicht nicht, du musst den prozedurheader leichtestgehend bearbeiten :mrgreen: |
Re: TEdit: Hint bei zu großen Einträgen
ah - danke Nothine :-)
funktioniert aber vielleicht kannst du mir mal erklären für was mann genau dieses AplicationEvent benötigt? |
Re: TEdit: Hint bei zu großen Einträgen
klar, kein problem.
also folgendes: Du kennst mit Sicherheit die globale Variable Application. Manchmal ruft man zum Beispiel Application.Terminate auf, um das Programm zu beenden. Nun ist es aber, obwohl doch eigentlich so essentiell, nur eine globale Variable, das heißt du hast keinen benutzerfreundlichen Zugriff auf die Eigenschaften und Ereignisse der Komponente. Damit das Zuweisen der Ereignisse an Application vereinfacht wird, hat Borland die Komponente TApplicationEvents geschrieben, durch die du im OI auf die Events (und ein paar Eigenschaften) der Application-Variable zugreifen kannst. Du hättest natürlich auch irgendwo in OnFormCreate schreiben können
Delphi-Quellcode:
aber sonderlich sauber ist das nicht, und eben für solche dinge gibt es die TApplicationEvents komponente.
procedure DeineProzedur(Mit_Den_Entsprechenden_Parametern);
... @Application.OnShowHint := @DeineProzedur; Hoffe hab das ordentlich erklärt :roll: :stupid: |
Re: TEdit: Hint bei zu großen Einträgen
oh ja - danke - jetzt weiss ich warum diese Komponente existiert...
was kann man noch mit dieser kompo machen? - ausser hints umbiegen? :-) |
Re: TEdit: Hint bei zu großen Einträgen
zum beispiel eine anwendung wunderbar verstecken, so wie ich es grad mache, anwendung wird beim start versteckt, mittels eines globalen hotkeys aufgerufen, und im TApplicationEvents OnDeactivate kann man wunderbar einstellen was passiert wenn der benutzer einfach mir nichts dir nichts woanders hinklickt, zum beispiel direkt wieder unsichtbar machen :mrgreen:
oder globale Exception-Behandlung (OnException) :roll: oder anweisungen die immer ausgeführt werden, wenn das Programm rumidlet und nix zu tun hat (OnIdle) :mrgreen: |
Re: TEdit: Hint bei zu großen Einträgen
mmh
ich hab mir mal die Events angeschaut - kann ich auch darauf reagieren wnen die application minimiert wird? (OnMinimize) |
Re: TEdit: Hint bei zu großen Einträgen
das event heißt nicht umsonst so :mrgreen:
bei allen andern sag ich nur Delphi-Hilfe :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz