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 3 Edits, 3 Labels und 3 Listboxen (https://www.delphipraxis.net/32735-3-edits-3-labels-und-3-listboxen.html)

Hansa 27. Okt 2004 20:12


3 Edits, 3 Labels und 3 Listboxen
 
Hi,

es ist zwar einfach, aber nicht so zu erklären. 8) Man stelle sich eine Form vor, die folgendes beinhaltet : 3 Editfelder für Zahlen, jeweils rechts daneben ein Label zur Anzeige. Im Onexit der Edits soll das Label jeweils an die Eingabe angepaßt werden. Die Herkunft der angezeigten Label-Werte kommt aus ein und derselben Quelle. Es ist eine verkettete Liste, aber das ist wohl egal. Im Prinzip unterscheiden sie sich nur außer der Bildschirmposition durch das OnExit.

Ich bräuchte also nur ein OnExit für die 3 Edits, welches aber wissen muß, welches Feld gerade verlassen wurde, um eben die Anzeige zu aktualisieren.

Das nächste ist eine Listbox, die ich wieder bei den 3 Edits optional einblende. Dort soll man dann auch aus der Box mit der Maus die gewünschten Werte auswählen können. Auch der aus der ListBox zu übernehmende Wert muß dann dem richtigen Edit/Label zugeordnet werden.

Klar könnte man das leicht mit 3 Edits/Labbels/Listboxen machen. Aber geht so was auch anders ? Der Source ist nämlich wirklich bis auf ein Wort im OnExit der Edits und im OnClick der Lsitboxen identisch. Also auf deutsch : unnötige Redundanzen. :mrgreen:

Dax 27. Okt 2004 20:24

Re: 3 Edits, 3 Labels und 3 Listboxen
 
Wenn du für alle Edits nur eine OnExit schreiben willst (so hab' ich's verstanden), die dann erkennt, welches Edit das war, dann setzte doch für jedes Feld den Tag auf einen Anderen Wert und überprüfe mit (Sender as TCoontrol).Tag, welches Feld das es war..

MisterNiceGuy 27. Okt 2004 20:29

Re: 3 Edits, 3 Labels und 3 Listboxen
 
So Hansa, hab jetzt den Text 2x gelesen und (hoffentlich) auch verstanden was du meinst :lol: Nur frage ich mich, ob du die Lösung schon hast oder ob du sie herausbekommen möchstest!

Also ich hab keinen Plan ehrlich gesagt :cry:

Matze 27. Okt 2004 20:42

Re: 3 Edits, 3 Labels und 3 Listboxen
 
DU kannst den edits ja auch einfach ein OnExit zuweisen:

Delphi-Quellcode:
    procedure EditExit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.EditExit(Sender: TObject);
begin
  with Sender as TEdit do
    Label1.Caption := Text;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //auch im OI einstellbar
  //Bei 3 Edits ist das kein problem, ansonsten nimm "FindComponent"
  Edit1.OnExit := EditExit;
  Edit2.OnExit := EditExit;
  Edit3.OnExit := EditExit;
end;

Hansa 27. Okt 2004 22:31

Re: 3 Edits, 3 Labels und 3 Listboxen
 
Das war der Text vor 1 St. DP nicht erreichbar:

Zitat:

Zitat von MisterNiceGuy
Also ich hab keinen Plan ehrlich gesagt :cry:

Schlaumeier ! Ich frage hier doch nicht, wenn ich wüßte wie das am besten geht. :shock: Das mit dem As und Is hört sich nach was an, aber mit dem Kram komme ich immer durcheinander.

Ich weiß wie es geht : siehe Titel. So geht das. Aber wenn ich auch nicht mit Bytes so knauserig bin wie die mit nonVCL. Dann bin ich es aber eher mit Sourcezeilen. Unnötig viele gehen zu Lasten der Übersichtlichkeit und führen zu Tippfehlern. Und das muß nicht sein ! Fast identischen Code mehrfach zu schreiben ist nicht so mein Ding.

Da Matze jetzt noch dazwischengefunkt hat :

Delphi-Quellcode:
procedure TForm1.EditExit(Sender: TObject);
begin
  with Sender as TEdit do
    Label1.Caption := Text;
end;
Hierbei wird das Label1 geändert, aber nur Labe11 und das ist der Punkt, wo ich nicht recht weiterkomme.

Dax 27. Okt 2004 22:35

Re: 3 Edits, 3 Labels und 3 Listboxen
 
Ich gehe mal davon aus, dass Edit1.Tag 1 ist, Edit2.Tag ist 2 usw.
Delphi-Quellcode:
procedure TForm1.EditExit(Sender: TObject);
begin
  with Sender as TEdit do
    TLabel(FindComponent('Label' + IntToStr(Tag))).Caption := Text;
end;

Hansa 28. Okt 2004 01:26

Re: 3 Edits, 3 Labels und 3 Listboxen
 
Die linke Seite müßte so gehen, aber rechts steht nut
Delphi-Quellcode:
:= Text;
und da kommt es drauf an, wo ich gerade bin.

Nothine 28. Okt 2004 04:24

Re: 3 Edits, 3 Labels und 3 Listboxen
 
deswegen hat dax ja auch
Delphi-Quellcode:
with Sender as TEdit do
geschrieben, weil das eben bestimmt wo du grad bist :roll:

obwohl ich dazu bemerken muss das bei mir merkwürdigerweise jegliche varianten von with-anweisungen nicht funktionieren, nur die komplett ausgeschriebene anweisung
Delphi-Quellcode:
  TLabel(FindComponent('Label'+IntToStr(TEdit(Sender).Tag))).Caption := TEdit(Sender).Text;
funktioniert bei mir, weiß der geier warum :pale:

[edit]ich bin der einfachheit halber auch davon ausgegangen das Edit1.Tag = 1, Edit2.Tag = 2 usw.[/edit]

Nicodius 28. Okt 2004 05:33

Re: 3 Edits, 3 Labels und 3 Listboxen
 
oder

Delphi-Quellcode:
if TEdit(sender) <> nil
then
  Label1.caption := TEdit(Sender).Text;

fkerber 28. Okt 2004 06:25

Re: 3 Edits, 3 Labels und 3 Listboxen
 
Hi!

Zitat:

Zitat von Nicodius
oder

Delphi-Quellcode:
if TEdit(sender) <> nil
then
  Label1.caption := TEdit(Sender).Text;

Eben das geht ja nicht, weil dann nur Label1 immer geändert würde, aber eine entsprechende Lösung steht ja schon da.


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 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