![]() |
Varibale bei (Sender:Object) mit übergeben
Hallo das ist mein erster Beitrag und ich weiß nicht genau ob ich jetzt alles richtig gemacht habe.
Aber zu meinem Problem bei Delphi Ich hab zurzeit folgendes Problem. Die Procedure Task_neu muss Variabel sein. Das heißt ihr möchte eine Variable mit dem Onlick Event übergeben.
Delphi-Quellcode:
[edit=SirThornberry] Mfg, SirThornberry[/edit]
procedure TForm2.Task_Neu([b]var i:Integer;[/b] Sender: TObject);
var SelectedURL,url:string; begin Taskausfuehren[0-9,0-19]; end; procedure TForm2.Button22Click(Sender: TObject); var MeinMenue: array[0 ..recordmax] of TMenuItem; i,i2:Integer; begin //Vorhandenes Menü Löschen for i:=0 to recordmax do Form1.MainMenu1.Items[0].Clear; //Menü neu aufbauen for i := 0 to recordmax do begin MeinMenue[i] := TMenuItem.Create(self); MeinMenue[i].Caption := Task[1,i].FeldName; MeinMenue[i].OnClick:=Task_Neu; Form1.MainMenu1.Items[0].Add(MeinMenue[i]); end; end; |
Re: Varibale bei (Sender:Object) mit übergeben
Setze mal die Delphitags, der Code wird dadurch deutlich besser zu lesen. Einfach mal auf Edit klicken.
Zu dem Problem: Jedes Control hat eine Eigenschaft Tag. Darauf kannst du im onClick mit (Sender as TControl).Tag zugreifen. Vielleicht hilft es dir ja. |
Re: Varibale bei (Sender:Object) mit übergeben
Hi Luke_83,
erst einmal: Herzlich Willkommen in der Delphi-PRAXiS :dp: So, wie Du das haben möchtest, wird das nicht klappen. Du könntest aber die Property .Tag dafür missbrauchen. So wie ich sehe, brauchst Du nur eine Integer-Variable:
Delphi-Quellcode:
Wenn Du die Delphi-BB-Code-Tags um Deinen Quellcode schreibst, dann stellt das Forum Deinen Quellcode wie in Delphi dar:
procedure TForm2.Task_Neu(Sender: TObject);
var SelectedURL,url:string; I: Integer; begin // Und hier kommst Du mit folgendem Code wieder an Deinen Wert: I := (Sender as TMenuItem).Tag; end; procedure TForm2.Button22Click(Sender: TObject); var MeinMenue: array[0 ..recordmax] of TMenuItem; i,i2:Integer; begin //Vorhandenes Menü Löschen for i:=0 to recordmax do Form1.MainMenu1.Items[0].Clear; //Menü neu aufbauen for i := 0 to recordmax do begin MeinMenue[i] := TMenuItem.Create(self); MeinMenue[i].Caption := Task[1,i].FeldName; MeinMenue[i].OnClick:=Task_Neu; MeinMenue[i].Tag := IntegerVariable; // << hier kommt Deine Variable hin, die Du noch übergeben willst. Form1.MainMenu1.Items[0].Add(MeinMenue[i]); end; end;
Code:
[delphi][/delphi]
|
Re: Varibale bei (Sender:Object) mit übergeben
Kann man im Tag Feld auf zwei Variabeln übergeben oder geht das dort nur mit einer Variablen ???
Aber schon mal Danke für die Antwort... [edit=SirThornberry]Delphi-Tags entfernt - Mfg, SirThornberry[/edit] |
Re: Varibale bei (Sender:Object) mit übergeben
Delphi-Quellcode:
procedure TForm2.Task_Neu(Sender: TObject); var SelectedURL,url:string; I1,I2: Integer; begin // Und hier kommst Du mit folgendem Code wieder an Deinen Wert: I1 := (Sender as TMenuItem).Hint; I2 := (Sender as TMenuItem).Tag; form2.Tasks_shell(i1+1,i2+1); end; procedure TForm2.Button22Click(Sender: TObject); var MeinMenue: array[0 ..recordmax] of TMenuItem; i,i2:Integer; begin //Vorhandenes Menü Löschen Form1.MainMenu1.Items[0].Clear; //Menü neu aufbauen //for i2:=0 to 9 do begin for i := 0 to recordmax do begin MeinMenue[i] := TMenuItem.Create(self); MeinMenue[i].Caption := Task[1,i].FeldName; MeinMenue[i].OnClick:=Task_Neu; MeinMenue[i].Tag := i; // << hier kommt Deine Variable hin, die Du noch übergeben willst. MeinMenue[i].Hint:=1; Form1.MainMenu1.Items[0].Add(MeinMenue[i]); end; //end; end; Danke für die Antworten habs hinbekommen und läuft jetzt auch mit zwei Variablen |
Re: Varibale bei (Sender:Object) mit übergeben
Direkt geht es nicht, jedoch kann man ein bisschen tricksen...
Das folgende Beispiel ist quick & dirty, der Speicher wird nicht freigegeben. Es dient nur zur Demonstration!
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TMoreVars = class(TObject) public Test1: String; Test2: Integer; end; TForm1 = class(TForm) Button1: TButton; Button4: TButton; procedure Button4Click(Sender: TObject); procedure DoSomething(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.Button4Click(Sender: TObject); var mv: TMoreVars; begin mv := TMoreVars.Create; mv.Test1 := 'Hello =)'; mv.Test2 := 5; Button1.Tag := Integer(mv); end; procedure TForm1.DoSomething(Sender: TObject); var mv: TMoreVars; begin // mv := TMoreVars((Sender as TButton).Tag); ShowMessage(mv.Test1); showMessage(IntToStr(mv.Test2)); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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