Xojo Developer Conference
25/27th April 2018 in Denver.
MBS Xojo Conference
6/7th September 2018 in Munich, Germany.

Listbox-Checkbox (Real Studio network user group Deutschland Mailinglist archive)

Back to the thread list
Previous thread: R3: Webapp startet nicht
Next thread: Listbox-Scroll-Position automatisch setzen


Probleme mit String Bearbeitung   -   Markus Schnell
  Listbox-Checkbox   -   nobe
   Re: Listbox-Checkbox   -   Stefan Mettenbrink
    Re: Listbox-Checkbox   -   nobe
    Re: Listbox-Checkbox   -   nobe

Listbox-Checkbox
Date: 28.08.11 09:37 (Sun, 28 Aug 2011 10:37:59 +0200)
From: nobe
Hallo, in einer listbox mit checkboxen wird die letzte position falsch
angezeigt: klicke ich nämlich beim 5. namen in die anwesend-spalte, dann
wird dies als 'entschuldigt' angezeigt. Warum ?? Bug ??
Ich füge mal den code bei.

Im open-event steht:

me.DeleteAllRows
me.ColumnType(1) = 2
me.ColumnType(2) = 2
for nm as integer = 1 to 5
name = "Alfa,Bravo,Charly,Delta,Fox"
me.AddRow NthField(name,",",nm)
next
z = 0

und im cellklick-event:

if column = 1 then
me.CellCheck(row,2) = false
elseif column = 2 then
me.CellCheck(row,1) = false
end
z = z+1
if z > 5 then ' für den fall eines fehleintrags
z = 5
if me.CellCheck(0,1) = true then
tn1 = me.cell(0,0)
Else
tn2 = me.cell(0,0)
end
if me.CellCheck(1,1) = true then
tn1 = tn1 + chr(44) + me.cell(1,0)
Else
tn2 =tn2 + chr(44) + me.cell(1,0)
end
if me.CellCheck(2,1) = true then
tn1 = tn1 + chr(44) + me.cell(2,0)
Else
tn2 =tn2 + chr(44) + me.cell(2,0)
end
if me.CellCheck(3,1) = true then
tn1 = tn1 + chr(44) + me.cell(3,0)
Else
tn2 =tn2 + chr(44) + me.cell(3,0)
end
if me.CellCheck(4,1) = true then
tn1 = tn1 + chr(44) + me.cell(4,0)
Else
tn2 =tn2 + chr(44) + me.cell(4,0)
end

' führende kommata entfernen
if left(tn1,1) = chr(44) then
tn1 = right(tn1,len(tn1)-1)
end
tn3 = "Anwesend: " + tn1
if left(tn2,1) = chr(44) then
tn2 = right(tn2,len(tn2)-1)
end
tn4 = "Entschuldigt: " + tn2
TextArea1.text = tn3 + chr(13) + tn4
end

Re: Listbox-Checkbox
Date: 28.08.11 10:51 (Sun, 28 Aug 2011 11:51:07 +0200)
From: Stefan Mettenbrink
nobe wrote:

> Hallo, in einer listbox mit checkboxen wird die letzte position falsch
> angezeigt: klicke ich nämlich beim 5. namen in die anwesend-spalte,
> dann wird dies als 'entschuldigt' angezeigt. Warum ?? Bug ??
> Ich füge mal den code bei.

Code beifügen ist immer gut!

So wie es aussieht, kummt erst der CellKlick-Event und danch wird erst
CellCheck auf True gesetzt. Ist etwas unglücklich.

So funktioniert es bei mir:
dim i as integer
dim s1,s2 as String

if me.CellCheck(row,column)=true then
if column = 1 and me.CellCheck(row,2)=true then
me.CellCheck(row,2) = false
elseif column = 2 and me.CellCheck(row,1)=true then
me.CellCheck(row,1) = false
end
end

s1="Anwesend: "
s2="Entschuldigt: "
for i=0 to me.ListCount-1
if i=row then
if me.CellCheck(row,column)=false then
s1=s1+me.Cell(i,0)+","
else
s2=s2+me.Cell(i,0)+","
end
else
if me.CellCheck(i,1)=true then
s1=s1+me.Cell(i,0)+","
else
s2=s2+me.Cell(i,0)+","
end
end
next

TextArea1.text = left(s1,len(s1)-1)+EndOfLine+left(s2,len(s2)-1)

MfG, Metti.

Re: Listbox-Checkbox
Date: 29.08.11 16:12 (Mon, 29 Aug 2011 17:12:02 +0200)
From: nobe
Hallo Metti,
ich habe mir dein beispiel angesehen, habe dazu 2 anmerkungen/fragen: 1.
beide checkboxen einer reihe können angeklickt werden, was bei mir nicht
der fall ist (entweder-oder) und 2. das textarea-feld schreibt jeden
schritt bis zum endgültigen ergebnis mit.

Ferner schreibst du, dass in meinem code erst der cellklick kommt und
dann erst wird cellcheck auf true gesetzt. Ich habe deshalb jetzt mal
einen anderen weg versucht und zwar wie folgt:


for i = 0 to me.ListCount-1
if me.CellState(i,1) = CheckBox.CheckedStates.checked then
tn1 = tn1+chr(44)+me.cell(i,0)
elseif me.CellState(i,2) = CheckBox.CheckedStates.Checked then
tn2 = tn2+chr(44)+me.cell(i,0)
end
next

Das klappt bei meinen 5 reihen auf die letzte, die überhaupt nicht
erfasst wird. Mit dem debugger finde ich nichts heraus. Also nochmals
die frage: bug in meinem kopf/code oder der software ??

Am 28.08.11 11:51, schrieb Stefan Mettenbrink:
> nobe wrote:
>
>> Hallo, in einer listbox mit checkboxen wird die letzte position
>> falsch angezeigt: klicke ich nämlich beim 5. namen in die
>> anwesend-spalte, dann wird dies als 'entschuldigt' angezeigt. Warum
>> ?? Bug ??
>> Ich füge mal den code bei.
>
> Code beifügen ist immer gut!
>
> So wie es aussieht, kummt erst der CellKlick-Event und danch wird erst
> CellCheck auf True gesetzt. Ist etwas unglücklich.
>
> So funktioniert es bei mir:
> dim i as integer
> dim s1,s2 as String
>
> if me.CellCheck(row,column)=true then
> if column = 1 and me.CellCheck(row,2)=true then
> me.CellCheck(row,2) = false
> elseif column = 2 and me.CellCheck(row,1)=true then
> me.CellCheck(row,1) = false
> end
> end
>
> s1="Anwesend: "
> s2="Entschuldigt: "
> for ito me.ListCount-1
> if i=row then
> if me.CellCheck(row,column)úlse then
> s1=s1+me.Cell(i,0)+","
> else
> s2=s2+me.Cell(i,0)+","
> end
> else
> if me.CellCheck(i,1)=true then
> s1=s1+me.Cell(i,0)+","
> else
> s2=s2+me.Cell(i,0)+","
> end
> end
> next
>
> TextArea1.text = left(s1,len(s1)-1)+EndOfLine+left(s2,len(s2)-1)
>
> MfG, Metti.
>

Re: Listbox-Checkbox
Date: 28.08.11 16:43 (Sun, 28 Aug 2011 17:43:33 +0200)
From: nobe
Danke, Metti, das sehe ich mir morgen mal an.

gruss enno

Am 28.08.11 11:51, schrieb Stefan Mettenbrink:
> nobe wrote:
>
>> Hallo, in einer listbox mit checkboxen wird die letzte position
>> falsch angezeigt: klicke ich nämlich beim 5. namen in die
>> anwesend-spalte, dann wird dies als 'entschuldigt' angezeigt. Warum
>> ?? Bug ??
>> Ich füge mal den code bei.
>
> Code beifügen ist immer gut!
>
> So wie es aussieht, kummt erst der CellKlick-Event und danch wird erst
> CellCheck auf True gesetzt. Ist etwas unglücklich.
>
> So funktioniert es bei mir:
> dim i as integer
> dim s1,s2 as String
>
> if me.CellCheck(row,column)=true then
> if column = 1 and me.CellCheck(row,2)=true then
> me.CellCheck(row,2) = false
> elseif column = 2 and me.CellCheck(row,1)=true then
> me.CellCheck(row,1) = false
> end
> end
>
> s1="Anwesend: "
> s2="Entschuldigt: "
> for ito me.ListCount-1
> if i=row then
> if me.CellCheck(row,column)úlse then
> s1=s1+me.Cell(i,0)+","
> else
> s2=s2+me.Cell(i,0)+","
> end
> else
> if me.CellCheck(i,1)=true then
> s1=s1+me.Cell(i,0)+","
> else
> s2=s2+me.Cell(i,0)+","
> end
> end
> next
>
> TextArea1.text = left(s1,len(s1)-1)+EndOfLine+left(s2,len(s2)-1)
>
> MfG, Metti.
>