Ga naar inhoud

Ik geef het op!!!! Help me! (Delphi)


anoniem

Aanbevolen berichten

Hoi DelphiFreakzzzzz, ik heb un probleempje. ik heb een veld van 25 checkboxen, deze staan 5 bij 5. De nummering gaat als volgt: CB00 CB01 CB02 CB03 CB04 CB05 CB06 CB07 Cb08 Cb09 Cb10 CB11 CB12 CB13 CB14 CB15 CB16 CB17 Cb18 Cb19 CB20 CB21 CB22 CB23 CB24 (CB = CheckBox) Nu wil ik hebben, zodra ik CB11 aanvink, dat dan de volgende Checkboxen ook aangevinkt moeten worden: CB06, CB10, CB12 en CB16. Dus met andere woorden, de 4 CB-en die er omheen liggen moeten dan ook aangevinkt worden. Maar indien er een CB die zich aan de kant bevindt. Bijv. CB05. Dan moeten CB00, CB06 en CB10 aangevinkt worden. Of CB24 bijv. dan moeten CB19 en CB23 aangevinkt worden. Maar indien er 1 of meerdere CB-en al aan staat gevinkt, dan moet deze uitgevinkt worden. - X X - - X - X X X X X - X - X - - X X - X X - X Als ik nu dus op CB07 klik, dan worden CB06 en CB12 aangevinkt en dan worden CB02, CB07 en CB08 uitgevinkt. En dan krijg je het volgende plaatje: - X - - - X X - - X X X X X - X - - X X - X X - X Kan iemand me helpen met dit probleem. Ik ben hier al een week mee bezig en ik kom er niet echt helemaal uit.
Link naar reactie
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) CB01: TCheckBox; CB02: TCheckBox; CB03: TCheckBox; CB04: TCheckBox; CB05: TCheckBox; CB06: TCheckBox; CB07: TCheckBox; CB08: TCheckBox; CB09: TCheckBox; CB10: TCheckBox; CB11: TCheckBox; CB12: TCheckBox; CB13: TCheckBox; CB14: TCheckBox; CB15: TCheckBox; CB16: TCheckBox; CB17: TCheckBox; CB18: TCheckBox; CB19: TCheckBox; CB20: TCheckBox; CB21: TCheckBox; CB22: TCheckBox; CB23: TCheckBox; CB24: TCheckBox; CB25: TCheckBox; procedure FormShow(Sender: TObject); procedure CBclick(Sender: TObject); private { Private declarations } public { Public declarations } mouseclick : boolean; matrix: array[0..4, 0..4] of boolean; procedure ToggleCB(row,col:integer); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); var i,j:integer; begin j:=1; for i:=0 to Form1.ComponentCount-1 do if Form1.Components[i] is TCheckBox then begin (Form1.Components[i] as TCheckBox).Caption := IntToStr(j); matrix[(j-1) DIV 5, (j-1) MOD 5] := (Form1.Components[i] as TCheckBox).Checked; Inc(j); end; mouseclick := TRUE; end; procedure TForm1.CBclick(Sender: TObject); var i: integer; y,x:integer; begin if not mouseclick then exit; i := StrToInt( Copy( (sender as TCheckBox).Name, 3, 2) ); // checkbox nummer y := (i-1) DIV 5; // row x := (i-1) MOD 5; // column mouseclick := FALSE; if (x + 1) < 5 then ToggleCB(y, x+1); if (x - 1) >= 0 then ToggleCB(y, x-1); if (y + 1) < 5 then ToggleCB(y+1, x); if (y - 1) >= 0 then ToggleCB(y-1, x); mouseclick := TRUE; end; procedure TForm1.ToggleCB(row,col:integer); var cbname: string; cbnum: integer; cb: TCheckBox; begin cbnum := row*5 + col+1; if cbnum < 10 then cbname := 'CB0' + IntToStr(cbnum) else cbname := 'CB' + IntToStr(cbnum); if (FindComponent(cbname) is TCheckBox) then cb := FindComponent(cbname) as TCheckBox; cb.Checked := not cb.Checked; end; end. [ Dit Bericht is bewerkt door: P M op 2002-02-15 21:44 ] [ Dit Bericht is bewerkt door: P M op 2002-02-15 21:44 ]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...