Deutsch
Forum

Listview-Controls synchron scrollen

 

Detlef
Jagolski
Hallo,

Habe ein Problem:
Ich benutze zwei Listview-Controls.
Beide sollen synchron scrollen.
Die Scrollbalken bewegen sich auch synchron. Jedoch mehr auch nicht.

Vielleicht weiß jemand Rat.

Gruß
Detlef
KompilierenMarkierenSeparieren
 $P+
Set("ErrorLevel",1)
Set("FastMode",1)
WINDOWS.PH
MESSAGES.PH
SHELLAPI.PH
STRUCTS.PH
COMMCTRL.PH
LISTVIEW_FUNKTIONEN.INC
var lvDll& = UseDll("Listview.dll")

Proc GridBox1

    Declare SortGridBox1#
    Declare ColorGridBox1#
    Dim SortGridBox1#,48
    Dim ColorGridBox1#,64
    Long SortGridBox1#,0=2
    Long SortGridBox1#,4=1
    Long SortGridBox1#,8=1
    Long SortGridBox1#,12=1
    Long SortGridBox1#,16=1
    Long SortGridBox1#,20=1
    Long SortGridBox1#,24=1
    Long SortGridBox1#,28=1
    Long SortGridBox1#,32=1
    Long SortGridBox1#,36=1
    Long SortGridBox1#,40=1
    Long SortGridBox1#,44=1
    Clear ColorGridBox1#    bereich# mit Nullen löschen, wichtig!
    Byte ColorGridBox1#,0=0
    Byte ColorGridBox1#,1=1
    Byte ColorGridBox1#,2=1
    Byte ColorGridBox1#,3=1
    Byte ColorGridBox1#,4=0
    Byte ColorGridBox1#,5=0
    Byte ColorGridBox1#,6=0
    Byte ColorGridBox1#,7=0
    Byte ColorGridBox1#,8=0
    Byte ColorGridBox1#,9=0
    Byte ColorGridBox1#,10=0
    GridBox1& = CreateListView(%hwnd,%hinstance,0,RGB(255,255,255),-1,$31)
    SetFont GridBox1&,ListViewFont3&
    var Headerh& = SendMessage(GridBox1&,$101F,0,0)
    SetFont Headerh&,ListViewFont&
    InsertColumn GridBox1&,"Artikel-Nr.",80,0
    InsertColumn GridBox1&,"Bezeichnung 1",200,0
    InsertColumn GridBox1&,"Bezeichnung 2",200,0
    InsertColumn GridBox1&,"Marke",100,0
    InsertColumn GridBox1&,"Artikel-Nr.",80,0
    InsertColumn GridBox1&,"Bezeichnung 1",200,0
    InsertColumn GridBox1&,"Bezeichnung 2",200,0
    InsertColumn GridBox1&,"Marke",100,0
    InsertColumn GridBox1&,"Artikel-Nr.",80,0
    InsertColumn GridBox1&,"Bezeichnung 1",200,0
    InsertColumn GridBox1&,"Bezeichnung 2",200,0
    InsertColumn GridBox1&,"Marke",100,0
    ASortListview(GridBox1&,SortGridBox1#,12)
    ShowListView(GridBox1&,20,20,832,252)
    RaiseColumns(GridBox1&,ColorGridBox1#,RGB(0,0,158),RGB(193,247,239))
    Dispose SortGridBox1#
    Dispose ColorGridBox1#
    SetLineNumbers(GridBox1&,1,0)

EndProc

Proc GridBox2

    Declare SortGridBox2#
    Declare ColorGridBox2#
    Dim SortGridBox2#,48
    Dim ColorGridBox2#,64
    Long SortGridBox2#,0=2
    Long SortGridBox2#,4=1
    Long SortGridBox2#,8=1
    Long SortGridBox2#,12=1
    Long SortGridBox2#,16=1
    Long SortGridBox2#,20=1
    Long SortGridBox2#,24=1
    Long SortGridBox2#,28=1
    Long SortGridBox2#,32=1
    Long SortGridBox2#,36=1
    Long SortGridBox2#,40=1
    Long SortGridBox2#,44=1
    Clear ColorGridBox2#    bereich# mit Nullen löschen, wichtig!
    Byte ColorGridBox2#,0=0
    Byte ColorGridBox2#,1=1
    Byte ColorGridBox2#,2=1
    Byte ColorGridBox2#,3=1
    Byte ColorGridBox2#,4=0
    Byte ColorGridBox2#,5=0
    Byte ColorGridBox2#,6=0
    Byte ColorGridBox2#,7=0
    Byte ColorGridBox2#,8=0
    Byte ColorGridBox2#,9=0
    Byte ColorGridBox2#,10=0
    GridBox2& = CreateListView(%hwnd,%hinstance,0,RGB(255,255,255),-1,$31)
    SetFont GridBox2&,ListViewFont3&
    var Headerh& = SendMessage(GridBox2&,$101F,0,0)
    SetFont Headerh&,ListViewFont&
    InsertColumn GridBox2&,"Artikel-Nr.",80,0
    InsertColumn GridBox2&,"Bezeichnung 1",200,0
    InsertColumn GridBox2&,"Bezeichnung 2",200,0
    InsertColumn GridBox2&,"Marke",100,0
    InsertColumn GridBox2&,"Artikel-Nr.",80,0
    InsertColumn GridBox2&,"Bezeichnung 1",200,0
    InsertColumn GridBox2&,"Bezeichnung 2",200,0
    InsertColumn GridBox2&,"Marke",100,0
    InsertColumn GridBox2&,"Artikel-Nr.",80,0
    InsertColumn GridBox2&,"Bezeichnung 1",200,0
    InsertColumn GridBox2&,"Bezeichnung 2",200,0
    InsertColumn GridBox2&,"Marke",100,0
    ASortListview(GridBox2&,SortGridBox2#,12)
    ShowListView(GridBox2&,20,280,832,262)
    RaiseColumns(GridBox2&,ColorGridBox2#,RGB(0,0,158),RGB(193,247,239))
    Dispose SortGridBox2#
    Dispose ColorGridBox2#
    SetLineNumbers(GridBox2&,1,0)

EndProc

Proc OnApplicationExit

     $I C:PROGRAMMEPRFELLOWLIBLISTVIEW_DISPOSE.INC
    SubClass GridBox1&,0
    SubClass GridBox2&,0
    Dispose HScrollInfo#
    Dispose VScrollInfo#
    Dispose ColumnUpdate#

EndProc

Declare appexit%
Declare GridBox1&
Declare GridBox2&
Declare GridScrollPos1&
Declare GridScrollPos2&
Declare HScrollInfo#
Declare VScrollInfo#
Declare ScrollPos&
Declare ColumnUpdate#
Struct ScrollInfo = ~SCROLLINFO
Dim HScrollInfo#,ScrollInfo
Dim VScrollInfo#,ScrollInfo
Dim ColumnUpdate#,768
var ListViewFont&     = Create("Font","MS Sans Serif",13,0,1,0,0)
var ListViewFont3&    = Create("FONT","Arial",16,0,0,0,0)

SubClassProc

    If SubClassMessage(GridBox1&, ~WM_HSCROLL)

        HScrollInfo#.cbSize& = SizeOf(HScrollInfo#)
        HScrollInfo#.fMask&  = ~SIF_ALL
        ~GetScrollInfo(GridBox1&,~SB_HORZ,HScrollInfo#)
        ~SetScrollInfo(GridBox2&,~SB_HORZ,HScrollInfo#,1)
        GetColumnUpdate(GridBox1&,ColumnUpdate#)
        SetColumnUpdate(GridBox2&,ColumnUpdate#)
        ~UpdateWindow(GridBox2&)
        Set("WinProc",1)

    ElseIf SubClassMessage(GridBox2&, ~WM_HSCROLL)

        HScrollInfo#.cbSize& = SizeOf(HScrollInfo#)
        HScrollInfo#.fMask&  = ~SIF_ALL
        ~GetScrollInfo(GridBox2&,~SB_HORZ,HScrollInfo#)
        ~SetScrollInfo(GridBox1&,~SB_HORZ,HScrollInfo#,1)
        GetColumnUpdate(GridBox2&,ColumnUpdate#)
        SetColumnUpdate(GridBox1&,ColumnUpdate#)
        ~UpdateWindow(GridBox1&)
        Set("WinProc",1)

    EndIf

EndProc

SetTrueColor 1
WindowStyle $003F
WindowTitle "DesignForm"
Window %maxX + 5,114 - 887,586
Cls ~GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
GridBox1
GridBox2
Set("SubClassMode",1)
SubClass GridBox1&,1
SubClass GridBox2&,1
SetWindowPos %hwnd = 207,114 - 887,586;0

WhileNot appexit%

    WaitInput

    If %key=2

        appexit%=1

    ElseIf GetFocus(GridBox1&)

    ElseIf GetFocus(GridBox2&)

    ElseIf %key = 4

        Fenstergröße

    ElseIf %key = 5

        Hilfe

    EndIf

Wend

OnApplicationExit
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
03.09.2008  
 



Das Absetzen der Nachricht an die 2. Scrollbar reicht (natürlich) nicht aus, die Scrollbar selbst muss dem Parent natürlich auch noch die Info zukommen lassen als ob es bewegt würde.
 
03.09.2008  
 




Detlef
Jagolski
Hallo IF,

und wie würde die (Info) Aussehen?

Gruß

Detlef
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
03.09.2008  
 




Frank
Abbing
Hast du schon die Message LVM_SCROLL ausprobiert?
 
03.09.2008  
 



Ungefähr so, wie die Info an das hWnd aussieht, wenn eine daraufliegende Scrollbar bewegt wurde. Das wiederum kannst Du leicht testen. Schaue Dir hierzu z.B. [...]  oder eher [...]  an.

Es könnte sein das es ausreicht wenn Du einfach nur wm_scroll an das Listview sendest, so würde ich mich herantasten.
 
03.09.2008  
 




Detlef
Jagolski
Hallo Frank,
KompilierenMarkierenSeparieren
SendMessage(GridBox1&,~LVM_SCROLL,HScrollInfo#.nPos& ,0)

habe ich, aber ist nicht synchron.

Gruß

Detlef
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
03.09.2008  
 



Hmpf jetzt wollte ich es testen und muss feststellen, dass obiger Code garnicht lauffähig ist da nicht komplett.
 
03.09.2008  
 




Frank
Abbing
Ja, auch festgestellt. XPSE meldet ebenfalls noch Tonnen an kleinen Fehlern.
 
03.09.2008  
 



Drücke doch W im xpse (kein Reim!) , dann hast Du die Warnings im Notepad zum einfachen Rauskopieren.
 
03.09.2008  
 




Detlef
Jagolski
Bei mir läuft er, ohne Fehlermeldung?

61 kB
Hochgeladen:03.09.2008
Ladeanzahl85
Herunterladen
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
03.09.2008  
 




Jörg
Sellmeyer
Aber nicht so, wie er oben steht! Du hast einfach nur Windows.ph drinstehen und nicht $H Windows.ph. Das Gleiche bei LISTVIEW_FUNKTIONEN.INC
anstatt $I LISTVIEW_FUNKTIONEN.INC. Dann ist die LISTVIEW_DISPOSE.INC noch mit festem Pfad eingebunden. Sind nur Kleinigkeiten, machen einem Tester aber das Leben unnötig schwer.
Nur mal als Tip - Du kannst auch einfach folgendes schreiben:
KompilierenMarkierenSeparieren
Long SortGridBox2#,0=2,1,1,1,...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
03.09.2008  
 




Frank
Abbing
Detlef, deine .ph enthält erweiterte Definitionen, die uns fehlen.
Fehler meldet der Precompiler XPSE, der schon fast zum XProfan-Standart gehört.
 
03.09.2008  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.605 Betrachtungen

Unbenanntvor 0 min.
RudiB.14.01.2022
Jörg Sellmeyer04.06.2020
Member 154727723.09.2018
Georg06.02.2018
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