TEdit ganz anzeigen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
paulderfinne
Beiträge: 65
Registriert: Mi 27. Feb 2013, 18:24
OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
CPU-Target: 32Bit

TEdit ganz anzeigen

Beitrag von paulderfinne »

Hallo liebe Lazarusgemeinde,
mein Problem:

Ich habe ein Tedit mit einer bestimmten Länge. Nun schreibt der User aber einen längeren Text als das Edit lang ist und der Anfangstext verschwindet logischerweise.
Der User möchte aber den ganzen Text sehen, um sich zu vergewissern, dass er richtig geschrieben hat.

Meine Idee war, den ganzen Text als Hint anzuzeigen. Nicht supergut, aber immerhin. Nun krieg ich das nicht hin. Meine Vorgehensweise:

Im Event OnDragOver eine Procedure definiert:

Code: Alles auswählen

 
procedure Tform1.show_hint_nachname(Sender: TObject);
begin
  Form1.nachname.ShowHint:=True;
  Form1.nachname.Hint:=Form1.nachname.Caption;
end;       
 


Aber da tut sich nichts.


EDit: Oder hat jemand eine andere Idee, wie ich den ganzen Text anzeigen kann.
Zuletzt geändert von paulderfinne am Di 28. Jul 2015, 13:31, insgesamt 1-mal geändert.

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: TEdit ganz anzeigen

Beitrag von baumina »

Ich würde ShowHint des Editfeldes im Objektinspektor auf true setzen und dann das Event OnChange des Editfeldes verwenden:

Code: Alles auswählen

procedure TForm1.Edit1Change(Sender: TObject);
begin
  Edit1.Hint := Edit1.Text;
end;
 
.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: TEdit ganz anzeigen

Beitrag von Socke »

paulderfinne hat geschrieben:Im Event OnDragOver eine Procedure definiert:

Code: Alles auswählen

 
procedure Tform1.show_hint_nachname(Sender: TObject);
begin
  Form1.nachname.ShowHint:=True;
  Form1.nachname.Hint:=Form1.nachname.Caption;
end;


Die Eigenschaft ShowHint definiert, ob der Hinweis prinzipiell angezeigt werden soll oder ob er gar nicht angezeigt werden soll. Um den Hinweis zu einem konkreten Zeitpunkt anzuzeigen musst du einen anderen Weg gehen (vielleicht hilft: https://stackoverflow.com/questions/150 ... -on-delphi)

Um den Hinweis zu ändern ist das OnChange-Ereignis der richtigere Weg (wie baumina bereits schrieb).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

paulderfinne
Beiträge: 65
Registriert: Mi 27. Feb 2013, 18:24
OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
CPU-Target: 32Bit

Re: TEdit ganz anzeigen

Beitrag von paulderfinne »

Vielen dank ihr Beiden. Mit OnChange tuts. Hat jemand eine bessere Idee, wie man dem Problem bekommen könnte?

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: TEdit ganz anzeigen

Beitrag von baumina »

Du könntest auch ein Label mit einer kleineren Fontgröße ober oder unterhalb des Edits mit dem Text füllen.

Hier noch ein paar sonstige Hinweise zu deinem oben geposteten Quelltext:

1. Vermeide innerhalb aller Formularproceduren den Variablennamen des Formulars. Statt Form1.Edit1.Text immer nur Edit1.Text verwenden. So machst du dich nicht von der Instanz abhängig.

2. Informiere dich immer über F1, ich mache das trotz jahrzehntelanger Delphiprogrammierung, denn man kann sich nicht alles merken. Dann hättest du herausfinden können wofür OnDragOver eigentlich gedacht ist, wofür Showhint da ist und dass ein Editfeld den Text in .Text und nicht in .Caption stehen hat.
.

MTB1Leo
Beiträge: 32
Registriert: Do 20. Mär 2014, 18:00

Re: TEdit ganz anzeigen

Beitrag von MTB1Leo »

Hallo,

Eine, wie ich finde elegante aber platzfressende Lösung ist es, wenn das Tedit mit dem Text wächst.
Du packst also in den Tedit Change die Aufforderung Tedit.width:=Tedit.width+1; Das Eingabefeld wird also proportional zum Text größer. Du solltest nur die ursprüngliche Weite als Wert definieren, auf den es beim Tedit.exit zurückkehrt.

Aber ich denke die Lösung des Hints ist die einfachste. Jedoch wird der Hint erst angezeigt, wenn man 1-2sec. Mit dem Cursor auf dem Tedit verweilt.

#handy
750GB HDD CPU: i3 boost 3.6Ghz RAM: 12GB GPU: ASUS RADEON R7 270X DC II

Antworten