Italia
Foro

GridBox-Zeilen de-selektieren

 

Pk
Ciao,

mit einem Mausklick kann man ja in einer GridBox eine Zeile selektieren. Kann man diese Auswahl auch wieder rückgängig machen - also die GridBox selektionsfrei machen? Ich habe hier X3.1.

Grüße, Peter
 
02.03.2017  
 




H.Brill
Vielleicht sowas :
WindowTitle "Gridbox"
WindowStyle 31+512
Window 0,0-800,600
Declare Handle Grid, BtnEnde, btnState
Declare Int zeile
Var Int Ende = 0
Grid     = Create("GridBox", %hwnd, "Nr.;0;40;Eintrag;0;135;DATUM;0;135", 2, 100, 70, 410, 370)
BtnEnde  = Create("Button",%hwnd,"ENDE",500,500,190,25)
btnState = Create("Button",%hwnd,"Deselektieren", 520,100,120,25)

WhileLoop 1, 50

    Addstring(Grid, Str$(&LOOP) + "|" + "EINTRAG" + "|" + Date$(0))

EndWhile

WhileNot Ende

    WaitInput

    If Clicked(BtnEnde)

        Let Ende = 1

    Endif

    If Clicked(btnstate)

        SendMessage(Grid, 4139, 1, 0)' Zeile(n) entmarkieren

    EndIf

Endwhile

END
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
02.03.2017  
 




Pk
Nee, die Auswahl wechselt zwar von blau nach grau, aber die Selektion(en) bleibt.
Mit "GetSelCount(N)" lässt sich das testen.

Grüße, Peter
 
02.03.2017  
 




Georg
Teles
Guten Abend,

füge mal Folgendes hinzu
 $H commctrl.ph

Proc LvDeSelect'deselectieren

    Parameters Lv&,Item&
    Declare s#
    Dim s#,1024
    Long s#,12=0
    Long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
    SendMessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
    Dispose s#

EndProc


und rufe diese Proc beim entmarkieren auf
 $H commctrl.ph

Proc LvDeSelect'deselectieren

    Parameters Lv&,Item&
    Declare s#
    Dim s#,1024
    Long s#,12=0
    Long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
    SendMessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
    Dispose s#

EndProc

WindowTitle "Gridbox"
WindowStyle 31+512
Window 0,0-800,600
Declare Handle Grid, BtnEnde, btnState
Declare Int zeile
Var Int Ende = 0
Grid     = Create("GridBox", %hwnd, "Nr.;0;40;Eintrag;0;135;DATUM;0;135", 2, 100, 70, 410, 370)
BtnEnde  = Create("Button",%hwnd,"ENDE",500,500,190,25)
btnState = Create("Button",%hwnd,"Deselektieren", 520,100,120,25)

WhileLoop 1, 50

    Addstring(Grid, Str$(&LOOP) + "|" + "EINTRAG" + "|" + Date$(0))

EndWhile

WhileNot Ende

    WaitInput

    If Clicked(BtnEnde)

        Let Ende = 1

    Endif

    If Clicked(btnstate)

        'SendMessage(Grid, 4139, 1, 0)' Zeile(n) entmarkieren
        LvDeSelect Grid,GetCurSel(Grid)' markierte Zeile(n) entmarkieren

    EndIf

Endwhile

END

Servus
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

06.03.2017  
 




Pk
Ciao,

ich durchschaue deine Proc jetzt nicht, aber sie funktioniert. Das es so aufwendig sein muss, habe ich eigentlich nicht erwartet. Bei einer Auswahl in der Gridbox reicht ein Klick. Bei mehrfach Auswahl wird zuerst die letzte gemachte deselektiert und mit einem weiteren Klick die restlichen.
Ich hatte mir erst einmal mit einem hin und her kopieren geholfen, aber bei einer recht langen GridListe dauert das schon eine Weile, so ist es jedenfalls viel-viel schneller.

Dank an euch beide und
Grüße, Peter
 
07.03.2017  
 




Georg
Teles
Ja da hast Du Recht, die Proc deaktiviert nur eine Zeile, die zuletzt markierte.

Um Alle Zeilen abzufragen kannst Du Beispielsweise mittels einer Schleife Folgendes versuchen
If Clicked(btnstate)

    'SendMessage(Grid, 4139, 1, 0)' Zeile(n) entmarkieren

    WhileLoop 0,GetCount(Grid)-1'zähle von 0 bis Anzahl Einträge minus 1, da die erste Position = 0 ist

        case GetState(Grid,&loop)>=1:LvDeSelect Grid,&loop'sobald die durchlaufende Zeile markiert oder aktiv ist, soll sie demarkiert werden

    EndWhile

EndIf


Wenn deine Liste etwas länger ist, schau ob die Schleife zu viel Zeit kostet. Ich schau solange in meinem Archiv ob ich da was Brauchbares ohne Schleife finde.

Servus
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

10.03.2017  
 




R.Schneider
Georg Teles (06.03.2017)
SendMessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)


Ersetze mal "Item&" durch "-1", dann sollte es per alle Einträge auf einmal funktionieren.

Saluto
Rudger
 
Perbody is nofect !
12.03.2017  
 




Pk
Hallo zusammen,

ich durchschaue die Proc ja nicht und mit dem ersetzen des "Item&" mit -1 naturalmente auch nicht, aber jetzt funktioniert es perfekt!
Vielen Dank und Grüße, Peter
 
15.03.2017  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

9.336 Views

Untitledvor 0 min.
H.Brill30.09.2022
Tango30.10.2021
Thomas Zielinski29.10.2021
RudiB.09.09.2021
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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