| Autor |
Beitrag |
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 08.11.05 13:35
Hallo,
wie kann ich in einer TCheckListBox nur einen Eintrag erlauben. Muss ich wirklich bei jedem Klick die ganze Box durchgehen und nachsehen ob nur ein Häckchen gesetzt ist, oder gibt es eine einfachere Lösung ala Multicheck:=false ?
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 08.11.05 14:13
Nimmt man nicht TRadioGroup, wenn man nur einen Eintrag erlauben will 
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 08.11.05 14:25
Titel: Eigentlich schon
aber da die Liste aus einer Datenbank kommt und sehr lang ist möchte eine brauchbare Lösung mit der auch Scrollen möglich ist. NAtürlich könnte man auch eine Radiogroup in eine Scrollbox packen, dass sieht aber sehr bescheiden aus.
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Di 08.11.05 14:36
Ich weiß ja nicht, wofür du das brauchst, aber wenn man ohnehin nur eins auswählen darf, wieso nimmst du dann nicht ne normale ListBox? Da kann man dann immer nur eine Auswählen...
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Di 08.11.05 14:44
Mal so aus dem Stehgreif.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var i,j:Integer begin for i := 0 to CheckListBox1.Items.Count - 1 do CheckListBox1.checked[i] := false; j:=CheckListBox1.ItemIndex; CheckListBox1.checked[j] := true; end; |
|
|
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 08.11.05 14:45
Mir ging es dabei um den Optischen Aspekt. Ich finde das es mit einem Häckchen besser aussieht. Aber da habe ich mich wohl verrannt. Werde es wohl mit einer normalen Listbox machen.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Di 08.11.05 14:48
Mal getestet so gehts !
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.CheckListBox1Click(Sender: TObject); var i,j:Integer; begin for i := 0 to CheckListBox1.Items.Count - 1 do CheckListBox1.checked[i] := false; j:=CheckListBox1.ItemIndex; CheckListBox1.checked[j] := true; end; |
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 08.11.05 14:51
Hallo,
wenn Dir die Optik besser gefällt, und ohne die Items durchgehen zu müssen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.CheckListBox1ClickCheck(Sender: TObject); begin with CheckListBox1 do begin if Tag <> ItemIndex then Checked[Tag] := False; Tag := ItemIndex; end; end; |
Solltest Du die Tag-Eigenschaft der CheckListBox schon anderweitig nutzen,
musst Du halt den Integer an anderer Stelle außerhalb der Prozedur speichern.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 08.11.05 14:59
Danke Lannes.  Genau das habe ich gesucht.
@Blackheart666
Auf die Variante mit dem durchgehen der Items war ich schon selbst gekommen. Dauert aber bei einer langen Liste zu lange.
Danke für eure Hilfe
|
|