| |
|
|
- Page 1 - |
|
Julian Schmidt | Woran scheitert hier das markieren und abwählen aller Einträge in der Mehrfachauswahl-Listbox? KompilierenMarkierenSeparierendeclare choosedialog&,listbox&,aktiontuen&,markall&,delmark&,text$[]
var StringCount%=3
text$[1]=0
text$[2]=1
text$[3]=2
windowstyle 24
choosedialog&=Create("Window",%hwnd,"Auswahl-Dialog",%MaxX\2,%MaxY\3,500,400)
listbox&=Create("ListBox", choosedialog&, 2, 20, 20, 250, Height(choosedialog&)-40)
Create("Text",choosedialog&,"Bitte wählen Sie Einträge, auf dennen eine Aktion ausführt werden soll aus.",290,30,190,60)
whileloop StringCount%
AddString(listbox&,text$[&loop])
Endwhile
MoveListToHandle(listbox&)
aktiontuen&=@Create("Button",choosedialog&,"Aktion ausführen",290,Height(choosedialog&)-80,185,60)
markall&=@Create("Button",choosedialog&,"Alle Markieren",290,110,185,40)
delmark&=@Create("Button",choosedialog&,"Markierungen aufheben",290,160,185,40)
while 1
waitinput
if getfocus(markall&)
whileloop GetCurSel(listbox&)+1
Sendmessage(listbox&,$0186,&loop-1,0)
Setfocus(listbox&)
Endwhile
elseif getfocus(delmark&)
whileloop GetCurSel(listbox&)+1
Sendmessage(listbox&,$0186,&loop-1,1)
Setfocus(listbox&)
Endwhile
elseif getfocus(aktiontuen&)
whileloop GetCurSel(listbox&)+1
case GetState(listbox&, &loop-1)>0 : Messagebox(text$[&loop],"Info",0)
Endwhile
end
elseif %key=2
end
Endif
Endwhile
|
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 28.04.2011 ▲ |
|
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
Jörg Sellmeyer | Du hast die falsche Message verwendet und Du kannst es einfacher machen: KompilierenMarkierenSeparieren
if getfocus(markall&)
Sendmessage(listbox&,$0185,1,-1)'lb_SetSel statt lb_SetCurSel
'außerdem hast Du die letzten Parameter vertauscht. Der vorletzte bestimmt, ob markiert wird. Der letzte bestimmt den Eintrag. -1 steht für alle Einträge
elseif getfocus(delmark&)
Sendmessage(listbox&,$0185,0,-1)
elseif getfocus(aktiontuen&pan>
Unklar ist mir, warum Du hier KompilierenMarkierenSeparieren GetCursel verwendest. Du willst doch alle (ent-)markieren. Also müßtest Du dann schon GetCount nehmen. Aber -1 ist besser. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.04.2011 ▲ |
|
|
|
|
|
| Mit den Variablen kannst du auch wohl immer noch nicht umgehen, obwohl du in deinem letzten Thread schon wiederholt darauf hingewiesen wurdest. KompilierenMarkierenSeparierentext$[1]=0
text$[2]=1
text$[3]=2
ist falsch
text$[1]="0"
text$[2]="1"
text$[3]="2"
ist rich >
hier greift wohl die automatische Typenwandlung, aber das kann auch mal schiefgehen. 0 = eine Nummer, "0" ist ein String und du willst ja text$[] |
|
|
| |
|
|
|
Julian Schmidt | Hab mein Minibeispiel mal etwas erweitert. KompilierenMarkierenSeparierendeclare choosedialog&,listbox&,aktiontuen&,markall&,delmark&,text$[]
var StringCount%=5
text$[1]="eins"
text$[2]="zwei"
text$[3]="drei"
text$[4]="vier"
text$[5]="fünf"
windowstyle 24
choosedialog&=Create("Window",%hwnd,"Auswahl-Dialog",%MaxX\2,%MaxY\3,500,400)
listbox&=Create("ListBox", choosedialog&, 2, 20, 20, 250, Height(choosedialog&)-40)
Create("Text",choosedialog&,"Bitte wählen Sie Einträge, auf dennen eine Aktion ausführt werden soll aus.",290,30,190,60)
whileloop StringCount%
AddString(listbox&,text$[&loop])
Endwhile
MoveListToHandle(listbox&)
aktiontuen&=@Create("Button",choosedialog&,"Aktion ausführen",290,Height(choosedialog&)-80,185,60)
markall&=@Create("Button",choosedialog&,"Alle Markieren",290,110,185,40)
delmark&=@Create("Button",choosedialog&,"Markierungen aufheben",290,160,185,40)
var ukmark&=@Create("Button",choosedialog&,"Markierungen umkehren",290,210,185,40)
while 1
waitinput
if getfocus(markall&)
Sendmessage(listbox&,$0185,1,-1)
elseif getfocus(delmark&)
Sendmessage(listbox&,$0185,0,-1)
elseif getfocus(ukmark&)
whileloop GetCount(listbox&)
if GetState(listbox&, &loop-1)>0
Sendmessage(listbox&,$0185,0,&loop-1)
else
Sendmessage(listbox&,$0185,1,&loop-1)
Endif
Endwhile
setfocus(choosedialog&)
elseif getfocus(aktiontuen&)
whileloop GetCount(listbox&)
case GetState(listbox&, &loop-1)>0 : Messagebox(text$[&loop],"Info",0)
Endwhile
end
elseif %key=2
end
Endif
ref='./../../funktionsreferenzen/xprofan/endwhile/'>Endwhile
|
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 29.04.2011 ▲ |
|
|
|