Deutsch
Forum

Listbox - Alle Einträge markieren

 
- Seite 1 -



Julian
Schmidt
Woran scheitert hier das markieren und abwählen aller Einträge in der Mehrfachauswahl-Listbox?
KompilierenMarkierenSeparieren
declare 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&)


Unklar ist mir, warum Du hier
KompilierenMarkierenSeparieren
whileloop GetCurSel(listbox&)+1

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.
KompilierenMarkierenSeparieren
text$[1]=0
text$[2]=1
text$[3]=2
ist falsch
text$[1]="0"
text$[2]="1"
text$[3]="2"
ist richtig

hier greift wohl die automatische Typenwandlung, aber das kann auch mal schiefgehen.
0 = eine Nummer, "0" ist ein String und du willst ja text$[]
 
28.04.2011  
 




Julian
Schmidt
Hab mein Minibeispiel mal etwas erweitert.
KompilierenMarkierenSeparieren
declare 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

Endwhile

 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
29.04.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.645 Betrachtungen

Unbenanntvor 0 min.
Thomas Zielinski22.10.2020
RudiB.05.04.2020
Georg Teles06.02.2016
Torsten Rümker03.06.2015
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie