Delphi-PRAXiS

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 Mehrere Edit Felder dynmaisch erstellen, mit Prozedur (https://www.delphipraxis.net/57090-mehrere-edit-felder-dynmaisch-erstellen-mit-prozedur.html)

holle 15. Nov 2005 17:31


Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
ich möchte beim programmstart 26 editfelder erstellen und ihnen verschiedene eigenschaften zuordnen. soweit funktioniert das auch ganz gut. jetzt möchte ich aber zusätzlich noch das beim onexit ereignis die prozedur check aufgerufen wird, bei jedem edit feld. wie kann ich das realisieren???

hier mein quelltext:
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
  var edit: TLabeledEdit;
      i: integer;
begin
  //label erstellen
  for i:= 0 to 25 do begin
    edit:=TLabeledEdit.Create(self);
    edit.EditLabel.Caption:=chr(65+i);
    edit.Name:=chr(65+i);
    edit.Text:='';
    edit.Width:=20;
    edit.Height:=20;
    edit.Left:=21*i+16;
    edit.Top:=128;
    edit.OnChange:=check; //und hier soll die prozedur check; aufgerufen werden
    edit.Parent:=frmMain;
  end;
end;
thanx holle

faux 15. Nov 2005 17:34

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
Hallo!

Meinst du OnExit oder OnChange? Im Text schreibst du OnExit und im Code OnChange, aber das ist ja egal, in diesem Fall. ;)
Mache einfach eine Prozedur, check in der TfrmMain - Klasse mit den Argumenten Sender: TObject. ;)

Grüße
Faux

holle 15. Nov 2005 18:12

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
mit klassen hab ich leider noch nicht gearbeitet, aber hab mir schon gedacht, dass das in die richtung geht. kannst du das mal näher umschreiben?

thanx holle.

Helmi 15. Nov 2005 18:53

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
Hallo,

hier mal dein Code mit Erweiterung um "check":

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    procedure check(Sender: TObject);

{ ... }

procedure TfrmMain.check(Sender: TObject);
begin
  Showmessage('es wurde eine Änderung im Edit: ' +
              (Sender as TLabeledEdit).Name + ' durchgeführt!');
end;

procedure TfrmMain.FormCreate(Sender: TObject);
  var edit: TLabeledEdit;
      i: integer;
begin
  //label erstellen
  for i:= 0 to 25 do begin
    edit:=TLabeledEdit.Create(self);
    edit.EditLabel.Caption:=chr(65+i);
    edit.Name:=chr(65+i);
    edit.Text:='';
    edit.Width:=20;
    edit.Height:=20;
    edit.Left:=21*i+16;
    edit.Top:=128;
    edit.OnChange:=check; //und hier soll die prozedur check; aufgerufen werden
    edit.Parent:=frmMain;
  end;
end;

holle 15. Nov 2005 19:38

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
danke :) soweit erstmal verständlich. und wie rufe ich jetzt die prozedur check auf wenn ich ein edit feld änder?

mfg holle

Helmi 15. Nov 2005 19:42

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
das Event "OnChange" wird ausgelöst, wenn sich die Eingabe im Edit verändert.

Bei der Zeile:
Delphi-Quellcode:
edit.OnChange:= check;
gibst du an, dass bei einer Veränderung die Procedure "check" durchlaufen werden soll.

Wenn du meine Erweiterung getestet hättest, hättest du gemerkt, das beim Ändern der Eingabe eines Edits, die ShowMessage gekommen wäre.

holle 15. Nov 2005 19:48

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
ok tschuldigung :oops:
ich hab nur gedacht das die zeile falsch ist, da ich sie rein intuitiv geschrieben hab :) funktioniert super :) ganz groß danke...

mfg holle

holle 15. Nov 2005 19:58

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
hab jetzt noch ein problem: wie kann ich die edit felder in einer group box erstellen? wenn ich sie so einfach erstelle, befinden sie sich direkt auf dem formular, also hinter der groupbox.

thanx holle

Nightshade 15. Nov 2005 20:04

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
einfach ein
Delphi-Quellcode:
    edit.Parent:=Groupbox1;

Helmi 15. Nov 2005 20:06

Re: Mehrere Edit Felder dynmaisch erstellen, mit Prozedur
 
einfach folgendes ändern:

Delphi-Quellcode:
edit:=TLabeledEdit.Create(GroupBox);
edit.parent := GroupBox;


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