![]() |
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. |
Re: Button zur Laufzeit erstellen
Weil du im OI dem Formular noch den Event zu weisen musst. :roll:
|
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 ... |
Re: Button zur Laufzeit erstellen
Aber ich will doch alles zur LAufzeit erstellen!
geht das auch? |
Re: Button zur Laufzeit erstellen
Hi Hansi,
z.B. so:
Delphi-Quellcode:
Greetz
Form1.OnCreate := FormCreate;
alcaeus |
Re: Button zur Laufzeit erstellen
Es gehört immer noch eine dfm Datei dazu und da steht das drinne:
Code:
Warum willst du alles zur Lauftzeit erzeugen?
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 |
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?
|
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:20 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