Autor Beitrag
ololo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Fr 21.12.07 16:07 
hi

ich habe mich genau an diese anleitung gehalten:
www.delphi-library.d...verwalten_43052.html

wenn ich es, wie ich es will, auf nen shape, abänder funzt es nicht, und so wie es beschrieben is mit nem edit funzt es auch nich, ich bekomme immer die meldung:
[Fehler] Unit1.pas(73): Undefinierter Bezeichner: 'editEvent'

das kommt im diesem abschnittt vor:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 //...
      parent := self;
      left := 10;
      top := i * 25;
      name := 'edit'+IntToStr(i);
      text := '';
      OnExit := editEvent;

(also im letzten teil der erklärung)

ich hoffe ihr könnt mir sagen was ich falsch mache...ich habe bei diesem teil:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
type
  TForm1 = class(TForm)
  public
    //...
    procedure editEvent(sender : TObject);
  private
  end;

auch schon probiert, es bei "private" und direkt in die "class", also zu den anderen proceduren, hinzutun, es funzt aber nirgends :(

das erstellen funktioniert, nur halt nich mit dem event...
das event dierekt brauch ich nich, nur halt den zugriff, da ich meinen shape mit nem timer verschieben will...

pls help...

greetz
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 21.12.07 16:09 
Wird die Komponente in einer Methode for, TForm1 erzeugt?

_________________
Markus Kinzler.
ololo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Fr 21.12.07 16:24 
hier mein qt:
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:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Shape10: TShape;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Button3: TButton;
    Timer2: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure shapeEvent(sender : TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.shapeEvent(sender : TObject);
begin
  if sender is TShape then
    ShowMessage(TShape(sender).Name);
end;

procedure erstellen;
var i : Integer;
    geg : array[0..9of TShape;
    self : TComponent;

begin
   self := Form1;

  for i := 0 to 9 do
  begin
    geg[i] := TShape.Create(self);
    with geg[i] do
    begin
    Parent := Form1;  // <- Vielleicht braucht mans, vielleicht nicht...
    Left := 50+2*i;
    Top := 216;
    Width := 50;
    Height := 50;
    Name := 'Shape' + inttostr(i);
    Shape := stCircle;
    end;
    //geg[i].OnMouseMove := shapeEvent;    //wenn ich das hier drinnen lasse, bekomme ich den fehler:
                                           //[Fehler] Unit1.pas(61): Undefinierter Bezeichner: 'shapeEvent'
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   erstellen;
end;

procedure TForm1.Button2Click(Sender: TObject);
var geg : array[0..9of TShape;   //wenn ich das hier weglasse, bekomme ich ne fehlermeldung beim compilieren
                                   //aber wenns drinnen is und ich auf button2 klicke, bekomme ich die fehlermeldung:
                                   // "zugriffsverletzung bei adresse 0044e4ff in modul 'project1.exe'. lesen von  
                                   // adresse 00000065
begin
   geg[1].Left := geg[1].Left +10
end;

end.


hab den qt zum erstellen in ne eingene procedure getan, weils n paarmal gemacht werden muss...

greetz
Zorro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76

Win 2000, Win XP Pro
Delphi 7 Architect
BeitragVerfasst: Fr 21.12.07 18:31 
Zum einen ist "erstellen" keine Methode, sondern eine "freifliegende" Proc.
Zum zweiten definierst du dein Shape-Array in beiden Routinen (also der Klick-<b>Methode</b> und der ersetllen-<b>Prozedur</b> udn zum dritten hängst du in das (auskommentierte) MouseMove-Ereignis eine Proc ohne "of object" (der Senderparameter allein reicht nicht).

Greetz
Zorro
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Fr 21.12.07 19:28 
wenn du das so machst müsste es gehen
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:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Shape10: TShape;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Button3: TButton;
    Timer2: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
    geg : array[0..9of TShape; // <-----------
    procedure erstellen; // <---------------
  public
    { Public-Deklarationen }
    procedure shapeEvent(sender : TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.shapeEvent(sender : TObject);
begin
  if sender is TShape then
    ShowMessage(TShape(sender).Name);
end;

procedure TForm1.erstellen; // <-------------
var i : Integer;
    self : TComponent;

begin
   self := Form1;

  for i := 0 to 9 do
  begin
    geg[i] := TShape.Create(self);
    with geg[i] do
    begin
    Parent := Form1;  // <- Vielleicht braucht mans, vielleicht nicht...
    Left := 50+2*i;
    Top := 216;
    Width := 50;
    Height := 50;
    Name := 'Shape' + inttostr(i);
    Shape := stCircle;
    end;
    geg[i].OnMouseMove := shapeEvent; // <-------------
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   erstellen;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   geg[1].Left := geg[1].Left +10;
end;

end.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
ololo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Di 25.12.07 01:56 
danke so funzt es :D