Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Zur Laufzeit erstellte Elemente werden nicht angezeig (https://www.delphipraxis.net/192384-zur-laufzeit-erstellte-elemente-werden-nicht-angezeig.html)

justin.kuhn 13. Apr 2017 21:27

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:
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?

EWeiss 13. Apr 2017 21:42

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Visible?

gruss

justin.kuhn 13. Apr 2017 21:49

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Habe ich auch schon probiert, klappt aber leider nicht. Trotzdem danke für die fixe Antwort :)

EWeiss 13. Apr 2017 21:51

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von justin.kuhn (Beitrag 1367564)
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

justin.kuhn 13. Apr 2017 22:10

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

EWeiss 13. Apr 2017 22:15

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
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

EWeiss 13. Apr 2017 22:30

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
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

justin.kuhn 13. Apr 2017 22:42

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:
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.

justin.kuhn 13. Apr 2017 22:45

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von justin.kuhn (Beitrag 1367569)
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.

EWeiss 13. Apr 2017 23:16

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von justin.kuhn (Beitrag 1367571)
Zitat:

Zitat von justin.kuhn (Beitrag 1367569)
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

a.def 13. Apr 2017 23:20

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Habs gerade auch mal getestet und einfach deinen Code Copy-Pasted.. ich sehe 2 Buttons oben links...

EWeiss 13. Apr 2017 23:21

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von a.def (Beitrag 1367575)
Habs gerade auch mal getestet und einfach deinen Code Copy-Pasted.. ich sehe 2 Buttons oben links...

Er meint in der 2 Form.. ;)
Er soll mal meinen Code Testen und vergleichen.

Das muss gehen wenn der Button Visible geschaltet wurde. :)

EDIT:
Wenn du Delphi7 hast öffne die *.dpr nicht das Projekt *.dproj das ist für D2010

gruss

justin.kuhn 13. Apr 2017 23:39

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
[QUOTE=EWeiss;1367574]
Zitat:

Zitat von justin.kuhn (Beitrag 1367571)
Ok hier..

Vergleich das mal mit deinem.

gruss

Wenn ich die exe ausführe, gibt es keine Probleme. Wenn ich den Code in Delphi compiliere, bekomme ich eine Fehlermeldung. Wenn ich die exe meines Projekts ausführe, passiert hingegen auch nichts.
Delphi-Quellcode:
program Project1;

uses
  Forms,
  uMain in 'uMain.pas' {Main},
  uForm2 in 'uForm2.pas' {Formular2};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True; //Fehler (undeclared identifier: 'MainFormOnTaskbar'
  Application.CreateForm(TMain, Main);
  Application.CreateForm(TFormular2, Formular2);
  Application.Run;
end.

EWeiss 13. Apr 2017 23:40

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Application.MainFormOnTaskbar := True; //Fehler (undeclared identifier: 'MainFormOnTaskbar'
Kannst du löschen.

Bedenke das ist D2010 nicht D7

gruss

justin.kuhn 13. Apr 2017 23:49

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Liste der Anhänge anzeigen (Anzahl: 2)
Entschuldigt jetzt bitte, meine laienhafte Ausdrucksweise, aber beim Compilieren des Projekts habe ich bei mir ein Icon mit einer 7 und bei deinem Projekt ist eben ein anderes Icon in der Kopfzeile. Ist da ein Zusammenhang? Oder liegt das nur an den unterschiedlichen Versionen?

EWeiss 13. Apr 2017 23:51

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von justin.kuhn (Beitrag 1367579)
Entschuldigt jetzt bitte, meine laienhafte Ausdrucksweise, aber beim Compilieren des Projekts habe ich bei mir ein Icon mit einer 7 und bei deinem Projekt ist eben ein anderes Icon in der Kopfzeile. Ist da ein Zusammenhang? Oder liegt das nur an den unterschiedlichen Versionen?

Es liegt daran weil das Icon in meiner Ressource eingebunden ist.

Das kannst du ändern einfach Project1.res löschen. (Die wird dann neu erstellt)
Funktioniert es denn jetzt oder immer noch nicht.

Wenn nicht ist etwas mit deinem D7 nicht in Ordnung selbst D1 ist dazu in der lage.

gruss

justin.kuhn 14. Apr 2017 00:04

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von EWeiss (Beitrag 1367580)
Funktioniert es denn jetzt oder immer noch nicht.

Mit deinem Code läuft alles. Wenn ich diesen jedoch in eine neues Projekt kopiere, funktioniert es nicht mehr. Mir fehlt dann lediglich die Unit namens Project1.

EWeiss 14. Apr 2017 00:06

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Wenn ich diesen jedoch in eine neues Projekt kopiere
Sorry da kann ich dir leider nicht mehr helfen..

Da bleibt dir nichts anderes übrig als alles genau zu untersuchen was du falsch machst beim kopieren.
Frohe Oster ;)

PS:
projekt1 ist keine Unit sondern deine Projekt *.dpr Datei.
program Project1;

öffne die Datei mal mit einem Text Editor.

gruss

a.def 14. Apr 2017 00:11

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Noch ein kleiner Tipp von mir:

wechsle doch zu Delphi 10.2 Tokyo - das ist in der Starter-Version mehr als ausreichend und kostenlos. Schmeiß dein altes Delphi 7 über Bord.

Delphi 10.2 Tokyo Starter Download: https://www.embarcadero.com/de/produ...ional-download

EWeiss 14. Apr 2017 00:13

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von a.def (Beitrag 1367584)
Noch ein kleiner Tipp von mir:

wechsle doch zu Delphi 10.2 Tokyo - das ist in der Starter-Version mehr als ausreichend und kostenlos. Schmeiß dein altes Delphi 7 über Bord.

Delphi 10.2 Tokyo Starter Download: https://www.embarcadero.com/de/produ...ional-download

Ich denke mal das dürfen die nicht.
Software der Schule.. da kann man nicht machen was man will.
Die müssen untereinander Kompatibel bleiben.

gruss

a.def 14. Apr 2017 00:14

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Software der Schule.. da kann man nicht machen was man will.
Ok wusste ich nicht. Dumme Lehrer .... wie immer.

EWeiss 14. Apr 2017 00:15

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von a.def (Beitrag 1367586)
Zitat:

Software der Schule.. da kann man nicht machen was man will.
Ok wusste ich nicht. Dumme Lehrer .... wie immer.

Dito.. LOL

gruss

a.def 14. Apr 2017 00:20

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
An den Themenersteller:
wenn du einfach Copy-Paste machst und dann etwas nicht funktioniert ("unit project1 fehlt")... das bedeutet für mich ganz klar,
dass euer "Lehrer" euch nicht einmal die Grundlagen über den Aufbau einer Delphi-Unit beigebracht hat.

Irgendwie kommen mir diese.... "Delphi-Lehrer" alle vor die umgeschulte Köche oder Handwerker.


Programmaufbau: https://www.delphi-treff.de/object-p...rogrammaufbau/

EWeiss 14. Apr 2017 00:25

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Irgendwie kommen mir diese.... "Delphi-Lehrer" alle vor die umgeschulte Köche oder Handwerker.
Ach ja man ist ja genügsam und hilft gern.
Aber irgendwo habe auch ich meine grenzen.

Ich hoffe das er es noch hinbekommt.. irgendwie.
Haben alle mal angefangen.

Dein Link wird ihm wohl helfen.. ;)

gruss

a.def 14. Apr 2017 10:34

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Ich hoffe das er es noch hinbekommt.. irgendwie.
Ich dachte eigentlich der Themenersteller wäre der Schüler :P

Aber ja. Meinen Link mal angucken, um den Aufbau einer Unit zu verstehen. Dann sieht man auch gleich, was man Copy-Pasten darf und was eher nicht.

dummzeuch 14. Apr 2017 11:20

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Oops, habe gerade gesehen, dass es schon drei Seiten Antworten gab. Falls sid das Problem also schon erledigt hat, ignoriert mich einfach.

Zitat:

Zitat von justin.kuhn (Beitrag 1367562)
Hallo, ich hoffe, dass ich das richtige Unterthema gewählt habe. Folgendes Problem habe ich mit diesem Code:
Delphi-Quellcode:
 bt1:= TButton.Create(Main);
 bt1.Parent:= Main;

 btEnde:= TButton.Create(Main);
 btEnde.Parent:= Main;
end;

Dein Fehler liegt in der Verwendung der Variablen Main als Onwer (beim Aufruf von TButton.Create) und als Parent (in der Zuweisung). Main ist zu dem Zeitpunkt noch nicht initialisiert, so dass den Buttons als Owner und Parent NIL zugwiesen wird.

Wenn Du statt Main die implizite Variable Self verwendest, wird es funktionieren. Self ist in Methoden eines Objekts (ein Formular ist ein Objekt) immer die aktuelle Instanz des Objekts, also immer korrekt initialisiert.

twm

justin.kuhn 14. Apr 2017 13:12

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Vielen Dank für die zahlreichen Antworten. Ich werde mich am Nachmittag nochmal ausgiebig belesen und weitere Versuche starten.

a.def 14. Apr 2017 13:17

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Auch dir empfehle ich sehr gerne das Buch Delphi for Kids.
Das Buch ist zwar für Kinder aber genau deswegen ist alles sehr leicht erklärt und auch für Erwachsene verständlich die nicht gerade der IT-Ecke entspringen.

Amazon: https://www.amazon.de/Delphi-f%C3%BC...elphi+for+kids

Dalai 14. Apr 2017 14:51

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von dummzeuch (Beitrag 1367611)
Main ist zu dem Zeitpunkt noch nicht initialisiert, so dass den Buttons als Owner und Parent NIL zugwiesen wird.

Eigentlich nicht. Da Main das Hauptformular ist, ist das selbstverständlich mit einer Instanz belegt, auch schon im FormCreate. Außerdem würde es sonst eine AV geben, davon lese ich aber nichts.

Ich finde den Quelltext generell schwierig. Da wird schamlos auf ein anderes Formular aus einer Unit zugegriffen, bei jedem Buttonclick wird eine neue Instanz von Formular und Button erzeugt, aber an keiner Stelle wieder freigegeben (schicke Speicherlecks) usw.

Ich würde die Buttons als Felder der zweiten Formklasse machen, das Erzeugen und Freigeben läuft dann auch innerhalb dieser Form/Klasse. Oder so wie EWeiss es gezeigt hat, aber vermutlich hat der Lehrer einen Grund, eine zweite Unit/Klasse zu benutzen.

Grüße
Dalai

a.def 14. Apr 2017 15:01

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Wieso nicht einfach die Buttons im Designer auf das Formular platzieren und diesen ganzen Mist mit dem Erzeugen zur Laufzeug sein lassen?

EWeiss 14. Apr 2017 15:04

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

aber vermutlich hat der Lehrer einen Grund, eine zweite Unit/Klasse zu benutzen.
Jo aber unverständlich.
Denn wenn ich schon alle Controls dynamisch erzeuge dann sollte man das auch mit den Form's so halten.

Wer weis schon was er sich dabei gedacht hat.

gruss

EWeiss 14. Apr 2017 15:04

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von a.def (Beitrag 1367622)
Wieso nicht einfach die Buttons im Designer auf das Formular platzieren und diesen ganzen Mist mit dem Erzeugen zur Laufzeug sein lassen?

Der sinn des Lernens halt.
Denn das kann ja jeder.

gruss

justin.kuhn 15. Apr 2017 22:42

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Ich habe mir auf Empfehlung mal das Buch Delphi für Kids zugelegt und Delphi mit dem Download des Buches neu installiert, um Fehlerquellen meiner bisherigen Installation auszuschließen. Das Buch konnte mir vor allem bei theoretischen Fragen bereits weiterhelfen. Mein eigentliches Problem ist jedoch noch nicht gelöst. Selbst bei den simpelsten Projekten, tauchen beim Ausführen keine Elemente auf. Meine Vorgehensweise: Ich öffne eine neues Projekt und speichere dieses zunächst. Dann benenne ich das Formular um und beginne, das Programm zu programmieren. Hier ein weiteres Experiment, auch wieder ohne Erfolg:
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 Willkommen(Sender: TObject);

  private
    { Private-Deklarationen }
     btHallo:TButton;
     lblHallo:TLabel;
  public
    { Public-Deklarationen }
  end;

var
  Main: TMain;

implementation

{$R *.dfm}

procedure TMain.FormCreate(Sender: TObject);
 begin
  SetBounds(150,150,230,260);
  Caption := 'Hallo';
  btHallo := TButton.Create(Main);
  btHallo.Parent := Main;
  btHallo.Visible := True;
  btHallo.SetBounds(50,20,120,50);
  btHallo.Caption := 'Hallo';
  btHallo.OnClick := Willkommen;
 end;

procedure TMain.Willkommen(Sender: TObject);
 begin
  lblHallo := TLabel.Create(Main);
  lblHallo.Parent := Main;
  lblHallo.Visible := True;
  lblHallo.SetBounds(50,90,120,50);
  lblHallo.Caption := 'Willkommen';
 end;

end.

borstenei 16. Apr 2017 00:01

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Liste der Anhänge anzeigen (Anzahl: 1)
Dein Beispiel funktioniert bei mir ohne Probleme....

justin.kuhn 16. Apr 2017 00:10

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von borstenei (Beitrag 1367837)
Dein Beispiel funktioniert bei mir ohne Probleme....

Dein Anhang funktioniert bei mir auch. Also kann es ja nicht am Code liegen. Muss ich vielleicht irgendwelche Einstellungen in Delphi ändern (mal ganz banal gefragt)? Ist etwas an meinem Vorgehen beim Erstellen des Projekts falsch?

a.def 16. Apr 2017 00:36

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Vielleicht liegt es ja an Delphi 7? Das Beispiel da oben wurde mit 10.2 Tokyo (gibt es auch kostenlos) kompiliert.

HolgerX 16. Apr 2017 09:43

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von a.def (Beitrag 1367839)
Vielleicht liegt es ja an Delphi 7? Das Beispiel da oben wurde mit 10.2 Tokyo (gibt es auch kostenlos) kompiliert.

Nope..

Bei meinem D6 funktioniert es auch einwandfrei, somit sollte es auch mit D7 funktionieren.. ;)

DeddyH 16. Apr 2017 09:58

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Mal eine andere Frage: sind die Methoden denn auch den entsprechenden Events zugewiesen, oder wurde der Code einfach nur "frei Hand" eingetippt? Schau doch mal im Objektinspektor auf der Seite Ereignisse nach.

t.roller 16. Apr 2017 10:24

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Beispiel in #37 (EXE und Compilation) funktioniert auch in WIN8.1, XE7.

Code in #1 funktioniert mit kleinen Änderungen - an XE7 angepasst:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure NeuesFenster(Sender:TObject);
    procedure F2Close(Sender: TObject);
    procedure FC(Sender: TObject);

  private
    { Private-Deklarationen }
     bt1: TButton;
     bt2: TButton;
     F2: TForm;
     btEnde: TButton;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FC(Sender: TObject);
begin
 Application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 bt1:= TButton.Create(Self);
 bt1.SetBounds(20,20,160,60);
 bt1.Parent:= Self;
 bt1.Caption:= 'Neues Fenster';
 bt1.OnClick:= NeuesFenster;

 btEnde:= TButton.Create(Self);
 btEnde.SetBounds(20,100,160,60);
 btEnde.Parent:= Self;
 btEnde.Caption:= 'Schliessen';
 btEnde.OnClick:= FC;
end;

procedure TForm1.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;
end;

procedure TForm1.F2Close(Sender: TObject);
begin
 F2.Close;
 bt1.enabled:=true;
end;

end.

justin.kuhn 16. Apr 2017 13:16

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig
 
Zitat:

Zitat von DeddyH (Beitrag 1367848)
Mal eine andere Frage: sind die Methoden denn auch den entsprechenden Events zugewiesen, oder wurde der Code einfach nur "frei Hand" eingetippt? Schau doch mal im Objektinspektor auf der Seite Ereignisse nach.

Also ich habe den Code einfach nur "eingetippt" und im Objektinspektor lediglich das Formular umbenannt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf