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 Laufzeit: erstellte Editfelder ansprechen (https://www.delphipraxis.net/9861-laufzeit-erstellte-editfelder-ansprechen.html)

Piro 6. Okt 2003 15:42


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:
     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;
Hofentlich kann mir einer helfen.

Matze 6. Okt 2003 15:52

Re: Laufzeit: erstellte Editfelder ansprechen
 
Delphi-Quellcode:
var s: string;

s:=field.Text;
oder vielleicht auch nicht. :mrgreen:

Chewie 6. Okt 2003 16:23

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:
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;
Jetzt kannst du z.B. via Feld[3] auf das 4. erzeugte Feld zugreifen.

Piro 7. Okt 2003 09:25

Re: Laufzeit: erstellte Editfelder ansprechen
 
danke leute für eure schnelle Hilfe.

Piro 7. Okt 2003 09:44

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?

Nalincah 7. Okt 2003 09:47

Re: Laufzeit: erstellte Editfelder ansprechen
 
Mit SetLength bestimmt du die Größe des Arrays. In deinem Fall:

Delphi-Quellcode:
Setlength(Feld, ssgspielergebnisse.RowCount - 1);
Feld=Name des Arrays und dann die Anzahl der Ergebnisse ist die Größe (Anzahl der Speicherplätze für Werte)

Piro 7. Okt 2003 10:00

Re: Laufzeit: erstellte Editfelder ansprechen
 
habe ich schon alleine gelöst.

war ein syntaxfehler meinerseits

Nalincah 8. Okt 2003 08:35

Re: Laufzeit: erstellte Editfelder ansprechen
 
Delphi-Quellcode:
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;
Das kompiliert der auch aber zur Laufzeit im Einzelschritt krieg ich bei dieser Zeile

Delphi-Quellcode:
DBCon[anzahlTabs] := TADOConnection.Create(nil);
folgenden Fehler:

Zugriffsverletzung bei Adresse 004B44D9 in Modul 'DBUtilities.exe'. Schreiben von Adresse 00000000

Sharky 8. Okt 2003 09:03

Re: Laufzeit: erstellte Editfelder ansprechen
 
Zitat:

Zitat von General2003
Delphi-Quellcode:
DBCon[anzahlTabs] := TADOConnection.Create(nil);

Müsste es nicht [anzahlTabs-1] heissen? Ich meinte das SetLength das Array bei 0 beginnt.
Oder?

Nalincah 8. Okt 2003 09:56

Re: Laufzeit: erstellte Editfelder ansprechen
 
anzahltabs ist ja zu diesem moment noch 0


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