Autor Beitrag
rmasterb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 71



BeitragVerfasst: Do 17.04.03 17:01 
Wahrscheinlich ist sehr schnell zu helfen, aber leider schaffe ich es nicht alleine. Ich hab dynamisch eine Checkbox (name := mannschaft) createt und wollte der Methode mannschaft.onclick eine Procedure zuweisen, jedoch schreibt der immer :"[Fehler] Unit2.pas(30): Nicht genügend wirkliche Parameter". Kein Plan was ich falsch mache :nixweiss:

mein zweites kleines Problem ist, dass er die checkbox nicht als solches erkennt und der immer schreibt:"[Fehler] Unit2.pas(75): Undefinierter Bezeichner: 'mannschaft'"

was machei ich falsch???

hier ist nochmal der code:
ausblenden volle Höhe 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:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm2 = class(TForm)
    WKEigenschaft: TGroupBox;
    OK: TButton;
    Geret: TPanel;
    procedure FormCreate(Sender: TObject);
  private
    procedure clicken(Sender: TObject);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  mannschaft,einzel : tcheckbox;
implementation

{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
// hier ist der Fehler NR.1
mannschaft.OnClick = clicken;

mannschaft := tcheckbox.Create(self);
mannschaft.Ctl3D:=true;
mannschaft.Width := 125;
mannschaft.Name := 'mannschaft';
mannschaft.Caption := 'Mannschftswettkampf';
mannschaft.Color:=clBtnFace;
{WKEigenschaft ist eine Groupbox in der die checkbox ist}
mannschaft.ParentWindow := WKEigenschaft.Handle;
mannschaft.Top := 32;
mannschaft.Left := 16;

einzel := tcheckbox.Create(self);
einzel.Ctl3D:=true;
einzel.Width := 125;
einzel.Name := 'einzel';
einzel.Caption := 'Einzelwettkampf';
einzel.Color:=clBtnFace;
einzel.ParentWindow := WKEigenschaft.Handle;
einzel.Top := 32;
einzel.Left := 160;
end;

procedure TForm2.clicken(Sender: TObject);
begin
 // hier ist der Fehler NR.2 
 if WKEigenschaft.mannschaft.checked then WKEigenschaft.einzel.Enabled:=false
  else WKEigenschaft.einzel.Enabled:=true;
end;
end.


ich nehme an, dass es grundlegende Fehler sind und da ich mein ganzes Prog mit dynamischen Komponenten erstellen will, sollte ich sollte ich schon wissen was ich da dummes gemacht hab.
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Do 17.04.03 17:16 
Hallo rmasterb!

Dein Quelltext stimmt bis auf eine winzige aber wichtige Ausnahme: Die Zuweisung des OnClick-Ereignisses sollte erst nach der Erstellung des Objektes kommen, also nachmannschaft := tcheckbox.Create(self);Dann sollte es klappen!
Ach, ich sehe gerade das auch noch ein zweiter Fehler vorkommt. Da deine Checkbox manschaft eine globale Variable ist und keine Eingeschaft, darfst du sie auch nicht wie eine "Untereigenschaft" von WKEigenschaft ansprechen. Also lass das WKEigenschaft. weg und es sollte klappen!

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Do 17.04.03 17:17 
Hi,

Fehler Nr. 1:

Du versuchst auf die CheckBox Mannschaft zuzugreifen bevor du diese createst. Schreibe die Anweisung nach der Create-Anweisung

Fehler Nr. 2:

ausblenden Quelltext
1:
2:
3:
WKEigenschaft.mannschaft.checked   // falsch
....
mannschaft.checked                        // richtig


Auch wenn WKEigenschaft der Parent ist. Die komponente gehört zur Form.


MFG

- Ernesto -


Zuletzt bearbeitet von ErnestoChe am Do 17.04.03 17:20, insgesamt 3-mal bearbeitet
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Do 17.04.03 17:18 
da war ein schneller :lol:
rmasterb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 71



BeitragVerfasst: Do 17.04.03 20:38 
ja also danke,dass ihr mir den zweiten fehler beseitigt habt :D

ABER: Fehler1 kommt immer noch der will irgend was hinter den onclick haben. möglicherweise irgend welche klammern??

hmmm?? vieleicht ein tippfehler??
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Do 17.04.03 21:24 
Hi,

du hast den ":" vor dem "=" vergessen

ausblenden Quelltext
1:
mannschaft.OnClick := clicken;					


MFG

- Ernesto -
rmasterb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 71



BeitragVerfasst: Fr 18.04.03 07:20 
:oops: ich glaube da hätte man auch selber drauf kommen können

wahrscheinlich hatte das mit dem := nicht gefunzt weil ich die zuweisung vor dem create gemacht habe.

danke an alle jetzt sollte nix mehr schief gehen