![]() |
eine Komponente "erschaffen" (create)
Wie kann ich eine Komponente erstellen, während das Programm läuft, also z.B. per Buttonclick? Also z.B. einen neuen Button erschaffen. Am besten noch mit Position auf dem Label.
Delphi-Quellcode:
Damit geht es ja anscheinend nicht. Da kommt die Fehlermeldung "nicht genügend Parameter". Was für Parameter müssen da wie und wo untergebracht werden?
procedure TForm1.Button1Click(Sender: TObject);
begin TButton.Create; end; |
Re: eine Komponente "erschaffen" (create)
Hi,
Du brauchst den Parameter Owner. Den setzt Du am besten auf dein Formular (Form1). Ich würde es so machen z.B.
Delphi-Quellcode:
mfG
// Self = Form1
with TButton.Create(Self) do begin Parent := Self; SetBounds(10, 10, 50, 21); Caption := 'Klick mich!'; // sonstige Eigenschaften... end; mirage228 |
Re: eine Komponente "erschaffen" (create)
|
Re: eine Komponente "erschaffen" (create)
Hallo malo,
es muss heißen:
Code:
Mit Paranet legst du fest, innerhalb welcher Komponente der Schalter dargestellt wird. Z.B. myPanel oder myForm.
myButton := TButton.Create(Self);
myButton.Parent := ... |
Re: eine Komponente "erschaffen" (create)
Delphi-Quellcode:
Dass der Parameter "AOwner: TComponent" lautet, findet man *trommelwirbel* in der OH unter *nochmaltrommelwirbel*
var
myBtn : TButton; begin myBtn := TButton.Create(Self); ... end; ![]() Gruß Stephan :dance: edit: Ich bin sooooo langsam :( :( |
Re: eine Komponente "erschaffen" (create)
Ah, gut, ich werds mal ausprobieren und auch das Tutorial mir mal ansehen :)
danke für die vielen Antworten :thumb: :bounce1: |
Re: eine Komponente "erschaffen" (create)
Zitat:
|
Re: eine Komponente "erschaffen" (create)
Hi malo!!!
Was du vorhast ist nicht unmöglich und es ist auch nicht sonderlich schwer! Ich zeig es dir mal ganz kurz: Das ist der ganze Quelltext:
Delphi-Quellcode:
Also: Du musst Delphi erst einmal den NeuButton bekannt machen. Es geht natürlich auch
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private-Deklarationen } public { Public-Deklarationen } Neubutton : TButton; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Neubutton := TButton.Create(Form1); Neubutton.Width := 15; Neubutton.Height := 60; NeuButton.Parent := Form1; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Neubutton.free; end; end. jeder andere Name. Der ist vom Typ TButton. Wenn du nun den schon erstellten Button, hier Button1, drückst, dann erstellt er den "NeuButton". Wichtig: 1. Du musst den Parent setzten, in diesem Fall Form1. 2. Du musst den NeuButton wieder freigeben, wenn die Anwendung geschlossen wird. Ansonsten kannst du mit dem NeuButton machen, was du mit einem "normalen" Button auch machen kannst. Du kannst im sogar eine Ereignisroutine hinzufügen. Aus Platzgründen schreibe ich das aber nicht direkt hier rein. Schick mir doch einfach eine E-Mail. Außerdem: du kannst theoretisch das ganze mit jeder Komponente machen. Dazu muss aber die Unit der entsprechenden Unit eingebunden sein. Das passiert aber automatisch, wenn eine "feste" Komponente, die du nicht erst zur Laufzeit ertellt hast, auf dein Formular setzt. So, ich denke, dass sollte dir bei deinem Problem helfen. MFG Patti 8) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 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