Announcement

Collapse
No announcement yet.

OnClick

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • OnClick

    Hallo,

    ich erzeuge mit create zur Laufzeit 10 Buttons. namen B0 bis B9 und caption 0 bis 9.
    <pre>
    x := 2;
    for i := 48 to 57 do
    begin
    LB := TButton.Create(Form1);
    LB.Name := 'B' + inttostr(i);
    lb.Left := x + 20;
    lb.Top := 20;
    x := x+ 20;
    lb.Width := 15;
    lb.Height := 20;
    lb.Caption := chr(i);
    lb.Visible := true;
    lb.Parent:= Form1;
    </pre>

    Jetzt brauche ich auch 10 OnClick- Ereignisbehandlungen, die auch während der Laufzeit erstellt werden müssen. Bei Klick auf einen Button soll die Caption des Button in ein Edit-Feld geschrieben werden (ähnlich, wie bei einem Taschenrechner).

    Wie erzeugt man nun die onClick-Proceduren zur Laufzeit, damit es wie gewollt funktioniert?

    Gruß
    Werner

  • #2
    Schreibe einfach bei Delphi ab:<p>
    <pre>
    public
    procedure MyClick(Sender: TObject);
    ...
    procedure TForm1.MyClick(Sender: TObject);
    begin
    ShowMessage("MyClick");
    end;
    ...
    lb.OnClick := MyClick;
    ...</pre><p>
    Mehr ist das gar nicht.<p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Danke. Das funktioniert.

      Nur habe ich bei jeden Button die gleiche Reaktion.

      Wie mache ich es aber, dass

      Showmessage(caption des geklickten Buttons)

      erscheint? Könnte irgendwie über Sender funktionieren. Nur wie?

      <pre>
      procedure TForm1.MyClick(Sender: TObject);
      var i:integer;
      begin
      for i :=48 to 57 do
      begin
      if (Sender as TButton).caption = chr(i) then form1.edit1.Text := chr(i);
      end;
      end;
      </pre>
      Leider funktioniert das nicht.

      Edit:
      Muss mich korrigieren. Es funktioniert doch so. Damit ist das Problem gelöst.

      Jetzt brauche ich im internet meine Passwörter nicht mehr über die tastatur eingeben, sondern klicke sie mir zusammen und füge sie dann nur noch in die entsprechenden felder in die internetformulare ein. Man hört ja so viel, dass Trojaner Tastatureingaben protokolieren können. Bei Mausklicks ist es vielleicht dann nicht mehr so einfach

      Comment


      • #4
        <pre>
        procedure TForm1.MyClick(Sender: TObject);
        begin
        ShowMessage((Sender as TButton).Caption);
        end;
        </pre>
        Uli

        Comment


        • #5
          Na, das ist sicher die ultimative Lösung.
          Meine For-Schleife ist ja echt peinlich.

          Gruß
          Werne

          Comment


          • #6
            Manchmal sieht man halt den Wald vor lauter Bäumen nicht. :-)<p>Uli

            Comment

            Working...
            X