/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
TCheckListBox
Fra : Lars Holm Thomsen


Dato : 09-07-04 16:24

Jeg har to spørgsmål til TCheckListBox med 3 kolonner:

Spg. 1:
Når jeg skriver:
CheckListBox1.items.add('Tekst1'Î'Tekst2'Î''Tekst3');
....bliver den nye linie opdelt i de tre kolonner i en alm TListBox, men det virker ikke i
TCheckListBox. Her bliver det blot til: "Tekst1|Tekst2|Tekst3"!

Hvad gør jeg galt?


Spg.2:
Jeg kan sætte kolonnebredden med TabWidth, men den første kolonne behøver ikke at fylde
særligt meget - kan man sætte individuelle kolonnebredder?


Lars

 
 
Harald (10-07-2004)
Kommentar
Fra : Harald


Dato : 10-07-04 10:29

"Lars Holm Thomsen" <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> skrev i en
meddelelse news:64ete057assp6a1lccni0lfkurr12naqag@4ax.com...
> Jeg har to spørgsmål til TCheckListBox med 3 kolonner:
>
> Spg. 1:
> Når jeg skriver:
> CheckListBox1.items.add('Tekst1'Î'Tekst2'Î''Tekst3');
> ...bliver den nye linie opdelt i de tre kolonner i en alm TListBox, men
det virker ikke i
> TCheckListBox. Her bliver det blot til: "Tekst1|Tekst2|Tekst3"!
>
> Hvad gør jeg galt?
>
>
> Spg.2:
> Jeg kan sætte kolonnebredden med TabWidth, men den første kolonne behøver
ikke at fylde
> særligt meget - kan man sætte individuelle kolonnebredder?

Jeg har ikke lige nogle svar men kun et forslag. Hvad med at bruge ListView
i stedet, i ListView kan du sætte bredden på de enkelte kolonner og der er
også mulighed for en checkbox.

Mvh
HK



Lars Holm Thomsen (10-07-2004)
Kommentar
Fra : Lars Holm Thomsen


Dato : 10-07-04 10:36

On Sat, 10 Jul 2004 11:29:23 +0200, "Harald" <news10@-REMOVE-THIS-kroning.dk> wrote:


>Jeg har ikke lige nogle svar men kun et forslag. Hvad med at bruge ListView
>i stedet, i ListView kan du sætte bredden på de enkelte kolonner og der er
>også mulighed for en checkbox.

Okay, det prøver jeg!

Jeg tror, det må være en bug i CheckListbox, for laver jeg en knap, som indsætter tre
kolonner i en Listbox, fungerer det som nævnt som det skal, men erstatter jeg Listboxen
med en CheckListBox med samme navn (altså uden at ændre nogen kode) opstår problemet!

Tak for dit tip, jeg vil vende tilbage!

Lars

Lars Holm Thomsen (10-07-2004)
Kommentar
Fra : Lars Holm Thomsen


Dato : 10-07-04 12:53

On Sat, 10 Jul 2004 11:35:57 +0200, Lars Holm Thomsen
<aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> wrote:


>Tak for dit tip, jeg vil vende tilbage!

Det ser jo ud til at virke fint!

Hvis jeg ønsker at max tre checkboxe må være checked samtidig - hvordan styrer jeg lige
det?

Lars

Harald (10-07-2004)
Kommentar
Fra : Harald


Dato : 10-07-04 13:53

"Lars Holm Thomsen" <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> skrev i en
meddelelse news:5pfve0ds0fhfj03qi9aja3kp0rppq7vjsa@4ax.com...
> On Sat, 10 Jul 2004 11:35:57 +0200, Lars Holm Thomsen
> <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> wrote:
>
>
> >Tak for dit tip, jeg vil vende tilbage!
>
> Det ser jo ud til at virke fint!
>
> Hvis jeg ønsker at max tre checkboxe må være checked samtidig - hvordan
styrer jeg lige
> det?

Det tror jeg man er nød til at gøre manuelt dvs. enten have en tæller for
hvor mange der er checked eller hvis der ikke er ret mange items i listen så
løbe listen igennem og tælle sammen.

/HK



Lars Holm Thomsen (10-07-2004)
Kommentar
Fra : Lars Holm Thomsen


Dato : 10-07-04 14:22

On Sat, 10 Jul 2004 14:52:47 +0200, "Harald" <news10@-REMOVE-THIS-kroning.dk> wrote:


>Det tror jeg man er nød til at gøre manuelt dvs. enten have en tæller for
>hvor mange der er checked eller hvis der ikke er ret mange items i listen så
>løbe listen igennem og tælle sammen.


Ja, det er jeg med på, jeg benytter det sidste, for jeg har kun 10.

Problemet er, at Listview.GetItemAt eller ListView.GetNearestItem ikke virker - returnerer
blot "nil"!

Hvis jeg nemlig kunne få returneret ListItem kunne jeg blot skrive ListItem.Checked:=false
hvis der efter et klik på en checkbox blev talt fire checkede!

Har du en løsning på dette

Harald (10-07-2004)
Kommentar
Fra : Harald


Dato : 10-07-04 14:46

"Lars Holm Thomsen" <aslaktoke-RE-MO-VE-toke@yahoo.NOTdk> skrev i en
meddelelse news:b3rve0la2f6o04lrbtuuq8odii3avfatnp@4ax.com...
> On Sat, 10 Jul 2004 14:52:47 +0200, "Harald"
<news10@-REMOVE-THIS-kroning.dk> wrote:
>
>
> >Det tror jeg man er nød til at gøre manuelt dvs. enten have en tæller for
> >hvor mange der er checked eller hvis der ikke er ret mange items i listen

> >løbe listen igennem og tælle sammen.
>
>
> Ja, det er jeg med på, jeg benytter det sidste, for jeg har kun 10.
>
> Problemet er, at Listview.GetItemAt eller ListView.GetNearestItem ikke
virker - returnerer
> blot "nil"!
>
> Hvis jeg nemlig kunne få returneret ListItem kunne jeg blot skrive
ListItem.Checked:=false
> hvis der efter et klik på en checkbox blev talt fire checkede!
>
> Har du en løsning på dette

F.eks. denne kode un-checker alle dem der er checked:

var
i : integer;
begin
for i:=0 to ListView.Items.Count-1 do
if ListView.Items[i].Checked then
ListView.Items[i].Checked:=false;
end;

Eller hvis du f.eks. laver denne OnChange procedure for din ListView:

procedure TForm1.ListViewChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
var
i,CheckCount : integer;
begin
CheckCount:=0;
for i:=0 to ListView.Items.Count-1 do
if ListView.Items[i].Checked then
inc(CheckCount);
if CheckCount>3 then
begin
Item.Checked:=false;
ShowMessage('Der er allerede 3 checked');
end;

end;

/HK



Lars Holm Thomsen (10-07-2004)
Kommentar
Fra : Lars Holm Thomsen


Dato : 10-07-04 15:45

On Sat, 10 Jul 2004 15:45:36 +0200, "Harald" <news10@-REMOVE-THIS-kroning.dk> wrote:


>
>Eller hvis du f.eks. laver denne OnChange procedure for din ListView:
>
>procedure TForm1.ListViewChange(Sender: TObject; Item: TListItem;
> Change: TItemChange);
>var
> i,CheckCount : integer;
>begin
> CheckCount:=0;
> for i:=0 to ListView.Items.Count-1 do
> if ListView.Items[i].Checked then
> inc(CheckCount);
> if CheckCount>3 then
> begin
> Item.Checked:=false;
> ShowMessage('Der er allerede 3 checked');
> end;
>
>end;


Bravo, simpelt! Hvorfor... tænkte jeg ikke selv på det???

Tak for hjælpen!

Lars

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste