Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi TEdit: Hint bei zu großen Einträgen (https://www.delphipraxis.net/29468-tedit-hint-bei-zu-grossen-eintraegen.html)

Helmi 9. Sep 2004 13:38


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

Nothine 9. Sep 2004 13:54

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:
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;
auch schon getestet, funzt soweit

Edit: natürlich muss dann das ShowHint des Edit auf True stehen

Helmi 9. Sep 2004 14:10

Re: TEdit: Hint bei zu großen Einträgen
 
danke

aber wie ruft mann die procedure auf?

hab probs mit dem hintinfo

Nothine 9. Sep 2004 14:19

Re: TEdit: Hint bei zu großen Einträgen
 
Zitat:

Zitat von Nothine
ich würd mir erst mal ne TApplicationEvent kompo aufs formular holen, und dann im OnShowHint ereignis etwas in dieser richtung eintragen:
...

du holst dir aus der registerkarte Zusätzlich eine komponente mit namen TApplicationEvent. Diese Komponente ermöglicht dir den Zugriff auf (für uns wichtig) die Events der Application. Das von mir gebastelte musst du gar nicht selber aufrufen, aber du musst in dieser TApplicationEvent komponente einen doppelklick auf OnShowHint (ereignis) machen, meinen quelltext dareinkopieren, F9 drücken und spaß haben :mrgreen:

//Edit: okok reinkopieren alleine reicht nicht, du musst den prozedurheader leichtestgehend bearbeiten :mrgreen:

Helmi 9. Sep 2004 14:29

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?

Nothine 9. Sep 2004 14:36

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:
  procedure DeineProzedur(Mit_Den_Entsprechenden_Parametern);

  ...

  @Application.OnShowHint := @DeineProzedur;
aber sonderlich sauber ist das nicht, und eben für solche dinge gibt es die TApplicationEvents komponente.

Hoffe hab das ordentlich erklärt :roll: :stupid:

Helmi 9. Sep 2004 14:39

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? :-)

Nothine 9. Sep 2004 14:42

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:

Helmi 9. Sep 2004 14:47

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)

Nothine 9. Sep 2004 14:50

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 10:43 Uhr.
Seite 1 von 2  1 2      

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