Hallo,
Vielen Dank alfold und Bernhard.
Habe jetzt mal ein Beispielprogramm, in dem ich eine dynam. Form mit Button und BitBtn erzeuge, erstellt (ich habe versucht eure Hinweise einzuarbeiten, aber leider habe ich kaum Ahnung mit der
OOP).
Mit dem BtErzeugeform erzeuge ich die Form mit den beiden Buttons.
Durch Klicken auf den "Start Farbe"-Button, soll sich die Farbe von Form2 ändern, und der Integer-Wert der Farbe wird in der Leiste angezeigt.
Im Quelltext habe ich die 3 Tests mit den entsprechenden Fehlermeldungen angegeben.
Delphi-Quellcode:
unit DynFormU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm2 =
class(TForm)
BitBtn1: TBitBtn;
btErzeugeForm: TButton;
procedure btErzeugeFormClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm;
implementation
{$R *.dfm}
type
TMyClass=class(TForm)
procedure SetzeColor(Sender:TObject);
end;
var
Form :TForm;
Button :TButton;
BitBtn :TBitBtn;
procedure SetzeColor;
begin
Form2.Color:=Form2.Color+1000;
Form.Caption:=IntToStr(Form2.Color);
end;
procedure TForm2.btErzeugeFormClick(Sender: TObject);
begin
Form:=TForm.Create(Form2);
Form.Top:=100;
Form.Left:=100;
Form.Width:=400;
Form.Height:=300;
Form.Visible:=true;
Form.Caption:='
Dyn. Form';
Button:=TButton.create(Form);
Button.parent:=Form;
Button.Top:=Form.Height-70;
Button.Left:=10;
Button.Anchors:=[akLeft,akBottom];
Button.Width:=90;
Button.Height:=25;
Button.caption:='
S&tart Farbe';
Button.Visible:=true;
{Test1}
// Button.OnClick:=SetzeColor(Sender:TObject);
{Fehlermeldung: zu viele Parameter}
{Test2}
// Button.OnClick:=SetzeColor;
{Fehlermeldung: Inkompatible Typen Methodenzeiger und reguläre Prozedur}
{Test3}
// Button.OnClick:=SetzeColor(Sender);
{Fehlermeldung: zu viele Parameter}
BitBtn:=TBitBtn.Create(Form);
BitBtn.parent:=Form;
BitBtn.Top:=Form.Height-70;
BitBtn.Left:=Form.Width-100;
BitBtn.Anchors:=[akRight,akBottom];
BitBtn.Kind:=bkClose;
BitBtn.Caption:='
&Schließen';
BitBtn.Visible:=true;
end;
end.
Wie weise ich dem OnClick-Ereignis die procedure SetzeColor zu?
Was mache ich falsch? Wer hat einen Tipp?
Gruß, Linkat