AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCheckBox.Checked per Schleife

Ein Thema von markus5766h · begonnen am 21. Apr 2011 · letzter Beitrag vom 22. Apr 2011
Antwort Antwort
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#1

TCheckBox.Checked per Schleife

  Alt 21. Apr 2011, 20:15
Delphi-Version: 7
Hallo,

kann mir jemand verraten, warum folgender Konstrukt nicht läuft ? :

Code:
procedure TfrmHost.FormShow(Sender: TObject);
var
  i : Integer;
begin
  for i := 1 to 26 do
   if frmDetect.HddHost[i] then cbHost[i].Checked := True;
   // HddHost[i] : array[1..26] of Boolean
   // cbHost[i] : array[1..26] of TCheckBox
es wird nur der erste zutreffende Wert in HddHost umgesetzt,
bei
Code:
for i := 26 downto 1 do
. . .
entsprechend nur der letzte

HddHost[i] enthält 8 Werte = True, 18 Werte = False

ich steh' irgendwie auf dem Schlauch


. . . Problem gelöst (siehe Post #8), weiß allerdings nicht wodurch . . .
Markus H.

Geändert von markus5766h (21. Apr 2011 um 22:39 Uhr) Grund: Problem gelöst
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TCheckBox.Checked per Schleife

  Alt 21. Apr 2011, 20:23
Hallo,
läuft es ohne if besser?

Delphi-Quellcode:
procedure TfrmHost.FormShow(Sender: TObject);
var
  i : Integer;
begin
  for i := 1 to 26 do
    cbHost[i].checked := frmDetect.HddHost[i];
   // HddHost[i] : array[1..26]Boolean
   // cbHost[i] : array[1..26] of TCheckBox
Wo werden denn die Werte für frmDetect.HddHost[i] gesetzt?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: TCheckBox.Checked per Schleife

  Alt 21. Apr 2011, 20:24
if frmDetect.HddHost[i] Liefert der Ausdruck, denn einen Wahrheitswert zurück?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#4

AW: TCheckBox.Checked per Schleife

  Alt 21. Apr 2011, 20:33
if frmDetect.HddHost[i] Liefert der Ausdruck, denn einen Wahrheitswert zurück?
definitiv ja (hab' mir 'nen Memo auf's Formular gepappt und
bei True eine '1' ausgeben lassen)

@Klaus01: die Werte werden im Formular frmDetect gesetzt (Ini.ReadBool).
Markus H.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TCheckBox.Checked per Schleife

  Alt 21. Apr 2011, 20:37
@Klaus01: die Werte werden im Formular frmDetect gesetzt (Ini.ReadBool).
.. und wann, ist das Einlesen schon fertig wenn das Ereignis onShow passiert?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#6

AW: TCheckBox.Checked per Schleife

  Alt 21. Apr 2011, 20:37
Hallo,
läuft es ohne if besser?
. . .

Grüße
Klaus
ja, direkt abgefragt funktioniert's - ich möchte aber ungern (es kommen noch weitere Controls hinzu, die ebenfalls als array behandelt werden sollen) jedes
Control einzeln ansprechen.

Das Einlesen geschieht auf dem Formular frmDetect, die obige Schleifenprozedur ist
auf einer anderen Form (sonst würde ich ja ohne frmDetect aufrufen). Das Memo zum
überprüfen habe ich mir ebenfalls auf das Formular mit den CheckBoxen gelegt, die
Werte sind zum Zeitpunkt des Aufrufs vorhanden, werden nur nicht in einem
array of TCheckBox umgesetzt.
Markus H.

Geändert von markus5766h (21. Apr 2011 um 20:46 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TCheckBox.Checked per Schleife

  Alt 21. Apr 2011, 20:49
if frmDetect.HddHost[i] then cbHost[i].Checked := True; mit dem obigen Code wird die Checkbox in der Liste nur gesetzt wenn hddHost[i] true ist,
wenn er false ist hat die Checkbox einen zufälligen Wert.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#8

AW: TCheckBox.Checked per Schleife

  Alt 21. Apr 2011, 20:55
if frmDetect.HddHost[i] then cbHost[i].Checked := True; mit dem obigen Code wird die Checkbox in der Liste nur gesetzt wenn hddHost[i] true ist,
wenn er false ist hat die Checkbox einen zufälligen Wert.

Grüße
Klaus
. . . mir ging's ja in erster Linie auch nur um das Setzen (Checked) bei HddHost[i] = True, auch mit einer Erweiterung der Abfrage auf 'False' bin ich nicht weitergekommen - hab allerdings in der Zwischenzeit die Prozedur vervollständigt :
Code:
procedure TfrmHost.FormShow(Sender: TObject);
var
  i : Integer;
begin
  for i := 1 to 26 do
    begin
      if frmDetect.HddHost[i] then cbHost[i].Checked := True else cbHost[i].Checked := False;
      if frmDetect.HostEnabled[i] then
       begin
         cbHost[i].Enabled := True;
         cbHost[i].Caption := Char(i +64) + ' ' + GetDriveModelName(Char(i +64));
       end
         else
           begin
             cbHost[i].Enabled := False;
             cbHost[i].Caption := Char(i +64) + ' ';
           end;
    end;
end;
. . . und komischer Weise werden jetzt alle Checkboxen richtig gesetzt. ?
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

AW: TCheckBox.Checked per Schleife

  Alt 22. Apr 2011, 10:41
Zitat:
if frmDetect.HddHost[i] then cbHost[i].Checked := True else cbHost[i].Checked := False;
-->cbHost[i].Checked := frmDetect.HddHost[i]; Das ist nicht nur kürzer, sondern IMHO auch noch verständlicher.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#10

AW: TCheckBox.Checked per Schleife

  Alt 22. Apr 2011, 10:46
.. danke, ja ist verständlicher . . . war wohl schon etwas zu spät.
Markus H.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 Uhr.
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