CheckListBox - Items ?

Nohh

Erfahrenes Mitglied
Hallo,
ich möchte in Delphi folgendes bauen:

Ich habe eine CheckListBox1 - in den Items habe ich etwas reingeschrieben einmal: test1 und test2.
Ich nun einen Button (Edit1) der eine Showmessage ausgibt wenn eins dieser beiden markiert wird. Dies habe ich mit if-funktion gemacht.

Code:
if checklistbox1.items := '1';
then
showmessage ('Person geblockt!');
if checklistbox1.lines := '2' then
showmessage ('Person hat sie entblockt!');
Was ist nun daran falsch?

MfG
Nohh
 

Online-Skater

Erfahrenes Mitglied
Hallo die Checkbox besitzt eine Eigenschaft die sich "checked" schimpft, benutze sie.
Code:
if checklistbox1.items.checked...';

mfg
 

Hellie

Erfahrenes Mitglied
Nun ja, damit du deine Fehler erkennst (ich hoffe, dass du das durch die Erklärungen kannst, ansonsten frag bitte nochmal!):

Zunächst kräuselt es mir die Fußnägel hoch, wenn ich sehe, mit welchen Komponenten du spielt, ohne einen Vergleich programmieren zu können. ":=" ist eine Zuweisung, "=" ist ein Vergleich. Bei einer Zuweisung wird der Wert aus einer Variablen auch in die andere Variable übernommen, beim Vergleich behalten beide ihren Wert, aber es wird halt verglichen, ob beide Werte übereinstimmen, und dementsprechend gibt dieser Vergleich sogesehen auch etwas aus (true bzw. false). Logisch, dass nur gleichwertige Dinge miteinander verglichen werden können. Da liegt dein erster Fehler.

Dann hast du ja eine deutsche Delphi-Version. Die gibt dir beim Compilieren gute und verständliche Hinweise. Bei mir erscheint der Fehler "[Fehler] Unit1.pas(30): Inkompatible Typen: 'Char' und 'TStrings'" Das heißt, dass Checklistbox1.items nicht so vorliegt, wie du es gern hättest, nämlich als Char (Character, also einzelnes Zeichen). Es liegt als TStrings vor, also als geordnete Reihe von Zeichenketten. Die einfachste Variante ist, sich eine dieser Zeichenketten über den Index zu beschaffen: Checklistbox1.items[Index]. Der Index beginnt bei 0 und ist ein Integer-Wert. Damit dürfte auch klar sein, wie man besonders schnell alle Items durchlaufen kann ;)

Ähnlich geht es auch mit der Eigenschaft Checked, auf die man auch über Checklistbox1.Checked[index] gehen kann.

Vielleicht konnte ich ja ein wenig Licht ins Dunkle bringen...

Hellie