Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Label soll immer die höhe eines EditFeldes anzeigen (https://www.delphipraxis.net/96510-label-soll-immer-die-hoehe-eines-editfeldes-anzeigen.html)

Darksniper 25. Jul 2007 21:37


Label soll immer die höhe eines EditFeldes anzeigen
 
wie der Titel schon sagt will ich ein Label das immer die höhe eines EditFeldes anzeigt.

Wie geht das?

scrat1979 25. Jul 2007 21:43

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Zitat:

Zitat von Darksniper
wie der Titel schon sagt will ich ein Label das immer die höhe eines EditFeldes anzeigt.

Wie geht das?

Änders Du im Quellcode die Höhe des Edit-Feldes? Dann füge darunter einfach folgendes hinzu:

Delphi-Quellcode:
Label1.Caption := IntToStr(Edit1.Height);
Sonst würde mir nur noch die Möglichkeit über ein Timer mit o.g. Befehl im OnTimer-Event einfallen...

SCRaT

Darksniper 25. Jul 2007 21:46

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
also das Label soll sich immer wider akualisieren

dajuhsa 25. Jul 2007 21:54

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
alle 10 sekunden? dann nimm nen timer mit interval 10000 und schreib obigen code rein

scrat1979 25. Jul 2007 21:54

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Zitat:

Zitat von Darksniper
also das Label soll sich immer wider akualisieren

Was genau hast Du denn vor? Wie gesagt, irgendwo musst Du ja die Höhe des Edit-Feldes verändern, sonst macht es ja keine Sinn. Da kannst Du dann auch wie oben geschrieben das Label aktualisieren.

Wenn Du das Label z.B. alle 5 Sekunden aktualisieren möchtest, dann füge Deiner Form ein Timer hinzu und benutze obigen Code, um das Label zu aktualisieren. Den Timer setzt Du auf 5000 (5*1000msec) und startest ihn (enabled := true).

Das müsste Dich doch zur Lösung bringen, oder?

mkinzler 25. Jul 2007 21:55

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Ich würde einfach bei Änderung der Größe des Edits die Beschriftung ändern.

dajuhsa 25. Jul 2007 21:59

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
also du hast irgendwo sowas

Delphi-Quellcode:
Edit1.Height := 45;
dann ersetz es durch

Delphi-Quellcode:
Edit1.Height := 45;
Label1.Caption := IntToStr(Edit1.Height)
:stupid:

scrat1979 25. Jul 2007 22:03

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Das sag ich doch schon die ganze Zeit :gruebel:

Darksniper 25. Jul 2007 22:36

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
und wie stellt man den timer ein sodass er immer wieder abläuft

mkinzler 25. Jul 2007 22:40

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Du hast immer noch nicht kapiert, was man dir sagen will: Kein Timer sondern direkt bei der Änderung der Größe des Edits.

scrat1979 25. Jul 2007 22:40

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Zitat:

Zitat von Darksniper
und wie stellt man den timer ein sodass er immer wieder abläuft

1. Intervall setzen in msek (z.B. 3500 = 3.5 Sekunden)
2. Enabled := True setzen

--> OnTimer-Event wird alle 3.5 Sekunden aufgerufen, bis Enabled := False gesetzt wird.

SCRaT

scrat1979 25. Jul 2007 22:41

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Zitat:

Zitat von mkinzler
Du hast immer noch nicht kapiert, was man dir sagen will: Kein Timer sondern direkt bei der Änderung der Größe des Edits.

Das Gefühl habe ich auch. Ein Timer halte ich auch für überflüssig. :cheers:

Darksniper 25. Jul 2007 22:49

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Zitat:

Zitat von scrat1979
Zitat:

Zitat von mkinzler
Du hast immer noch nicht kapiert, was man dir sagen will: Kein Timer sondern direkt bei der Änderung der Größe des Edits.

Das Gefühl habe ich auch. Ein Timer halte ich auch für überflüssig. :cheers:

Damit spart man sich ne meng zeilen

scrat1979 25. Jul 2007 23:05

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Zitat:

Zitat von Darksniper
Damit spart man sich ne meng zeilen

Mag schon sein. Aber man sagt, der Timer sei verhältnismäßig resourcenlastig wenn ich mich richtig erinnere. Da müsste man schon abwägen und überlegen, nicht doch vllt lieber z.B. 20 Zeilen mehr Quelltext zu schreiben.

SCRaT

mkinzler 25. Jul 2007 23:09

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Du hast doch bestimmt ne Klingel an deiner Haustür, an der dann Gäste klingeln. Oder hast du einen Angestellten (Thread) der regelmässig vor die Tür geht um zu sehen, ob einer davorsteht?

dajuhsa 26. Jul 2007 00:00

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
^^

Hawkeye219 26. Jul 2007 09:01

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
Hallo,

ich hätte da noch eine Lösung ohne Timer:

Delphi-Quellcode:
type
  TEdit = class (StdCtrls.TEdit)
  private
    FOnSizeChange : TNotifyEvent;
  public
    procedure SetBounds (ALeft, ATop, AWidth, AHeight: Integer); override;
    property OnSizeChange: TNotifyEvent
      read FOnSizeChange write FOnSizeChange;
  end;

  TForm1 = class (TForm)
    {...}
    Button1 : TButton;
    Edit1 : TEdit;
    Label1 : TLabel;
    procedure Button1Click (Sender: TObject);
    procedure FormCreate (Sender: TObject);
  private
    procedure SizeChanged (Sender: TObject);
  end;

procedure TEdit.SetBounds (ALeft, ATop, AWidth, AHeight: Integer);
begin
  inherited;
  if Assigned(FOnSizeChange) then
    FOnSizeChange (Self);
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
  with Edit1.Font do
    Size := Size + 1;
end;

procedure TForm1.FormCreate (Sender: TObject);
begin
  Edit1.OnSizeChange := SizeChanged;
end;

procedure TForm1.SizeChanged (Sender: TObject);
begin
  with (Sender as TEdit) do
    Label1.Caption := Format('Height: %d', [Height]);
end;
Der Vorteil dieser Lösung besteht darin, daß sie auch auf (versteckte) Änderungen des Fonts im Edit reagiert. Ein manuelles Nachführen des Labels ist in solchen Fällen oft schwierig.

Gruß Hawkeye

dajuhsa 26. Jul 2007 14:04

Re: Label soll immer die höhe eines EditFeldes anzeigen
 
das hatten wir grade erst^^
http://www.delphipraxis.net/internal...918&highlight=


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz