![]() |
Laufzeit: erstellte Editfelder ansprechen
Hallo Leute ich brauche mal eure Hilfe. Wie ihr unten seht, erstelle ich mir edtfelder zur Laufzeit.
Mein Frage ist wie die einzelnen Felder ansprechen soll um deren Inhalt auszulesen?
Delphi-Quellcode:
Hofentlich kann mir einer helfen.
x := 70;
for i := 0 to (sgspielergebnisse.RowCount - 1) do begin feld := TEdit.Create(PageControl1.Pages[4]); point := TLabel.Create(PageControl1.Pages[4]); feld1 := TEdit.Create(PageControl1.Pages[4]); with feld do begin Parent := PageControl1.Pages[4]; Height := 22; Width := 30; Left := 390; Top := x; end; with point do begin Parent := PageControl1.Pages[4]; caption := ':'; Height := 22; Width := 5; Left := 430; Top := x; end; with feld1 do begin Parent := PageControl1.Pages[4]; Height := 22; Width := 30; Left := 450; Top := x; end; x := x + 28; end; |
Re: Laufzeit: erstellte Editfelder ansprechen
Delphi-Quellcode:
oder vielleicht auch nicht. :mrgreen:
var s: string;
s:=field.Text; |
Re: Laufzeit: erstellte Editfelder ansprechen
Das Problem ist, dass die Edit-Klassen erzeugt werden, aber die Klassenvariable nicht gespeichert wird.
Besser wäre es, die Edit-Felder in Arrays zu verwalten. So kannst du ohne Probleme dein Edit-feld anhand des Indexes ansprechen. So sieht das dann etwa aus:
Delphi-Quellcode:
Jetzt kannst du z.B. via Feld[3] auf das 4. erzeugte Feld zugreifen.
var
Feld, Feld1: Array of TEdit; Point: Array of TLabel; Setlength(Feld, ssgspielergebnisse.RowCount - 1); Setlength(Point, ssgspielergebnisse.RowCount - 1); Setlength(Feld1, ssgspielergebnisse.RowCount - 1); x := 70; for i := 0 to (sgspielergebnisse.RowCount - 1) do begin feld[i] := TEdit.Create(PageControl1.Pages[4]); point[i] := TLabel.Create(PageControl1.Pages[4]); feld1[i] := TEdit.Create(PageControl1.Pages[4]); with feld[i] do begin Parent := PageControl1.Pages[4]; Height := 22; Width := 30; Left := 390; Top := x; end; with point[i] do begin Parent := PageControl1.Pages[4]; caption := ':'; Height := 22; Width := 5; Left := 430; Top := x; end; with feld1[i] do begin Parent := PageControl1.Pages[4]; Height := 22; Width := 30; Left := 450; Top := x; end; x := x + 28; end; |
Re: Laufzeit: erstellte Editfelder ansprechen
danke leute für eure schnelle Hilfe.
|
Re: Laufzeit: erstellte Editfelder ansprechen
habe es jetzt mal ausprobiert. Und es funktioniert nur halb.
Er erzeugt die Felder. Zum Schluß bekommen ich eine Meldung: "Invalide Pointer Operation" warum muss man eigentlich vorher setleng definieren? |
Re: Laufzeit: erstellte Editfelder ansprechen
Mit SetLength bestimmt du die Größe des Arrays. In deinem Fall:
Delphi-Quellcode:
Feld=Name des Arrays und dann die Anzahl der Ergebnisse ist die Größe (Anzahl der Speicherplätze für Werte)
Setlength(Feld, ssgspielergebnisse.RowCount - 1);
|
Re: Laufzeit: erstellte Editfelder ansprechen
habe ich schon alleine gelöst.
war ein syntaxfehler meinerseits |
Re: Laufzeit: erstellte Editfelder ansprechen
Delphi-Quellcode:
Das kompiliert der auch aber zur Laufzeit im Einzelschritt krieg ich bei dieser Zeile
var
// VARIABLENDEKLARATION ZUM ERSTELLEN DER KOMPONENTEN // DBCon erstellen DBCon: array of TADOConnection; procedure DBOpen(DataBase:String; TabCaption:String); begin // DBCon erstellen setlength(DBCon, anzahltabs); DBCon[anzahlTabs] := TADOConnection.Create(nil); .... end;
Delphi-Quellcode:
folgenden Fehler:
DBCon[anzahlTabs] := TADOConnection.Create(nil);
Zugriffsverletzung bei Adresse 004B44D9 in Modul 'DBUtilities.exe'. Schreiben von Adresse 00000000 |
Re: Laufzeit: erstellte Editfelder ansprechen
Zitat:
Oder? |
Re: Laufzeit: erstellte Editfelder ansprechen
anzahltabs ist ja zu diesem moment noch 0
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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