| |
|
|
 Georg Hovenbitzer | Hallo zusammen,
ich habe mal wieder ein paar Fragen zum Listview.
- gibt es eine Möglichkeit den links Klick auf einen Spaltenbutton mitzubekommen - gibt es eine Möglichkeit eine Größenänderung einer Spalte mitzubekommen
Ich möchte eine Checkbox Spalte Sortieren, dafür habe ich eine Routine geschrieben und möchte diese ausführen lassen wenn der entsprechende Spaltenbutton gedrückt wird. Da diese doch eine gewisse Zeit dauert, da ich alle markierten und unmarkierten Einträge je in ein TMP Listview kopiere und nach dem Löschen des originales wieder zurück kopiere, habe ich mir noch eine andere Lösung überlegt. Wenn man in die Checkbox Spalte je 1 oder 0 mit hineinschreibt ist die Sortierung schneller. Dabei stört nur, dass man die Zahl durch Verschieben der Spalte sichtbar machen kann. Nehme ich den Ex-Style $400 mit bei der Erstellung des Listview was verhindet, dass man die Spalten vergrößert, wir automatisch (was auch richtig ist) der Tooltip eingeschaltet und ich sehe wieder die Zahlen. Ebenso habe ich die hier im Forum aufgezeigte Callback Routine ausprobiert, diese scheitert aber dadurch, dass ich Fastmode einschalten muss. Danach funktioniert bei mir Loadfile nicht mehr. Die Lösung vom Frank mit dem Zurücksetzen per Setcolumnwidth scheitert am Einsetzen eines Timers, da flackert bei mir das Listview fröhlich vor sich hin.
Am liebsten wäre mir die Möglichkeit, mitzubekommen wenn der Spaltenbutton geklickt wird und anhand der Werte einer Spalte am anderen Ende des Listview die man nicht vergrößern kann die Sortierung zu starten.
 |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 10.04.2006 ▲ |
|
|
|
|
 Frank Abbing | Hi.
Kein Problem. Hab die Usermessage $1401 eingeführt. Die UMessage $1400 hab ich inzwischen etwas abgeändert. Sie meldet jetzt Tastencode und Listviewhandle, in dem der Tastencode auftrat:
; Usermessages: Messagenummer = Beschreibung = (uwParam, ulParam) ; ------------- ; $1400 = Tastendruck im Listview ermitteln = (LvHandle, Tastencode) ; $1401 = Gedrückten Spaltenbutton (linke Maustaste) melden = (LvHandle, Spalte)
Die Dll schicke ich dir per Mail. |
|
|
| |
|
|
|
 Georg Hovenbitzer | Hi Frank,
und schon wieder ein gaaaaannnnnzzzzz GROßES Lob von mir 
Klappt alles hervorragend 
Wenn es jetzt noch eine Message gibt, die ausgelöst wird wenn man die Spaltengröße ändert, fall ich vor dir auf die Knie  |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 11.04.2006 ▲ |
|
|
|
|
 Frank Abbing | Was brauchst du genau? Die Message, wenn der Anwender die Breite verändern will oder gerade dabei ist sie zu verändern oder sie soeben verändert hat? Oder alles drei? |
|
|
| |
|
|
|
 Georg Hovenbitzer | Hi Frank,
dies ist eine sehr gute Frage 
Am besten natürlich alle drei 
Sinnvoll ist glaube ich das Zurücksetzen der Breite wenn der User ändern will. Dürfte am wenigsten auffallen, man müsste aber auch wissen welche Spalte er ändern will, damit man geziehlt zurücksetzen kann.
Und dies alles so kurz vor deinem Urlaub  |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 11.04.2006 ▲ |
|
|
|
|
 Frank Abbing | Hi,
kein Problem. Es gibt jetzt Messages, wenn ein Spaltenbutton verändert werden soll und wenn er verändert wurde:
[box:101fab0d3c]; Usermessages: Messagenummer = Beschreibung = (uwParam, ulParam) ; ------------- ; $1400 = Tastendruck im Listview ermitteln = (LvHandle, Tastencode) ; $1401 = Gedrückten Spaltenbutton (linke Maustaste) melden = (LvHandle, Spalte) ; $1402 = Anwender will gerade Spaltenbreite verändern = (LvHandle, Spalte) ; $1403 = Anwender hat Spaltenbreite verändert = (LvHandle, Spalte)[/box:101fab0d3c] Die Dll schicke ich dir wieder per Mail. Samstag gehts in Urlaub, wenn das Wetter mitspielt.  |
|
|
| |
|
|
|
 Georg Hovenbitzer | Hallo Frank,
wie gewohnt klappt es 
Der Anwender merkt nichts davon, Maustaste loslassen und Spalte zurück stellen.
So kann man nun wirklich jede beliebige Spalte feststellen.
Nun bin ich mal richtig unverschämt 
Eine Message würde mir noch fehlen und zwar eine, wenn man eine Checkbox anklickt 
Hintergrund ist, dass man sich ein paar Umläufe in der Hauptschleife sparen kann, da man dann beide Markierungsmöglichkeiten über Message abfangen kann. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 12.04.2006 ▲ |
|
|
|
|
 Frank Abbing | Hallo,
ich glaube nicht, das ich dir in dem Fall helfen kann. Mir ist keine Notify-Message bekannt, die ausgelöst würde, wenn eine Checkbox angeklickt wird. Sollte jemand doch eine kenne, so möge er mir einen Schubs in die richtige Richtung geben. |
|
|
| |
|
|
|
 Frank Abbing | Nein, so eine Message gibt es nicht. Aber mit den vorhandenen Mitteln ist doch eine Abfrage jetzt schon äusserst kurz und bequem und das Waitinput wird auch verlassen... KompilierenMarkierenSeparieren Päpstlicher als der Papst muss nicht sein  |
|
|
| |
|
|
|
 Georg Hovenbitzer | Hi Frank,
ich wollte einfach mal päpstlicher als der Papst sein 
In machen Sachen bin ich eben ein Minimalist 
Aber eine Sache noch, mein Listview zeigt zur Zeit 15.445 Zeilen an und läuft perfekt. Das einzige was etwas klemmt ist, wenn ich per Mausklick auf die Spaltenbuttons die Sortierung automatisch ändere, was bei der Menge nicht außergewöhnlich ist.
Kann man da noch etwas mit Speicherzuweisung oder so machen ? |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 14.04.2006 ▲ |
|
|
|
|
 Frank Abbing | Ja, du könntest dir einen schnellen Computer zulegen  Ne, im Ernst. Die Sortierung ist schon sehr optimiert. Von der Programmierung ist da nichts mehr zu holen. Die meisste Zeit benötigt das System, um die Listview-Einträge (neu) zu lesen und zu speichern. Also Windows Verwaltung des Controls.
Bin weg, Bootfahren!  |
|
|
| |
|
|