Entwickler-Ecke
Sonstiges (Delphi) - Shape erstellen + OnClick Prozedure ????
FaFu - Do 20.11.08 16:30
Titel: Shape erstellen + OnClick Prozedure ????
Hallo,
Ich würde gerne ein Shape erstellen und diesem Shape eine OnClickProzedur zuweisen oder OnMouseDown , halt was womit man was auslösen kann, wenn ich daraufklicke.
Und zwar hab ich um die 20 Shapes die mit der Laufzeit über BlaShape[i] := TShape.Create(Self) gemacht werden usw. was auch funktioniert. Nun will ich, dass jedem dieser Shapes für i := 1 to 20 eine Prozedur zugewiesen wird die nur ausgelöst wird wenn ich auf das Shape klicke. Ich würde das ganze gerne ohne Hook machen also nur mit bereits in Delphi vorhandenen Befehlen.
Kann einer helfen?
mfG
FaFu - Do 20.11.08 16:32
Titel: Re: Shape erstellen + OnClick Prozedure ????
Eigentlich ist die procedure ja schon vorhanden, nur weiß ich nicht wie ich sie ändern kann. . .
JayEff - Do 20.11.08 16:34
Delphi-Quelltext
1:
| BlaShape[i].onMouseDown := SomeProcedure |
Hierbei muss SomeProcedure auch mit onMouseDown kompatibel sein, sprich den gleichen Kopf haben.
PS: Doppelposts bitte durch den Editbutton vermeiden :)
Edit: Ausserdem muss die Prozedur eine Methode sein, das erreichst du ganz einfach indem du sie z.B. deiner Form gibst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| type TForm1 = class(TForm) Button1: TButton; Shape1: TShape; procedure Button1Click(Sender: TObject); procedure test(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private
procedure TForm1.test (Blah wie oben); begin end; |
FaFu - Do 20.11.08 16:56
Na ja das Problem ist, dass wenn ich Array benutze ich ja [] benutze und das funktioniert dann nicht, wenn ich BlaShape[i]OnMouseDown benutze . . .
JayEff - Do 20.11.08 16:59
FaFu hat folgendes geschrieben : |
Na ja das Problem ist, dass wenn ich Array benutze ich ja [] benutze und das funktioniert dann nicht, wenn ich BlaShape[i]OnMouseDown benutze . . . |
hast du den Punkt zwischen ] und O nun auf Grund eines Tippfehlers vergessen? Falls ja, sag bitte, was *genau* nicht funktioniert (Fehlermeldung?). Falls nein, Punkt rein und das geht :)
Edit: Falls ja: bitte auch Code posten zwecks fehleranalyse.
FaFu - Do 20.11.08 17:47
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: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| type TForm1 = class(TForm) WeissBtn: TButton; Timer1: TTimer; SchwarzBtn: TButton; Timer2: TTimer; BotBtn: TButton; SpielerBtn: TButton; Image1: TImage; Timer3: TTimer; procedure WeissBtnClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); procedure SchwarzBtnClick(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure SpielerBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer3Timer(Sender: TObject); procedure test(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private public end;
var Form1: TForm1; i, k, xy: Integer; p: TPoint; Weiss: Array [0..899] of TShape; Schwarz: Array [0..899] of TShape; implementation
{$R *.dfm}
procedure TForm1.WeissBtnClick(Sender: TObject); begin GetCursorPos(p); SetCursorPos(200,200); i := i + 1; Weiss[i] := TShape.Create(Self); Weiss[i].Parent := Self; Weiss[i].Left := 205; Weiss[i].Top := 185; Weiss[i].Width := 33; Weiss[i].Height := 33; Weiss[i].Shape := stCircle; Weiss[i].Brush.Color := clWhite; Weiss[i].Brush.Style := bssolid; Weiss[i].OnMouseDown := Test; Timer1.Enabled := true; WeissBtn.Hide; end; procedure Form1.Test(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Close; end; |
Das ganze sieht nun so Aus ^^
Das funktioniert nicht ^^ also beim starten kommt folgende Fehlermeldung:
[Error] Informatik.pas(60): Identifier redeclared: 'Form1'
[Error] Informatik.pas(63): '(' expected but ';' found
JayEff - Do 20.11.08 18:01
FaFu hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.Test(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Close; end; | |
TForm, nicht Form :)
FaFu - Do 20.11.08 18:04
Danke ! ! ! ! ! ! ! ! !
Oh man bin ich schusselig ^^ Vielen Dank für die Zeit, die du dir genommen hast :P
MfG
JayEff - Do 20.11.08 18:09
Kein problem, immer gerne ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!