Deutsch
Forum

Darstellung der Listview

 
- Seite 1 -



Bernd
Haase
Hallo Frank !

In meinen Listviews wird, wenn ich nach untern scrollen will, die Zeile unterbrochen. Aber immer nur beim Runterscrollen.
Hast Du nen Rat, wie man das abstellen kann oder ist das nen Hardwarefehler (Grafikkarte ?).

12 kB
Kurzbeschreibung: Bild
Hochgeladen:04.07.2007
Ladeanzahl204
Herunterladen
 
Mit freundlichem Gruß
Bernd

Sind schon viele erfroren, aber noch keiner ist erstunken !!
[...] 
04.07.2007  
 



 
- Seite 1 -



Thomas
Freier
...oder kann man den Scrollbalken abschalten ?
...oder gar nur die Pfeile ?
...und warum tritt bei den Gridboxen nicht der gleiche Effekt auf?
denn beim Scrollen mit der Maus bleibt das Gitternetz erhalten, bzw. es wird auch nach 10 durchgescrollten Zeilen mit der Pfeiltaste wieder angezeigt.
 
Gruß Thomas
Windows XP SP2, XProfan X2
04.07.2007  
 




Frank
Abbing
Nein, auch bei Gridboxen tritt der Effekt auf. Und bei externen Programmen habe ich es auch beobachtet.
Es passiert, wenn die Gitter aktiviert sind und die Scrollpfeile gedrückt werden und die Listviewhöhe und Texthöhe irgendwie nicht kompatibel genug sind. Besser kann ich es nicht beschreiben.
Ist aber definitiv ein Bug des SysListview32.

Scroller abschalten geht per Style.
 
05.07.2007  
 



Dann beschreibe ichs mal besser

Es ist ein Rundungsfehler welcher bei der Berechnung auftritt für die Höhe des per BitBlit zu verschiebenden Bereiches.
 
05.07.2007  
 




Thomas
Freier
Frank, du hast recht, bei der Gridbox tritt es auch auf.
Ein Auge schlief wohl schon.
Merkwürdig jedoch, wenn schon Rundungsfehler, warum enden die fehlenden (oder verschobenen) Linien nach der zehnten Zeile, wenn mehr in einem Zug mit der Pfeiltaste gescrollt werden?
 
Gruß Thomas
Windows XP SP2, XProfan X2
05.07.2007  
 




Bernd
Haase
AHA ! Dann muß man also versuchen, eine vernünftige Einstellung der ListviewGröße und des Schriftbildes hinzubekommen.
 
Mit freundlichem Gruß
Bernd

Sind schon viele erfroren, aber noch keiner ist erstunken !!
[...] 
05.07.2007  
 



Thomas Freier
Frank, du hast recht, bei der Gridbox tritt es auch auf.
Ein Auge schlief wohl schon.
Merkwürdig jedoch, wenn schon Rundungsfehler, warum enden die fehlenden (oder verschobenen) Linien nach der zehnten Zeile, wenn mehr in einem Zug mit der Pfeiltaste gescrollt werden?


Erkläre ich Dir. MS ist ja nicht doof und wird natürlich auch Programmtechnisch immer nur das tun was unbedingt nötig ist. Wenn Du z.B. eine Zeile runterscrollst wird halt um eine Zeile alles hochgeblittet - und die unterste Zeile neu gepinselt. (Aber auch nur wenn nicht Softscroll/Listenscrollen optimieren aktiviert ist denn wenn optimiert wird sogar pixelweise gescrollt was das ganze soft aussehen lässt (imho ab nt4 im gui subsystem möglich) ) Wenn nun aber mehr als eine Zeile gescrollt wird so ändert sich natürlich die Anzahl der neu-zu-zeichnenden Zeilen. Hiermit ändern sich natürlich auch Werte (Koordinaten) des zu blittenden Bereiches wodurch der Rundungsfehler praktisch oft ausbleibt. Das ganze ist aber noch deutlich komplizierter denn es gibt tatsächlich sogar noch eine Effektivrechnung welche kurzum beurteilt ob es sich überhaupt lohnt (prozesstechnisch gesehen) einen bestimmten Bereich zu blitten - oder ihn gar neu zu pinseln. Diese Rechnung bezieht sogar die Geschwindigkeit des Computers/Grafikkarte mit ein. Und dann wird das ganze nochmal verkompliziert denn: Jede Zeichenanforderung wird überhaupt garnicht sofort ausgeführt - ganz im Gegenteil. Es landed alles in einer Anforderungsschleife (Spooler) welche vor jedem Zeichnen nochmals optimiert wird. In dieser letzten Ausführungsschicht für Zeichenoperationen wird z.B. auch die Z-Achse überprüft bzw. Zeichenoperationen wegoptimiert welche nicht sichtbar würden. Dank dieser letzten Schicht ist es auch möglich Zeichnungen trotz angeblicher Ausführung mit wm_setredraw zu beeinflussen. Auf Deutsch einen Pixel setzen ohne das dieser gezeichnet wird weil die letzte Ausführungsschicht der Zeichenoperationen sagt: nö. Dennoch ist das Pixel im Speicher natürlich geändert - wovon die GrKarte aber nix weiß.

Zurück zum Thema am Beispiel: Du hast ne Krücke von Rechner - die ewig braucht um was anzuzeigen - nun sendest Du 3 Mal ganz schnell per sendmessage an ein SysLV32 die Pfeilnachuntentaste. Das Windows-GUI wird nun nicht 3 Mal eine Zeile scrollen - sondern erkennen das es lohnenswerter ist gleich drei Zeilen zu scrollen. Die selbe Operation jedoch auf nem 12GHZ-Rechner könnte sogar dafür sorgen das nicht nur wirklich Dreimal eine Zeile gescrollt wird - sondern vielleicht sogar jede Zeile Pixelweise. Öhm.
 
05.07.2007  
 




Thomas
Freier
@iF: Danke für die ausführliche Erklärung.
Gedankenspiel: kann man die Darstellung in diesem Fall zwangsweise erneuern?
Ein Befehl so in der Art : %wmPaint
 
Gruß Thomas
Windows XP SP2, XProfan X2
05.07.2007  
 



 
- Seite 2 -



Frank
Abbing
Wenn du die Scroller subclassed oder eine passende Message als Usermessage deklarierst, sollte das funktionieren.
Listview.dlls Funktion zum Neuzeichnen eines Listviews ist UpdateListview(lvhandle).
 
05.07.2007  
 



Genau updatelistview oder updatewindow oder invalidaterect + updatewindow oooder Ownerdraw.
 
05.07.2007  
 




Jörg
Sellmeyer
Frank Abbing
Wenn du die Scroller subclassed oder eine passende Message als Usermessage deklarierst, sollte das funktionieren.
Listview.dlls Funktion zum Neuzeichnen eines Listviews ist UpdateListview(lvhandle).


Ich versuch schon die ganze Zeit eine passende Message zu finden, aber weder wm_vscroll noch wm_mousewheel lösen etwas aus.
Kannst Du nicht in die Dll eine Funktion einbauen, die das automatisch erledigt? Diese Trickserei mit Höhe und Schriftgröße ist ja nicht wirklich befriedigend. Besonders wenn die Liste auf Größenänderungen des hwnd reagieren soll.
Oder hat schon jemand eine erfolgreiche Lösung gefunden und möchte die mit uns teilen?
Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
28.10.2007  
 



Auch wenn so gut wie niemand damit klarkommt, aber die Lösung für sowas kann immer die ScrollArea sein. (Ich muss mal zusehen ob ich das Handling Dieser nicht einfacher von Statten bekommen kann)
 
28.10.2007  
 



Frank Abbing
Wenn du die Scroller subclassed oder eine passende Message als Usermessage deklarierst, sollte das funktionieren.
Listview.dlls Funktion zum Neuzeichnen eines Listviews ist UpdateListview(lvhandle).


Ich versuch schon die ganze Zeit eine passende Message zu finden, aber weder wm_vscroll noch wm_mousewheel lösen etwas aus.
Kannst Du nicht in die Dll eine Funktion einbauen, die das automatisch erledigt? Diese Trickserei mit Höhe und Schriftgröße ist ja nicht wirklich befriedigend. Besonders wenn die Liste auf Größenänderungen des hwnd reagieren soll.
Oder hat schon jemand eine erfolgreiche Lösung gefunden und möchte die mit uns teilen?
Gruß
Jörg
 
28.10.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.490 Betrachtungen

Unbenanntvor 0 min.
Michael W.07.07.2016
Ernst01.05.2016
Peter Max Müller16.04.2015
Georg18.02.2013
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