Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DBEdit1 Feld zur Laufzeit erzeugen (https://www.delphipraxis.net/23291-dbedit1-feld-zur-laufzeit-erzeugen.html)

Christian18 1. Jun 2004 07:35


DBEdit1 Feld zur Laufzeit erzeugen
 
Hallo,

ich möchte gerne einen Formular Editor schreiben und dazu müße ich ein paar DBEdit Felder zur Laufzeit erzeugen. Wie mache ich das.

Mit freundlichen Grüßen

Christian18

Nicodius 1. Jun 2004 07:44

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
Delphi-Quellcode:
var DEditTEST: TDBEdit ;
begin
DEditTEST:= TDBEdit.Create(self);
// dann alles waste brauchst(captions ect.)
DEditTEST.Parent := Form1(oder wwo dus halt haben willst)
end;


udn das baust du in ne schleife ein

so zb

Delphi-Quellcode:
var DEditTEST: TDBEdit;
    i : Integer;
begin
for i := 1 to 3 do
begin
DEditTEST:= TDBEdit.Create(self);
// dann alles waste brauchst(captions ect.)
DEditTEST.text := 'TEST';
DEditTEST.Parent := Form1;//(oder wwo dus halt haben willst)
end;
end;

Christian18 1. Jun 2004 09:26

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
Hallo,

ich habe das mal versuche, aber bei mir funktioniert es leider nicht. es kommt der Fehler:

[Fehler] Unit1.pas(27): Undefinierter Bezeichner: 'TDBEdit'
[Fehler] Unit1.pas(29): Operator oder Semikolon fehlt
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var test: TDBEdit;
begin
  test:=TDBEdit.Create(self);
end;

Nalincah 1. Jun 2004 09:43

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
Hast du die Unit "DBCtrls" in die uses gepackt?

Nicodius 1. Jun 2004 09:50

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
ganzer text!

(ich hab die komponente nicht die unit woos drinnen isthalt auch rein)



Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
  var test: TDBEdit;
begin
  test:=TDBEdit.Create(self);
end;

end.

Nicodius 1. Jun 2004 09:51

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
was für ein delphi hast du?

shmia 1. Jun 2004 09:53

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
siehe auch Code-Library: datensensitive Controls zur Laufzeit erzeugen

Christian18 1. Jun 2004 10:11

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
und jetzt nocheinmal eine andere frage, das mit der for schleife funktioniert bei mir nicht, er macht immer nur einen button. das programm soll soviele machen wie in mein Edit1 Feld geschrieben steht. hatte auch schon begonnen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var test : TDBEdit;
      i, a   : Integer;
begin
  a:=0;
  for i:=1 to StrToInt(Edit1.Text) do
    begin
      test:=TDBEdit.Create(self);
      test.Top:=a+20;
      test.Parent:=Form1;
    end;
end;

mirage228 1. Jun 2004 10:13

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
Zitat:

Zitat von Christian18
und jetzt nocheinmal eine andere frage, das mit der for schleife funktioniert bei mir nicht, er macht immer nur einen button. das programm soll soviele machen wie in mein Edit1 Feld geschrieben steht. hatte auch schon begonnen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var test : TDBEdit;
      i, a   : Integer;
begin
  a:=0;
  for i:=1 to StrToInt(Edit1.Text) do
    begin
      test:=TDBEdit.Create(self);
      test.Top:=a+20;
      test.Parent:=Form1;
    end;
end;

hi,

schreib noch folgendes dazu:
Delphi-Quellcode:
test.Name: := format('dbedit%d', [i]);
mfG
mirage228

Nicodius 1. Jun 2004 10:18

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
christian

hab ein tut gemacht(gerade eben weil du der dritte ist der so schnell das fragt :D)


--> TUTORIAL


... es befindet sich auf der DP weil ich selebr derweil net auf unsere Seite zugriff habe :lol: :roll:

Nalincah 1. Jun 2004 10:25

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
Zitat:

Zitat von Nicodius
(ich hab die komponente nicht die unit woos drinnen isthalt auch rein)
...

Ich versteh nicht was du uns sagen willst....

Nicodius 1. Jun 2004 10:26

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
.... --> das er die unit von der komponete reingeben soll (zb bei jedi JVComponents) oder wie alt die unit heißt ;)

Nalincah 1. Jun 2004 10:28

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
Achso...Hab irgendwie gedacht das wär von dem, der den Thread eröffnet hat. Egal...

Christian18 1. Jun 2004 10:37

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
ja ok das meinte ich aber nicht!

ich habe ein edit feld und wenn ich da z.b. 3 eingebe, dann soll dort 3 edit felder untereinander erscheinen

Nicodius 1. Jun 2004 11:09

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
ja! dann machs du meinen code in ner schleife von 1 to eingabe ^^

dürfte doch nicht allzuschwer siein das jetzt ohne codeinlage zu machen ^^

Christian18 1. Jun 2004 11:14

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
nein ist es auch nicht, aber bei mir funktionier es leider nicht. hier nochmal mein code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var test : TEdit;
      i, a : Integer;
begin
  a:=0;
  i:=0;
  for i:=1 to StrToInt(Edit1.Text) do
    begin
      test:=TEdit.Create(self);
      test.Top:=a+30;
      test.Parent:=Form1;
    end;
end;
es wird bei mir nur ein edit feld angezeigt. egal wieviel ich in mein edit1 feld rein schreibe

mirage228 1. Jun 2004 11:17

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
Hi,

versuch mal den Parent zu erst zu setzen und danach erst den Top-Wert.

Moment.. du erhöhst a niemals! a bleibt immer 0 + 30 = 30! Du solltest a nach dem Erstellen erhöhen!

mfG
mirage228

Nicodius 1. Jun 2004 11:19

Re: DBEdit1 Feld zur Laufzeit erzeugen
 
weil a nur einmal raufgezählt wir du musst es so machen

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var test : TEdit;
      i, a : Integer;
begin
  a:=0;
  i:=0; // kannste auch weglassen
  for i:=1 to StrToInt(Edit1.Text) do
    begin
      a := a + 30; // oder inc(a,30);
      test:=TEdit.Create(self);
      test.Top:=a; // schlecht ist auch nie die anderen sachen zu vereinbaren aber egal(Height,
                   // Width, left) muss nicht sein
      test.Parent:=Form1;
    end;
end;


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