AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Varibale bei (Sender:Object) mit übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Varibale bei (Sender:Object) mit übergeben

Ein Thema von Luke_83 · begonnen am 22. Mai 2007 · letzter Beitrag vom 22. Mai 2007
Antwort Antwort
Luke_83

Registriert seit: 22. Mai 2007
Ort: Rödermark
32 Beiträge
 
Delphi 7 Professional
 
#1

Varibale bei (Sender:Object) mit übergeben

  Alt 22. Mai 2007, 15:12
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:
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;
[edit=SirThornberry] Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Varibale bei (Sender:Object) mit übergeben

  Alt 22. Mai 2007, 15:17
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Varibale bei (Sender:Object) mit übergeben

  Alt 22. Mai 2007, 15:19
Hi Luke_83,
erst einmal: Herzlich Willkommen in der Delphi-PRAXiS

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:
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;
Wenn Du die Delphi-BB-Code-Tags um Deinen Quellcode schreibst, dann stellt das Forum Deinen Quellcode wie in Delphi dar:

Code:
[delphi][/delphi]
  Mit Zitat antworten Zitat
Luke_83

Registriert seit: 22. Mai 2007
Ort: Rödermark
32 Beiträge
 
Delphi 7 Professional
 
#4

Re: Varibale bei (Sender:Object) mit übergeben

  Alt 22. Mai 2007, 15:27
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]
  Mit Zitat antworten Zitat
Luke_83

Registriert seit: 22. Mai 2007
Ort: Rödermark
32 Beiträge
 
Delphi 7 Professional
 
#5

Re: Varibale bei (Sender:Object) mit übergeben

  Alt 22. Mai 2007, 15:44
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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Varibale bei (Sender:Object) mit übergeben

  Alt 22. Mai 2007, 15:45
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz