Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Button zur Laufzeit erstellen (https://www.delphipraxis.net/35269-button-zur-laufzeit-erstellen.html)

Hansi 4. Dez 2004 15:50


Button zur Laufzeit erstellen
 
Hallo,

Mit folgendem Code erstelle ich einen Button zur Laufzeit. Dies funktioniert auch.
So nun aber meine Frage: Wenn Ihr den Code in eine neue Anwendung kopiert werdet Ihr feststellen, dass kein Button auf dem Formular ist. Warum?? Die Lösung: Dies schafft Ihr nur wenn Ihr auf das leere Formular doppelklickt und dann in die Procedure TForm1.Formcreate kommt, die Ihr aber vorher schon erstellt habt(kopiert!). Wenn Ihr dann das Programm laufen lasst, erscheint der Button.

Warum?????

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)


  Procedure FormCreate(Sender:TObject);



  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Button1: TButton;
  end;

var
  Form1: TForm1;
  Button1:TButton;


implementation

{$R *.dfm}

Procedure TForm1.FormCreate(Sender:TObject);
begin
  Button1:=TButton.Create(self);
  Button1.Parent:=Form1;
  Button1.Top:=20;
  Button1.Left:=200;
  Button1.Show;
  Button1.Caption:='Beenden';

end;


end.

Luckie 4. Dez 2004 15:51

Re: Button zur Laufzeit erstellen
 
Weil du im OI dem Formular noch den Event zu weisen musst. :roll:

jfheins 4. Dez 2004 15:52

Re: Button zur Laufzeit erstellen
 
Weil du erst noch sagen musst, dass du überhaupt etwas im OnFormCreate machen möchtest ...
Und dass tust du, indem du im OI dem Ereignis eine entprechende Ereignisbehandlungsroutine zuweist.

Och menno, immer bin ich zu langsam ...

Hansi 4. Dez 2004 15:52

Re: Button zur Laufzeit erstellen
 
Aber ich will doch alles zur LAufzeit erstellen!

geht das auch?

alcaeus 4. Dez 2004 16:09

Re: Button zur Laufzeit erstellen
 
Hi Hansi,

z.B. so:
Delphi-Quellcode:
Form1.OnCreate := FormCreate;
Greetz
alcaeus

Luckie 4. Dez 2004 16:12

Re: Button zur Laufzeit erstellen
 
Es gehört immer noch eine dfm Datei dazu und da steht das drinne:
Code:
object Form1: TForm1
  Left = 192
  Top = 107
  Width = 870
  Height = 640
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  [b]OnCreate = FormCreate[/b]
  PixelsPerInch = 96
  TextHeight = 13
end
Warum willst du alles zur Lauftzeit erzeugen?

Hansi 4. Dez 2004 16:19

Re: Button zur Laufzeit erstellen
 
Genau wegen so einem Problem. Wie Du wahrscheinlich siehst(hast ja schon einige Fragen von mir beantwortet) arbeite ich seit mehreren Monaten intensiv mit Delphi. Und immer wieder hatte ich das problem, dass Irgendwas nicht funktioniert, und dann habe ich nach langem Suchen gemerkt, dass was weiss ich beim OI irgend was einstellen muss. Deshalb versuche ich ab jetzt alles zur Laufzeit zu erstellen. Spricht was aus Deiner Erfahrung dagegen? Ist doch sinnvoll oder?

Luckie 4. Dez 2004 16:24

Re: Button zur Laufzeit erstellen
 
Nun ja, man kann auch nach Amerika schwimmen, ich würde aber ein Schiff oder ein Flugzeug vorziehen. Dein Vorhaben macht erstmal keinen Sinn und zweitens wie willst du das kompiliert bekommen? Der Compiler wirft die pas und die dfm Datei zusammen und macht daraus die Exe, einfach gesagt. Wie soll das klappen, wenn du alles erst zur Laufzeit erzeugst?

Was deinem Vorhaben nahe kommt ist der Verzicht auf die VCL und reine WinAPI, nonVCL, Programmierung. Für einen Anfänger aber nicht zu empfehlen. Lerne erstmal die Sprache und die Grundlagen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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