Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnClick Prozedur für einen noch nicht vorhandenen Button (https://www.delphipraxis.net/98763-onclick-prozedur-fuer-einen-noch-nicht-vorhandenen-button.html)

XPLOSIV 31. Aug 2007 20:48


OnClick Prozedur für einen noch nicht vorhandenen Button
 
Also, der User kann per Knopfdruck einen TabSheet mit einem Button und einer SnyEdit erstellen, falls er dann den Button anklickt, soll der Inhalt von SynEdit Markiert werden. Ich habe es mal so geamcht um ihn die OnClick Prozedur zu zuweisen.

Delphi-Quellcode:
//Button für das TabSheet erstellen
  MyButton:= TButton.Create(ts);//Button wird erstellt
  MyButton.Parent:= ts; //damit wird dem Button das TabSheet als übergeordnete Komponente zugewiesen
  MyButton.Name:= 'Button'+IntToStr(PageControl1.PageCount);//Name wird zugewiesen
  MyButton.Caption:= 'Skript kopieren';//Er wird umbenannt
  //Funktion zuweisen
   MyButton.OnClick := MyRichEdit.SelectAll;
Doch da kommt immer Liste der Parameter ist unterschiedlich...

Wie lautet es richtig ?


MfG XPLOSIV

sirius 31. Aug 2007 20:55

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
Das onclick-Event ist ein TNotifyEvent. dieses verlangt eine Methode mit folgender Deklaration:
Delphi-Quellcode:
procedure(sender:Tobject)
SelectAll hat eine andere Deklaration. Da musst du wohl noch eine Methode zwischenschalten.

XPLOSIV 31. Aug 2007 21:21

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
So villeicht ?

Delphi-Quellcode:
  //Funktion zuweisen
  procedure Skriptkopieren1Click(sender:Tobject)
  MyButton.OnClick := MyRichEdit.SelectAll;
Dann kommt aber Anweisung erwartet aber procedure gefunden...

inherited 31. Aug 2007 21:29

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
Nein. Du erstellst dir eine neue Prozedur als Member von der Form mit dem Sender-parameter und weist die dann zu.

oki 31. Aug 2007 22:00

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
Hi,

Deklaration:
Delphi-Quellcode:
  procedure AlleNeuenButtonClick(Sender : TObject);
Zuweisung:
Delphi-Quellcode:
//Funktion zuweisen
MyButton.OnClick := AlleNeuenButtonClick; [i][Edit] Schreibfehler Cklick korrigiert [/Edit oki][/i]
Procedure:
Delphi-Quellcode:
procedure MyForm.AlleNeuenButtonClick(Sender : TObject);
begin
  MyRichEdit.SelectAll;
end;
Gruß oki

XPLOSIV 31. Aug 2007 23:50

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
Leider, beim Klicken kommt ne Fehlermeldung, Zugriffsverletzung...

Muetze1 1. Sep 2007 00:28

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
...Weil MyRichEdit nicht existiert?

Mehr kann mir meine Glaskugel nicht sagen. Aber du könntest auch mehr Code zeigen...

XPLOSIV 1. Sep 2007 00:43

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
Ich habs wie oki gemacht:

Delphi-Quellcode:
  //Funktion zuweisen
  MyButton.OnClick := AlleNeuenButtonClick;
Delphi-Quellcode:
    procedure AlleNeuenButtonClick(Sender : TObject);

Delphi-Quellcode:
procedure TForm1.AlleNeuenButtonClick(Sender : TObject);
var
MyRichEdit: TSynEdit;
begin
  MyRichEdit.SelectAll;
end;

PS. oki du hast CKlick geschrieben ^^

Muetze1 1. Sep 2007 00:46

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
Zitat:

Zitat von XPLOSIV
Ich habs wie oki gemacht:

Nein, hast du nicht!

Zitat:

Zitat von XPLOSIV
Delphi-Quellcode:
procedure TForm1.AlleNeuenButtonClick(Sender : TObject);
var
MyRichEdit: TSynEdit;
begin
  MyRichEdit.SelectAll;
end;

Er hat dort nirgendwo eine lokale Variable deklariert!

Die Variable MyRichEdit aus oki's Beispiel steht für dein RichEdit/SynEdit bei dem du den Text markieren willst. Das musst du entsprechend ersetzen und nicht einfach eine lokale Variable dazu deklarieren (diese ist uninitialisiert und von daher ist der Fehler nur allzu verständlich...)

XPLOSIV 1. Sep 2007 01:01

Re: OnClick Prozedur für einen noch nicht vorhandenen Button
 
Ehrlich gesagt, verstehe ich das nicht.. Wo muss ich also die Variable hinmachen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.
Seite 1 von 2  1 2      

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