![]() |
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: |
Re: TEdit: Hint bei zu großen Einträgen
krasse Kompo :-)
hab grad rausgefunden dass ich folgenden Code:
Code:
Durch ApplicationEvents.OnMinimize ersetzen kann...
procedure TForm1.WMSysCommand(Var Message: TWMSysCommand);
begin If Message.CmdType and $FFF0 = SC_Minimize then //Mach was ....... else Inherited; end; Danke Gott für diese Erfindung :angel: :zwinker: |
Re: TEdit: Hint bei zu großen Einträgen
siehstu, wieder was gelernt, dafür sind wir hier in der DP ja da :mrgreen:
|
Re: TEdit: Hint bei zu großen Einträgen
:spin: ja - mann lernt nie aus (frau nebenbei auch ned)...
:-) echt krass - ich bin grad total happy (bis zum nächsten niederschlag) :-D :thumb: :hello: :dancer: :dancer2: :witch: :party: :balloon: |
Re: TEdit: Hint bei zu großen Einträgen
:mrgreen: freut mich das ich dir helfen und was neues zeigen konnte :mrgreen:
aber jetz sollte hier besser schluss sein, sonst sagen die bösen mods noch was :roll: :mrgreen: |
Re: TEdit: Hint bei zu großen Einträgen
okili dokili :-)
trotzdem vielen herzlichen Dank :-) *bussi aufs Bauchi* :cat: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 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