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
Thema durchsuchen
Ansicht
Themen-Optionen

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
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 14. Apr 2017, 10:20
Oops, habe gerade gesehen, dass es schon drei Seiten Antworten gab. Falls sid das Problem also schon erledigt hat, ignoriert mich einfach.

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
Thomas Mueller

Geändert von dummzeuch (14. Apr 2017 um 10:22 Uhr)
  Mit Zitat antworten Zitat
justin.kuhn

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

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 14. Apr 2017, 12:12
Vielen Dank für die zahlreichen Antworten. Ich werde mich am Nachmittag nochmal ausgiebig belesen und weitere Versuche starten.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 14. Apr 2017, 12:17
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
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#4

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 14. Apr 2017, 13:51
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
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#5

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 14. Apr 2017, 14:01
Wieso nicht einfach die Buttons im Designer auf das Formular platzieren und diesen ganzen Mist mit dem Erzeugen zur Laufzeug sein lassen?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 14. Apr 2017, 14:04
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
  Mit Zitat antworten Zitat
justin.kuhn

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

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 15. Apr 2017, 21:42
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.
  Mit Zitat antworten Zitat
borstenei

Registriert seit: 11. Nov 2011
121 Beiträge
 
#8

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 15. Apr 2017, 23:01
Dein Beispiel funktioniert bei mir ohne Probleme....
Angehängte Dateien
Dateityp: rar Test.rar (2,22 MB, 3x aufgerufen)
  Mit Zitat antworten Zitat
justin.kuhn

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

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 15. Apr 2017, 23:10
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?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Zur Laufzeit erstellte Elemente werden nicht angezeig

  Alt 14. Apr 2017, 14:04
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
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 13:54 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-2025 by Thomas Breitkreuz