Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Onclick mit weiteren Parametern als nur "Sender:Tobject" (https://www.delphipraxis.net/35005-onclick-mit-weiteren-parametern-als-nur-sender-tobject.html)

Dt2158 1. Dez 2004 12:43


Onclick mit weiteren Parametern als nur "Sender:Tobject
 
Hallo,

ich habe folgendes Problem:
Ein zur laufzeit erzeugter button "but1"

Delphi-Quellcode:
type
...
procedure But1Click(Sender: TObject);
 private
...
...
...
...

but1.onclick := But1Click;

..
..

procedure TForm1.But1Click(Sender: TObject);
begin
...
end
Geht einwandfrei, klar!
aber ich möchte gerne die Parameterliste erweitern

etwa so:

Delphi-Quellcode:
type
...
procedure But1Click(Sender: TObject; x:string);
 private
...
...
...
...

but1.onclick := But1Click('irgendein string');

..
..

procedure TForm1.But1Click(Sender: TObject; x:string);
begin
...
end

Da kommt die meldung:
Code:
[Fehler] main.pas(289): Inkompatible Typen: 'TObject' und 'String'
gut sender:Tobject !!
was kann ich tun ??
aus dem
Delphi-Quellcode:
but1.onclick := But1Click('irgendein string');
ein
Delphi-Quellcode:
but1.onclick := But1Click(but1,'irgendein string');
zu machen, resultiert in diesem fehler
Code:
[Fehler] main.pas(289): Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter'
Dt2158

ibp 1. Dez 2004 12:46

Re: Onclick mit weiteren Parametern als nur "Sender:Tob
 
welchen sinn verfolgst du damit?

Steve 1. Dez 2004 12:59

Re: Onclick mit weiteren Parametern als nur "Sender:Tob
 
Hi,

OnClick ist vom Typ TNotifyEvent, der folgendermaßen definiert ist:
Delphi-Quellcode:
TYPE
  TNotifyEvent = PROCEDURE (Sender: TObject) OF OBJECT;
Das heißt, OnClick wird nur der Methodenname übergeben. Des weiteren ist somit klar, dass Du einem 'normalen' TNotifyEvent-Handler keine weiteren Parameter übergeben kannst, da diese ja bereits definiert sind.
Hmm.. habs heut nich so mitm Erklären, sry :oops:

Gruß
Stephan :dance: :xmas:

Dt2158 1. Dez 2004 13:03

Re: Onclick mit weiteren Parametern als nur "Sender:Tob
 
der string:
Delphi-Quellcode:
but1.onclick := But1Click('irgendein string');
stammt von einem mysql-result
Delphi-Quellcode:
var row: PMYSQL_ROW;
also
Delphi-Quellcode:
but1.onclick := But1Click(row[0]);
das problem ist, dass es mir nicht gelungen ist die variable row: PMYSQL_ROW global zu registrieren, sondern nur in der procedure in der auch der aufruf von But1Click stattfindet.

Gut ich könnte jetzt noch eine global Variable registrieren und dieser row[0] übergeben, das ist aber alles nicht so schön gelöst und mein programm sieht jetzt schon nicht so toll aus :roll:

Dt2158 1. Dez 2004 13:07

Re: Onclick mit weiteren Parametern als nur "Sender:Tob
 
Zitat:

Zitat von Steve
Hi,

OnClick ist vom Typ TNotifyEvent, der folgendermaßen definiert ist:
Delphi-Quellcode:
TYPE
  TNotifyEvent = PROCEDURE (Sender: TObject) OF OBJECT;
Das heißt, OnClick wird nur der Methodenname übergeben. Des weiteren ist somit klar, dass Du einem 'normalen' TNotifyEvent-Handler keine weiteren Parameter übergeben kannst, da diese ja bereits definiert sind.
Hmm.. habs heut nich so mitm Erklären, sry :oops:

Gruß
Stephan :dance: :xmas:

grummel, da muss ich doch den anderen weg nehmen :cry:

Sanchez 1. Dez 2004 13:07

Re: Onclick mit weiteren Parametern als nur "Sender:Tob
 
Hallo,
Ich verstehe trotzdem nicht warum du das machen willst und was es bewirken soll.
Willst du einen String außerhalb dieser Prozedur speichern?
Dann nimm eine Membervariable der Klasse. Ich kann aber nur raten, was du bezweckst.

grüße, daniel

s14 1. Dez 2004 13:50

Re: Onclick mit weiteren Parametern als nur "Sender:Tob
 
Hallo,
ich verwende für die Übergabe von Zeichenfolgen einfach die Eigenschaft "Hint" des TButton.

Code:
  but1.Hint := 'Irgendwas';
  but1.onclick := But1Click;

  procedure TForm1.But1Click(Sender: TObject);
  var
    s : string;
  begin
    s := (Sender as TButton).Hint;
  end

Dt2158 1. Dez 2004 14:00

Re: Onclick mit weiteren Parametern als nur "Sender:Tob
 
Zitat:

Zitat von s14
Hallo,
ich verwende für die Übergabe von Zeichenfolgen einfach die Eigenschaft "Hint" des TButton.

Code:
  but1.Hint := 'Irgendwas';
  but1.onclick := But1Click;

  procedure TForm1.But1Click(Sender: TObject);
  var
    s : string;
  begin
    s := (Sender as TButton).Hint;
  end

geile idee mal ausprobieren

Dt2158 1. Dez 2004 19:02

Re: Onclick mit weiteren Parametern als nur "Sender:Tob
 
hat wunderbar geklappt, danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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