AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Zur Laufzeit erstellte Elemente werden nicht angezeig

Zur Laufzeit erstellte Elemente werden nicht angezeig

Offene Frage von "justin.kuhn"
Ein Thema von justin.kuhn · begonnen am 13. Apr 2017 · letzter Beitrag vom 16. Apr 2017
Antwort Antwort
Seite 1 von 5  1 23     Letzte » 
justin.kuhn

Registriert seit: 13. Apr 2017
13 Beiträge
 
#1

Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 21:27
Hallo, ich hoffe, dass ich das richtige Unterthema gewählt habe. Folgendes Problem habe ich mit diesem Code:
Delphi-Quellcode:
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.
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?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 21:42
Visible?

gruss
  Mit Zitat antworten Zitat
justin.kuhn

Registriert seit: 13. Apr 2017
13 Beiträge
 
#3

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 21:49
Habe ich auch schon probiert, klappt aber leider nicht. Trotzdem danke für die fixe Antwort
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 21:51
Habe ich auch schon probiert, klappt aber leider nicht. Trotzdem danke für die fixe Antwort
Delphi-Quellcode:
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;
ohne sie sichtbar zu schalten wirst du auch nichts sehen können.

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

Geändert von EWeiss (11. Jul 2019 um 16:47 Uhr)
  Mit Zitat antworten Zitat
justin.kuhn

Registriert seit: 13. Apr 2017
13 Beiträge
 
#5

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 22:10
Ich habe das jetzt folgendermaßen angepasst:
Delphi-Quellcode:
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;
Entweder habe ich dich noch nicht richtig verstanden, und diese Möglichkeit besteht durchaus, aber es funktioniert noch nicht.
Miniaturansicht angehängter Grafiken
unbenannt.jpg  
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 22:15
Was soll TFormular2 denn sein?

Delphi-Quellcode:
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?
gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 22:30
Damit du nicht soviel raten must.
Delphi-Quellcode:
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.
Es gibt kein TFormular2...
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:
  TFormular2 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
gruss

Geändert von EWeiss (13. Apr 2017 um 23:31 Uhr)
  Mit Zitat antworten Zitat
justin.kuhn

Registriert seit: 13. Apr 2017
13 Beiträge
 
#8

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 22:42
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:
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.
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.
  Mit Zitat antworten Zitat
justin.kuhn

Registriert seit: 13. Apr 2017
13 Beiträge
 
#9

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 22:45
Und egal, wie ich es anstelle, ich sehe einfach keine Buttons.
Und auch bei einem weniger komplexen Programm tauchen keine Buttons etc. auf, die zur Laufzeit erstellt wurden.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 13. Apr 2017, 23:16
Und egal, wie ich es anstelle, ich sehe einfach keine Buttons.
Und auch bei einem weniger komplexen Programm tauchen keine Buttons etc. auf, die zur Laufzeit erstellt wurden.
Ok hier..

Vergleich das mal mit deinem.

gruss

Geändert von EWeiss (11. Jul 2019 um 17:02 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:12 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