Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Verstehe die Zählschleifen und VCL-Komponenten nicht-Schule! (https://www.delphipraxis.net/83898-verstehe-die-zaehlschleifen-und-vcl-komponenten-nicht-schule.html)

Tormentor32 8. Jan 2007 09:48

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Mit der Zählschleife meinst du vermutlich die for Anweisung, und die Funktioniert so:

Du deklarierst ein Variable vom Typ integer, word oder byte, z.B.:
Delphi-Quellcode:
Var i: integer
Dann überlegst du dir, wie oft du eine bestimmte Anweisung oder mehrere wiederholen willst
nehmen wir mal an, du willst zehnmal ein Messagebox anzeigen, die jeweils um 1 weiterzählt,
dann müsstest du folgenden Code anwenden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
  for i := 1 to 10 do
    showmessage(inttostr(i));
end;
Bedeutet:
Setze i auf eins, zeige i
wenn i kleiner oder gleich 10 ist,
dann zeige i und erhöhe danach
Wiederhole

Gruß Richard

Alle sind schneller als ich...

edit: klitzekleiner fehler

aengstlichesReh 8. Jan 2007 09:52

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
was ist ein messagebox?
Ich probiers mal. danke

aengstlichesReh 8. Jan 2007 09:53

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
wie überredet ich den, dass er die position der checkbuttons ändert?
irgendwas mit nem multiplikator und + hat mein lehrer gesagt *dumm kuck*

Phoenix 8. Jan 2007 09:55

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Also: Prinzipiell recht einfach.

Du musst die Controls halt in einer Schleife erstellen.

Will heissen (Achtung: Pseudocode)


Delphi-Quellcode:
var
  i:integer;
  boxen: array[0..anzahlboxen] of TCheckBox;
  positionoben: integer;
begin

  for i:=0 to (Anzahl der benötigten Checkboxen) -1 do
  begin
    boxen[i] := TCheckBox.Create(form1);
    boxen[i].Parent := form1;
    boxen[i].Top := positionoben;
    positionoben := positionsoben + 2 + boxen[i].height;
  end;
end;
Danach hast Du im Array alle boxen und die sind auch auf dem form. Wichtig ist natüprlich dass Du das array auf dem form deklarierst und nicht in der Methode, sonst hängen die Controls irgendwo im Speicher und Du kommst da so einfach nicht mehr dran.

aengstlichesReh 8. Jan 2007 10:00

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
aaaaaaalso
was sind controls? und was meinst du mit methode?
ich glaub, mit dem code kann ich was anfangen *rumprobieren geht*
Danke

Tormentor32 8. Jan 2007 10:02

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
Eine Messagebox ist eine Meldung, die in einem kleinem Fenster mit OK button ausgegeben wird.

Zu deinem Problem mit den Checkboxen:

Du solltest am Besten ein Array deklarieren, in welchem du deine Checkboxen speicherst, zum Beispiel
Delphi-Quellcode:
type TCheckBoxArray = Array[0..39] of TCheckbox // oder wieviele du brauchst

{ ... }

var
  CheckBoxArray: TCheckBoxArray; // Eine Variable deines Arrays
Jetzt kannst mit der oben genannten Forschleife jede Checkbox erstellen und werte zuweisen
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  for i := 0 to 39 do // oder deine Anzahl
    begin // hier ist die Verbundanweisung nötig, da du ja Mehrere Anweisungen innnerhalb der Schleife Machen willst
      CheckBoxArray[i] := TCheckbox.Create(Form1);
      CheckBoxArray[i].Parent := Form1;
      CheckboxArray[i].Height := WasAuchImmer;
      CheckBoxArray[i].Width := WasAuchImmer2;
      CheckboxArray[i].Top := i*(WasAuchImmer+1); // Dann sind alle Checkboxen untereinander
    end;
end;
Aber Vergiss nicht, die Checkboxen hinterher wider freizugeben mit
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: integer;
begin
  For i := 0 to 39 do // oder deine Anzahl
    CheckBoxArray[i].free;
end;
Ich hoffe, das hilft

aengstlichesReh 8. Jan 2007 10:08

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
ich hab das jetzt so gemacht:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var n: array[0..49] of TCheckBox;
    i: integer;
    n.top: integer;
begin
for i:=0 to 49 - 1 do
 begin
   n[i]:=TCheckbox.Create(Form1);
   n[i].parent:=Form1;
   n[i].left:=100;
   n[i].top:=100;
   n[i].top:= n[i].top +2 + n[i].hight;
   n[i].left:= n[i].left +2 + n[i].left;
   end;
und bekomme ne Fehlermeldung, undefinierter bezeichner n.
dann arraytyp erforderlich
unit1 kann nicht compiliert werden

außerdem wollte ich nioch frage, warum das aerray sein muss. ich dachte das soll ne menge ein und arrey ist doch ein feld, oder täusce ich mioch da?

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]

aengstlichesReh 8. Jan 2007 10:11

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
dort oben bei typ dürfen wir leider nichts schreiben ^^

aengstlichesReh 8. Jan 2007 10:14

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
was heißt das freigeben? davon hab ich noch nie gehört ^^ hat die wer gefangen? ;)

aengstlichesReh 8. Jan 2007 10:16

Re: Verstehe die Zählschleifen und VCL-Komponenten nicht-Sch
 
unterrichrt ist zuende. danke für die hilfe. habt schon ein stück geholfen *nächste woche wieder auftaucht* aber dann rtst nach 15 uhr ^^

DANKE


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz