![]() |
Zur Laufzeit erstellte Elemente werden nicht angezeig
Hallo, ich hoffe, dass ich das richtige Unterthema gewählt habe. Folgendes Problem habe ich mit diesem Code:
Delphi-Quellcode:
Wenn ich das Programm ausführe, sehe ich ein leeres Formular. Ich kann also keine Buttons etc. sehen und folglich nichts ausführen. Kennt jemand eine Lösung für das Problem?
unit uMain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, uForm2; type TMain = class(TForm) procedure FormCreate (Sender: TObject); procedure NeuesFenster (Sender: TObject); procedure F2Close (Sender: TObject); procedure MainClose (Sender: TObject); private { Private declarations } bt1: TButton; bt2: TButton; F2: TFormular2; btEnde: TButton; public { Public declarations } end; var Main: TMain; implementation {$R *.dfm} procedure TMain.FormCreate(Sender: TObject); begin bt1:= TButton.Create(Main); bt1.SetBounds(20,20,160,60); bt1.Parent:= Main; bt1.Caption:= 'Neues Fenster'; bt1.OnClick:= NeuesFenster; btEnde:= TButton.Create(Main); btEnde.SetBounds(20,100,160,60); btEnde.Parent:= Main; btEnde.Caption:= 'Schliessen'; btEnde.OnClick:= MainClose; end; procedure TMain.NeuesFenster(Sender:TObject); begin F2:=TFormular2.Create(Main); F2.Show; bt2:= TButton.Create(F2); bt2.SetBounds(20,20,160,100); bt2.Parent:= F2; bt2.Caption:= 'Formular schließen'; bt2.OnClick:= F2Close; bt1.enabled:=false; end; procedure TMain.F2Close(Sender: TObject); begin F2.Close; bt1.enabled:=true; end; procedure TMain.MainClose(Sender: TObject); begin close; end; end. |
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Visible?
gruss |
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Habe ich auch schon probiert, klappt aber leider nicht. Trotzdem danke für die fixe Antwort :)
|
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Zitat:
Delphi-Quellcode:
ohne sie sichtbar zu schalten wirst du auch nichts sehen können.
procedure TMain.NeuesFenster(Sender:TObject);
begin F2:=TFormular2.Create(Main); F2.Show; bt2:= TButton.Create(F2); bt2.SetBounds(20,20,160,100); bt2.Parent:= F2; bt2.Caption:= 'Formular schließen'; bt2.OnClick:= F2Close; bt1.enabled:=false; bt1.Visible := True; //<< warum soll das nicht gehen? bt2.Visible := True; //<< warum soll das nicht gehen? end;
Delphi-Quellcode:
bt2:= TButton.Create(self); //Form1, oder self, oder wie bei dir F2
bt2.SetBounds(20,20,160,100); bt2.Parent:= self; bt2.Caption:= 'Formular schließen'; bt2.Visible := True; //<< warum soll das nicht gehen? Ich sehe einen wunderschönen Button. gruss |
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe das jetzt folgendermaßen angepasst:
Delphi-Quellcode:
Entweder habe ich dich noch nicht richtig verstanden, und diese Möglichkeit besteht durchaus, aber es funktioniert noch nicht.
procedure TMain.FormCreate(Sender: TObject);
begin bt1:= TButton.Create(Main); bt1.SetBounds(20,20,160,60); bt1.Parent:= Main; bt1.Visible:= True; //Das geht nicht bt1.Caption:= 'Neues Fenster'; bt1.OnClick:= NeuesFenster; btEnde:= TButton.Create(Main); btEnde.SetBounds(20,100,160,60); btEnde.Parent:= Main; btEnde.Visible:= True; //Das geht nicht btEnde.Caption:= 'Schliessen'; btEnde.OnClick:= MainClose; end; procedure TMain.NeuesFenster(Sender:TObject); begin F2:=TFormular2.Create(Main); F2.Show; bt2:= TButton.Create(F2); bt2.SetBounds(20,20,160,100); bt2.Parent:= F2; bt2.Caption:= 'Formular schließen'; bt2.OnClick:= F2Close; bt1.enabled:=false; bt2.Visible:=true; //Das geht nicht end; |
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Was soll TFormular2 denn sein?
Delphi-Quellcode:
gruss
F2 : TForm
//............. F2 := TForm.Create(nil); F2.Show; bt2:= TButton.Create(F2); bt2.SetBounds(20,20,160,100); bt2.Parent:= F2; bt2.Caption:= 'Formular schließen'; bt2.Visible := True; //<< warum soll das nicht gehen? |
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Damit du nicht soviel raten must.
Delphi-Quellcode:
Es gibt kein TFormular2...
unit uMain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TMain = class(TForm) procedure FormCreate(Sender: TObject); procedure NeuesFenster (Sender: TObject); procedure F2Close (Sender: TObject); procedure MainClose (Sender: TObject); private { Private-Deklarationen } bt1: TButton; bt2: TButton; F2: TForm; btEnde: TButton; public { Public-Deklarationen } end; var Main: TMain; implementation {$R *.dfm} procedure TMain.F2Close(Sender: TObject); begin F2.Close; bt1.enabled:=true; end; procedure TMain.FormCreate(Sender: TObject); begin bt1:= TButton.Create(self); bt1.SetBounds(20,20,160,60); bt1.Parent:= self; bt1.Caption:= 'Neues Fenster'; bt1.OnClick := NeuesFenster; bt1.Visible := True; btEnde:= TButton.Create(self); btEnde.SetBounds(20,100,160,60); btEnde.Parent:= self; btEnde.Caption:= 'Schliessen'; btEnde.OnClick:= MainClose; btEnde.Visible := true; end; procedure TMain.MainClose(Sender: TObject); begin close; end; procedure TMain.NeuesFenster(Sender: TObject); begin F2 := TForm.Create(self); F2.Show; bt2:= TButton.Create(F2); bt2.SetBounds(20,20,160,100); bt2.Parent:= F2; bt2.Caption:= 'Formular schließen'; bt2.OnClick:= F2Close; bt1.enabled:=false; bt2.Visible := true; end; end. Siehe F2: TForm; EDIT: Du must F2 von TForm ableiten wie schon gesagt TFormular2 gibt es nicht. Es sei denn du hast dafür eine eigene Classe angelegt. bsp.
Delphi-Quellcode:
gruss
TFormular2 = class(TForm)
private { Private-Deklarationen } public { Public-Deklarationen } end; |
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Formular2 ist in einer gesonderten Unit. Das Formular wird eben durch einen Button geöffnet und wieder geschlossen. Hier der Code aus der Unit uForm2
Delphi-Quellcode:
Und egal, wie ich es anstelle, ich sehe einfach keine Buttons. Ich habe auch schon mit der Vorlage meines Informatik-Lehrers verglichen - keine neue Erkenntnis.
unit uForm2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TFormular2 = class(TForm) private { Private declarations } public { Public declarations } end; implementation {$R *.dfm} end. |
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Zitat:
|
AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
Zitat:
Vergleich das mal mit deinem. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 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