| |
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
Georg Teles | Guten Abend,
füge mal Folgendes hinzu
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|