[delphi] alle checkboxen op een form nagaan

Pagina: 1
Acties:

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
beste mensen,

ik heb een formulier waarop een aantal checkboxen staan. nu wil ik met een loop alle checkboxen langs gaan en controleren op aangevinkt en waarde. nu heb ik al veel artikelen en forumposts hierover gelezen maar ik kom er niet uit. voor zover ik weet staan alle afgeleiden van een TWinControl in een list, en zou je die elementen zo aan moeten kunnen spreken. maar ik krijg het niet voor mekaar. zou iemand me kunnen vertellen hoe ik over die checkboxes kan loopen?

alvast bedankt.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Delphi:
1
2
3
4
5
for i := 0 to Form1.ControlCount - 1 do
begin
  if Form1.Controls[i] is TCheckBox then
    (Form1.Controls[i] as TCheckBox).Checked := not (Form1.Controls[i] as TCheckBox).Checked;
end;

Zoiets draait als het goed is alle checkboxes om (aangevinkt wordt niet aangevinkt en andersom). Code is ongetest though, en ik heb al een tijd niks met Delphi gedaan. :P

[ Voor 10% gewijzigd door NMe op 02-10-2005 20:09 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Paul
  • Registratie: September 2000
  • Laatst online: 23:58
F1 op de woordjes ControlCount en Controls ;)
Edit: Hmm, spuit 11, en dat met zo'n korte reply :P

[ Voor 38% gewijzigd door Paul op 02-10-2005 20:10 ]

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-04 13:16
Een form heeft een property Controls die de controls bevat die op de form staan.

Daar kan je dus doorlopen, en bij ieder element kan je mbhv de is operator gaan checken of het een TCheckbox betreft of niet.

code:
1
2
3
4
5
6
7
for Indx := 0 to Self.Controls.Count - 1 do begin

   if Self.Controls[Indx] is TCheckbox then begin
          // do stuff.
   end;

end;


Dit zou je al op weg moeten kunnen helpen. Je zult er geloof ik ook wel rekening moeten mee houden, dat, als je bv een panel hebt, of een andere 'container-control', je dan de controls-collection van die panel zult moeten uitlezen om de checkboxes die op die panel staan, op te vragen. (Je zult dus een recursieve functie moeten schrijven).

edit:
Hmm.... beetje te laat. :+

[ Voor 3% gewijzigd door whoami op 02-10-2005 20:11 ]

https://fgheysels.github.io/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Hmm, op deze manier heb ik in elk geval de bevestiging dat mijn geheugen in orde is. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-04 13:16
Hmm, Controls is blijkbaar een array, en geen collection (beetje raar), dus die heeft geen Count property. Je zal dus die ControlCount property moeten gebruiken. :P

https://fgheysels.github.io/


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
-NMe- schreef op zondag 02 oktober 2005 @ 20:08:
Delphi:
1
2
3
4
5
for i := 0 to Form1.ControlCount - 1 do
begin
  if Form1.Controls[i] is TCheckBox then
    (Form1.Controls[i] as TCheckBox).Checked := not (Form1.Controls[i] as TCheckBox).Checked;
end;

Zoiets draait als het goed is alle checkboxes om (aangevinkt wordt niet aangevinkt en andersom). Code is ongetest though, en ik heb al een tijd niks met Delphi gedaan. :P
je code raised een exception, maar ik snap iig het doel. ik begrijp nu beter hoe de hiearchie in mekaar steekt en het is me zojuist gelukt om over mijn elementen heen te loopen. bedankt!

nu heb ik nog een vraagje. is het mogelijk om aan een checkbox een waarde toe te kennen (bijvoorbeeld een getal) of kun je alleen kijken of een checkbox gechecked is of niet?

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Wat voor betekenis zou zo'n waarde dan moeten hebben? Een checkbox kan alleen maar aan of uit staan. :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-04 13:16
Bij een TDBCheckbox kan je dat wel. Daarmee geef je dan aan wat er bv in de DB moet geinserted worden als de checkbox gechecked is of niet, maar ik denk niet dat dit is wat jij wil ?
Verder kan ik me ook het nut niet voorstellen om een waarde toe te kennen aan die checkbox ?

https://fgheysels.github.io/


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
ik wil eigenlijk op de een of andere manier een integer waarde aan mijn checkbox toekennen. en als de checkbox gechecked is die waarde gebruiken bij het genereren van een getal. ik wil dus een lijst checkboxen met allemaal een andere waarde en daar dan dingen mee doen. misschien gebruik ik hier het verkeerde element voor maar een checkbox leek me wel logisch. als iemand een beter alternatief heeft hoor ik het graag.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-04 13:16
Misschien is een radio-button beter ? Ik maak er iig op uit, dat je slechts 1 checkbox tegelijk wilt 'geselecteerd' hebben ? Of is dat niet zo ?

Je kan wel de Tag property van de checkbox gebruiken om er 'control-specifieke' data in te zetten.

https://fgheysels.github.io/


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
nee ik wil meerdere checkboxen tegelijk selecteren. iedere checkbox met dan zijn eigenwaarde hebben. van alles wat geselecteerd is haal ik dan met een loop de waardes op. en daar doe ik dan iets mee.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-04 13:16
Ok, dan gebruik je de Tag property van de checkbox.

https://fgheysels.github.io/


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
ok bedankt!
ik heb net nog ff snel gekeken in de delphi help en daar staat ook dat het tag attribuut geen vast doel heeft, en dat het aan de programmeur is om te bepalen wat hij er mee doet. je kan er bijvoorbeeld een integer value in opslaan. dat is dus precies wat ik wil :)
dus probleem opgelost en weer wat geleerd B) :7

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition

Pagina: 1