Deutsch
Forum

Listview-Controls synchron scrollen

 
- Seite 1 -



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  
 



 
- Seite 1 -



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  
 



 
- Seite 2 -


Also mir würde es schon ausreichen wenn alle nötigen Dateien mit im Paket wären.
 
03.09.2008  
 




Detlef
Jagolski
Weis zwar nicht was ich geändert haben soll, habe noch mal die Original .ph rein Kopiert.

Läuft trotzdem?
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
03.09.2008  
 




Frank
Abbing
Richtig, Jörg! Wenn man die $H und $I einfügt, geht der Code. Erstaunlich, dass er überhaupt irgendwo funktioniert...
 
03.09.2008  
 




Detlef
Jagolski
Was sind den die Fehler im Code außer $H und $I?
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
03.09.2008  
 




Frank
Abbing
Ansonsten nur der feste Pfad bei der Inc-Datei.
Bei mir läuft der Code jetzt, aber hab noch keine Idee, wie das hinzubekommen wäre.
 
03.09.2008  
 




Dieter
Zornow
Versuchs mal so, du must aber dann die Scroll - Richtung wissen, wegen der Message
Nur als Ansatz gedacht ist aber absolut sysnchron, Range habe ich mal auf 0-1000 gesetzt
KompilierenMarkierenSeparieren
~SetScrollRange(gridbox1&,0,0,1000,1)
~SetScrollRange(gridbox2&,0,0,1000,1)

SubClassProc

    If SubClassMessage(GridBox1&, ~WM_HSCROLL)

        ascroll& = scroll&
        scroll& = ~GetScrollPos(gridbox1&,0)
        ~SetScrollPos(gridbox2&,0,scroll&,1)
        sendmessage(gridbox2&,~LVM_SCROLL,scroll&-ascroll&,0)
        ~UpdateWindow(GridBox2&)
        Set("WinProc",1)

    ElseIf SubClassMessage(GridBox2&, ~WM_HSCROLL)

        ascroll& = scroll&
        scroll& = ~GetScrollPos(gridbox2&,0)
        ~SetScrollPos(gridbox1&,0,scroll&,1)
        sendmessage(gridbox1&,~LVM_SCROLL,scroll&-ascroll&,0)
        ~UpdateWindow(GridBox1&)
        Set("WinProc",1)

    EndIf

 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
04.09.2008  
 




Detlef
Jagolski
Klappt super Danke
 
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
04.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.607 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