Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Helfer & Tools Programme für und in XProfan und Fragen dazu.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7594, Antworten: 180
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26816, Antworten: 4212
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 37, Antworten: 4
Gehe zum ersten neuen Beitrag PPF Blödstückchen Teil 3
Aufrufe: 22138, Antworten: 864
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 175, Antworten: 5
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 123, Antworten: 7
Gehe zum ersten neuen Beitrag Microsoft: Mehr Datenschutz...
Aufrufe: 24, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 44, Antworten: 5
Gehe zum ersten neuen Beitrag Hilfe bei Script Erstellung
Aufrufe: 71, Antworten: 7
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 55, Antworten: 3
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21.11.2011, 21:17   #1 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard Listview.dll mit Win7

Hallo zusammen, ich habe ein Programm geschrieben, in dem Frank's Listviev.dll eine zentrale Rolle spielt. Es funzt auf XP-Rechnern wunderbar. Jetzt sollte es neuerdings auch auf einigen W7-Rechnern zum Einsatz kommen. Jedoch verhält sich W7 beim einfärben der Zeilen/Spalten nicht wie erwartet. Die Einfärbung wird nur dort durchgeführt, wenn ich mit den Cursor hoch/runter zappe.
Läßt sich blöde erklären, deshalb habe ich eine kleine Demo geschrieben, die genau dieses Problem reproduziert.
Das Programm ist sofort lauffähig (listview.dll muß vorhanden sein). Ich habe es auf XP compiliert. Auf XP löppt alles wie's soll.
Auf W7 wird die Spalte bei Cursor links/rechts nicht gefärbt - erst dann, wenn Cursor hoch/runter gedrückt wird. Und dann auch NUR die Zeilen, über die ich gerade hoch- oder runterzappe...
Hat da jemand einen heißen Tip?
Code:
'w7-verhalten bei einfärbung von zeilen-/spaltenfarben

Declare lvh&, ku&, spa&, aspm&  '&
declare mark#  '#

Def GetSysColor(1) !"USER32","GetSysColor" 'win farbschema laden
lvh& = @importdll("Listview.dll","")       'listview.dll laden & statisch linken

dim mark#, 64

Windowstyle 512 + 8 ' dialogfensterstil + 8  
WindowTitle "    Testtabelle"
Window 1024,700 'größe des hauptfensters 
Cls GetSysColor(15) 'hauptfenster in den systemfarben darstellen

Proc beenden
   CloseMessages(%HWND)
   FreeDll lvh& 'dlls entladen   
   end
EndProc

Proc  listebauen
  Declare fn#
  dim fn#, 50 
  ku& = CreateListView(%hwnd,%hinstance,$0,$FFFFFF,$FFFFFF,$21) 'tabelle erstellen  
  buildlistview(ku&,10,0,100,0) '10 spalten mit breite 100 erzeugen  
  WhileLoop 0, 10 'alle 10 spalten durchlaufen   
    String fn#, 0 = "Spalte " + Str$(&loop) ' feldnamen in speicherbereich schreiben
    SetColumnName(ku&,fn#,&loop) 'betreffenden spaltennamen gemäß feldnamenliste festlegen     
  EndWhile
  Dispose fn#  
EndProc

Proc listefuellen
  declare spalte#[10],zeiger#,z%
  Dim spalte#[], 80
  Dim zeiger#, 40 'bereich für 10 adressen  
  z%= -1 'indexzähler für spalte#[]
  WhileLoop 0,36,4
    inc z%    
    Long zeiger#, &loop = spalte#[z%] 'zeigerbereich mit den adressen des bereichsarrays füllen
  EndWhile   
  WhileLoop 0,20 '20 zeilen anhängen
    z%= -1 'indexzähler für spalte#[]
    While z% < 10 'alle elemente von spalte#[] durchlaufen
      Inc z%
      String spalte#[z%], 0, "Zeile " + Str$(&loop) + "- Spalte " + Str$(z%) 'aktuellen spalteninhalt in bereichsarray schreiben
    EndWhile
    SItem(ku&,zeiger#,9) 'zeile mit den vorbelegten werten einfügen (zeile 0-9)
  EndWhile
  Dispose spalte#[]
  Dispose zeiger#
EndProc

Proc spmark
  'färbt eine spalte (hintergrund) im listview in eine andere farbe - (index der spalte, die eingefärbt werden soll, wird in globale longvariable spa& gelesen)
  Clear mark#           'speicherbereich für die spaltenfarben mit nullen füllen
  Byte mark#,spa&,1      'das der spaltennr. entsprechende byte auf 1 setzen  
  RaiseColumns(ku&,mark#,0,$D9FBDA) 'spaltenhintergrundfarbe setzen (helles grün)  
  locate 1,1
  Print "Spalte",spa&;"  "
  setfocus(ku&) 'focus auf die tabelle setzen
EndProc

listebauen 'listview erstellen & spaltenköpfe beschriften
listefuellen 'testdaten ins listview schreiben
ShowListview(ku&,5,30,1010,400) 'tabelle anzeigen
InitMessages(%HWND) 'subclassing für das hauptfenster aktivieren
Usermessages $1400 'messages, die das listview ans hauptfenster schicken soll
 
spa& = 5 'spaltenzeiger setzen
spmark 'spalte einfärben

locate 1,30
Print "Mit Cursor links/rechts kann eine Spalte markiert werden - Esc=Ende"

while 1
  waitinput    
  'tastencodes auswerten, die vom system kommen       
  If %key = 2           
    beenden 
  ElseIf %key = 13 'wenn enter in der tabelle gedrückt wurde  
    Print "Enter"
    setfocus(ku&) 'focus auf die tabelle setzen
  EndIf
    
  'usermessages, die das listview sendet, auswerten
  if %umessage = $1400 'wenn eine taste gedrückt wurde    
    if (&ulParam = 38) or (&ulParam = 40) 'wenn cursor hoch/runter gedrückt wurde
      'aktion bei cursor hoch/runter
    ElseIf &ulParam = 37 'wenn cursor links gedrückt wurde    
      if spa& > 0 'wenn akt. spaltenindex mindestens 1 ist        
        dec spa& 'sp.index um eins verringern
        spmark 'markierung in tabelle setzen
      EndIf
    ElseIf &ulParam = 39 'wenn cursor rechts gedrückt wurde      
      if spa& < 9  'wenn akt. spaltenindex höchstens 8 ist        
        inc spa& 'sp.index um eins erhöhen
        spmark  'edit-markierung in tabelle setzen
      EndIf
    EndIf 'ende von tastendruck &ulParam = ...
  EndIf 'ende von %umessage = ....
    
endwhile
beenden
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3

Geändert von JörgG (21.11.2011 um 21:31 Uhr)
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 21.11.2011, 21:39   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Muss wohl einmal neugezeichnet werden. Bau vor der Schleife doch mal ein UpdateListview(lvhandle) ein. Hab grad nur XP zum Testen.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 21.11.2011, 21:54   #3 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Reagiert bei mir (im Interpreter), wenn bei jedem einzelnen Tastendruck UpdateListview(ku&) eingefügt wird, aber lediglich im aktiven Feld, und das auch erst, wenn man dieses verlässt...
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline   Mit Zitat antworten
Alt 21.11.2011, 22:21   #4 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

oh Sorry, hatte ich vergessen zu erwähnen: UpdateListview(lvhandle) war auch meine erste Idee - mit dem selben Ergebnis wie bei Peter...
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Alt 22.11.2011, 15:44   #5 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

ich habe jetzt mal mit den obigen Testcode rumexperimentiert, um irgendwie in die Nähe einer Erklärung zu kommen.
-Komischerweise wird die Spalte 5 ja EINMALIG eingefärbt (vor der Ereignisschleife). Mit Cursor L/R wird später exakt die selbe Proc aufgerufen - Nichts!
-Wenn ich die Zeile mit print "Mit Cursor..." VOR den Aufruf für Zeile 5 setze, wird auch diese NICHT mehr eingefärbt
- wenn ich jeweils nach dem spmark-Aufruf in der Ereignisschleife den Listview-Befehl 'UpdateListview(ku&)' ausführe, wird genau die ERSTE Zeile in der betreffenden Spalte eingefärbt.

Ansonsten wird nur beim Scrollen bzw. Cursor hoch/runter beim verlassen jede einzelne Zeile gefärbt
(zum scrollen einfach in proc 'listefuellen' in der Schleife für Zeilen anhängen die Schleifenwiederholungen erhöhen)
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 22.11.2011, 17:34   #6 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Man müßte vielleicht einen raus- und wieder rein-"hüpfenden" Feldcursor erzeugen... (nur so ein Gedanke).

Ähnliche Effekte (Beobachtung) gibt es mit 32-bit-Programmen, die Plugins verwenden: Beim 1. Mal starten klappt alles, bricht man das Plugin ab, geht in Win7 garnichts mehr damit - es lässt sich nie wieder starten, erst nach schließen und komplettem Neustart!
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3

Geändert von p. specht (23.11.2011 um 00:19 Uhr)
p. specht ist offline   Mit Zitat antworten
Alt 22.11.2011, 17:48   #7 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

vllt. ist das auch einfach nur ein W7-Fehler? So ausgereift ist es ja noch nicht.
Wie meinst du das mit den "hüpfenden" Feldcursor?
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Alt 22.11.2011, 18:01   #8 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Eigentlich sollte W7 ja etwas weiter sein als Vista . Und ebenda habe ich das gleiche Verhalten.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 22.11.2011, 18:19   #9 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Das ist kein W7-Fehler, nur die Messageverarbeitung ist etwas anders, Stichwort hovern. Sobald ich unter W7 laufe, schau ich mal nach, ob ich das beseitigen kann.
Könntest mal testen: ~UpdateWindow(lvhandle&) und/oder ~InvalidateRect(lvhandle&, 0, 1), bzw. anstatt lvhandle& mal %hwnd einsetzen. Mit einem davon wirds funktionieren.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 22.11.2011, 18:35   #10 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Ok, ich spiel das mal durch - muß bis morgen warten, weil die W7-Rechner auf Arbeit stehen - zu Hause hab ich ausschließlich XP-Rechner
Danke für den Tip
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 22.11.2011, 19:10   #11 (Direktlink)
Forenmaskottchen
 
Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
Standard

Mal unter Vista probiert, UpdateWindow, egal ob %hwnd oder ku& bringt nichts, egal wo. InvalidateRect(ku&, 0, 1) unmittelbar unter der Zeile RaiseColumns(ku&,mark#,0,$D9FBDA) und es klappt.

Gruß Volkmar
Volkmar ist gerade online   Mit Zitat antworten
Alt 22.11.2011, 19:24   #12 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Das macht auch Sinn, weil ein Neuzeichnen ausgelöst wird.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 22.11.2011, 20:34   #13 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

cool ich probier das morgen gleich unter W7 aus. Danke für's testen, Volkmar
Jedenfalls hab jetzt wieder Hoffnung. Frank, würdest du denn ggf. die Listview.dll entsprechend ändern (falls nötig) - Könnte ja sein, daß sonst das Aktualisieren doppelt-gemoppelt gemacht wird?
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Alt 22.11.2011, 22:00   #14 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Ja, klar. Gib mir aber etwas Zeit.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 23.11.2011, 00:15   #15 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

InvalidateRect(ku&, 0, 1) ... Errorfenster "Funktion unbekannt"...
Gibt´s für XProf11.2a auch dafür ein Workaround?
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Win7 home premium auf Win7 Ultimate upgraden Betatester Windows 7 8 15.12.2010 21:09
Win7-64bit gegen Win7-32bit Daryll Windows 7 7 31.05.2010 18:34
Wie baue ich listview ein? Peter C. Dlls, Includes, Units & Prozeduren 12 31.03.2009 08:14
listview Peter C. Spezielles 6 29.03.2009 00:41
Listview Peter C. Helfer & Tools 3 28.03.2009 09:30



Alle Zeitangaben in WEZ +2. Es ist jetzt 20:02 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2