Autor |
Beitrag |
Ich Bins
      
Beiträge: 197
Win XP Prof
D5 Prof
|
Verfasst: So 05.10.03 23:45
Hallo! Habe da ein Problem und weis nicht wie ich es hinkriegen soll
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| implementation
var Speed:Array[1..10,1..10] of TSpeedButton;
procedure Testprozedur; begin ...... end;
procedure TForm1.FormCreate(Sender: TObject); var x,y : Integer; begin for x:=1 to 10 do for y:=1 to 10 do begin Speed[x,y]:=TSpeedButton.Create(Self); Speed[x,y].OnClick:=TestProzedur; end; end; |
Wie kriege ich es jetzt hin, dass ich in der 3. Zeile von unten jedem SpeedButton die Prozedur Testprozedur als OnClick-Ereignis zuweisen kann, ich kann sie ja nicht im Obejktinspektor zuweisen!
Danke schon mal im Vorraus für die Hilfe!
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 05.10.03 23:58
Hallo und herzlich Willkommen im Forum!
Deine Prozedur muss erstens eine Methode sein, dass heißt zu einem Objekt gehören, beispielsweise TForm1. Außerdem muss sie zu einem TNotifyEvent passen, das heißt, es muss der Parameter Sender : TObject übergeben werden.
Bis dann
Peter
P.S.: Bitte verwende für Deinen Code im Forum demnächst Delphi-Tags, das erhöht die Lesbarkeit!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ich Bins 
      
Beiträge: 197
Win XP Prof
D5 Prof
|
Verfasst: Mo 06.10.03 20:27
Und wie müsste ich das machen wenn ich der Test-Prozedur noch die Werte x und y übergeben will? Ich hab nämlich schon probiert eine neuen Button zu machen, bei dem dann eine OnClick-Prozedur erstellet und im FormCreate diese Prozedur jedem SpeedButton zugeordnet.
Allerdings kann ich so keine Werte x und y übergeben.
Ich will also irgendwie eine Testprozedur haben, die erkennt, von welchem SpeedButton sie aufgerufen wurde, weis aber absolut nicht wie das geht, hab grade erst mit Delphi angefangen!
|
|
kasi
      
Beiträge: 37
Win XP
D5 Ent
|
Verfasst: Mo 06.10.03 21:36
Dafür kannst Du die Eigenschaft Tag des TSpeedButton benutzen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| procedure TForm1.SpeedButton1Click(Sender: TObject); var p: TSmallPoint; begin p := TSmallPoint(TSpeedButton(Sender).Tag); ShowMessage('Das war SpeedButton: '+IntToStr(p.x)+'/'+IntToStr(p.y)); end;
procedure TForm1.FormCreate(Sender: TObject); var x,y : Integer; p: TSmallPoint; begin for x:=1 to 10 do for y:=1 to 10 do begin Speed[x,y]:=TSpeedButton.Create(Self); Speed[x,y].OnClick:=SpeedButton1Click; Speed[x,y].Top := y*25; Speed[x,y].Left := x*25; Speed[x,y].Parent := Self; Speed[x,y].Caption := IntToStr(x)+'/'+IntToStr(y); p.x := x; p.y := y; Speed[x,y].Tag := integer(p); end; end; |
KASI
Moderiert von UGrohne: Code- durch Delphi-Tags ersetzt
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 06.10.03 21:39
Schicke Lösung!
//edit: was dagegen, wenn ich Dich mit der Lösung (irgendwann) in meinem Tutorial zu Arrays und Komponentenarrays zitiere?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Zuletzt bearbeitet von Christian S. am Mo 06.10.03 21:40, insgesamt 1-mal bearbeitet
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Mo 06.10.03 21:39
Gebe jedem button ein TAG (integer) mit, andem du erkennen kannst, welcher der Buttons gedrückt wurde.
bsp:
Delphi-Quelltext 1: 2: 3: 4:
| MyForm = Class(TForm) procedure MyButtonClick(Sender:TObjekt); ... end; |
in deiner For-Schleife:
Delphi-Quelltext 1: 2:
| Speed[][].OnClick := MyButtonClick; Speed[][].Tag:= 1; | ...
in der Methode Click;
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure MyForm.MyButtonClick(); begin with sender as TSpeedButton do case Tag of 1: 2: end; end; |
// sind nur Fragmente, so aus'm Schädel geschrieben
grez
msch
//EDIT Da war wohl jemand schneller 
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Zuletzt bearbeitet von MSCH am Di 07.10.03 15:32, insgesamt 1-mal bearbeitet
|
|
kasi
      
Beiträge: 37
Win XP
D5 Ent
|
Verfasst: Mo 06.10.03 21:52
Zitat: | was dagegen, wenn ich Dich mit der Lösung (irgendwann) in meinem Tutorial zu Arrays und Komponentenarrays zitiere?
|
kein Problem.
KASI
|
|
Ich Bins 
      
Beiträge: 197
Win XP Prof
D5 Prof
|
Verfasst: Di 07.10.03 16:45
Thx very much, klappt jetzt wunderbar
|
|