AGB  ·  Datenschutz  ·  Impressum  







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

TEdit: Hint bei zu großen Einträgen

Ein Thema von Helmi · begonnen am 9. Sep 2004 · letzter Beitrag vom 9. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

TEdit: Hint bei zu großen Einträgen

  Alt 9. Sep 2004, 13:38
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
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#2

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

  Alt 9. Sep 2004, 13:54
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
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

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

  Alt 9. Sep 2004, 14:10
danke

aber wie ruft mann die procedure auf?

hab probs mit dem hintinfo
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#4

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

  Alt 9. Sep 2004, 14:19
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

//Edit: okok reinkopieren alleine reicht nicht, du musst den prozedurheader leichtestgehend bearbeiten
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

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

  Alt 9. Sep 2004, 14:29
ah - danke Nothine

funktioniert

aber vielleicht kannst du mir mal erklären für was mann genau dieses AplicationEvent benötigt?
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#6

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

  Alt 9. Sep 2004, 14:36
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
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

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

  Alt 9. Sep 2004, 14:39
oh ja - danke - jetzt weiss ich warum diese Komponente existiert...

was kann man noch mit dieser kompo machen? - ausser hints umbiegen?
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#8

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

  Alt 9. Sep 2004, 14:42
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

oder globale Exception-Behandlung (OnException)
oder anweisungen die immer ausgeführt werden, wenn das Programm rumidlet und nix zu tun hat (OnIdle)
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#9

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

  Alt 9. Sep 2004, 14:47
mmh

ich hab mir mal die Events angeschaut - kann ich auch darauf reagieren wnen die application minimiert wird?
(OnMinimize)
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#10

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

  Alt 9. Sep 2004, 14:50
das event heißt nicht umsonst so

bei allen andern sag ich nur Delphi-Hilfe
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:20 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