Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5   

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)

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 01:18 Uhr.
Seite 4 von 5   « Erste     234 5   

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