Autor Beitrag
FaFu
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 20.11.08 16:30 
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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 20.11.08 16:32 
Eigentlich ist die procedure ja schon vorhanden, nur weiß ich nicht wie ich sie ändern kann. . .
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 20.11.08 16:34 
ausblenden 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:

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 20.11.08 16:59 
user profile iconFaFu hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 20.11.08 17:47 
ausblenden volle Höhe 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
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i, k, xy: Integer;
  p: TPoint;
  Weiss: Array [0..899of TShape;
  Schwarz: Array [0..899of 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;  // Hier ist der erste Error, nach Form1.
      Shift: TShiftState; X, Y: Integer);
begin
  Close;                                                          //Hier ist der 2. Error nach 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 20.11.08 18:01 
user profile iconFaFu hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Test(Sender: TObject; Button: TMouseButton;  // Hier ist der erste Error, nach Form1.
      Shift: TShiftState; X, Y: Integer);
begin
  Close;                                                          //Hier ist der 2. Error nach Close;
end;


TForm, nicht Form :)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
FaFu Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 20.11.08 18:09 
Kein problem, immer gerne ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.