Autor Beitrag
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 08.11.05 14:44 
Mal so aus dem Stehgreif.

ausblenden 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 08.11.05 14:48 
Mal getestet so gehts !

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 08.11.05 14:51 
Hallo,

wenn Dir die Optik besser gefällt, und ohne die Items durchgehen zu müssen:
ausblenden 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



BeitragVerfasst: 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