Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - onClick Event zur Laufzeit zuweisen


delphisual - Mi 10.09.03 22:03
Titel: onClick Event zur Laufzeit zuweisen
Hallo zusammen,

mit folgendem Code erzeuge ich mir 10 Buttons, jetzt möchte ich mir die passenden onClick Events dazu coden und hier hackt es leider :(


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 10 do
    with TButton.Create(Self) do
      begin
        Parent :=Form1;
        Caption := 'Button' + IntToStr(i);
        Left := 30;
        Top := 30*i;
      end;
end;


Ich weis dass es über TnotifyEvent Object geht, habe aber leider keinen Beispiel für gefunden.

Kann wer bitte helfen?

MfG delphisual


Christian S. - Mi 10.09.03 22:20

Hallo!

Vielleicht hilft das:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure tuWas (SEnder : TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.tuWas(sender : TObject);
begin
  ShowMessage('bla');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.OnClick := tuWas;
end;


MfG
Peter


delphisual - Mi 10.09.03 22:41

Danke schön es funktioniert ;)

Leider funktioniert es nicht mehr wenn ich den Parent (der Buttons) an meinen StringGrid1 zuweise.

Meine Idee ist es jeden Row des StingGrids mit einem Button zu bestücken.

Hast du Peter eine Idee?


Christian S. - Mi 10.09.03 22:55

Hm. Ich kann mir nicht ganz vorstellen, wie das aussehen soll. Kannst Du das etwas genauer beschreiben?


delphisual - Do 11.09.03 19:12

Hi, der user wird später in der Lage sein die Anzahl der Rows des StringGrids zu wählen,
jeder Row bekommt einen Button verpasst, und jeder diesen Buttons muss dem entsprechend einen eigenen Event bekommen.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
procedure TForm1.tuWas(sender : TObject);
begin
// An dieser stelle muss ich herausfinden welcher Button gedrükt wurde
// um darauf zu reagieren
ShowMessage('bla');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 100 do begin
    with TButton.Create(self) do
      begin
        Name:=      'Button' + IntToStr(i);
        Parent:=    StringGrid1;
        Caption:=   'Button' + IntToStr(i);
        Height:=    22;
        Left:=      2;
        Top:=       25*i;
        OnClick:=   tuWas; // wird leider nicht mehr ausgeführt
       end;

end;                    end;


wenn ich den Parent an StringGrid1 übergebe werden die Buttons zu geordnet doch das Event
funzt leider nicht mehr.

Mit freundlichen Grüßen
delphisual


Keldorn - Do 11.09.03 19:25

delphisual hat folgendes geschrieben:
Hi, der user wird später in der Lage sein die Anzahl der Rows des StringGrids zu wählen,
jeder Row bekommt einen Button verpasst, und jeder diesen Buttons muss dem entsprechend einen eigenen Event bekommen.

öhm warum wertest du nicht bei einem Klick bzw mousedown die Zeile aus? (stichwort mousetocell um die Zeillen rauszubekommen)

Mfg Frank


delphisual - Do 11.09.03 19:38

Weniger Aufwand wäre dass auf jeden Fall, ich wollte mich mehr mit Events beschäftigen
da es mich schon immer interessiert hat ;)

Ich habe auch alle meine Bücher sowie Delphi-Hilfe danach abgesucht ohne Erfolg.

hat niemand eine Idee ? :cry: