Deutsch
Forum

Listview.dll: Problem Listview auf TabContol, Problem Aktualisieren

 
- Seite 1 -



Julian
Schmidt
Hallo,
ich stehe gerade vor einen Problem.
Und zwar erstelle ich über die Listview.dll ein Listview auf einen Tabcontrol.
Diesem Listview würde ich nun gerne per RaiseLine & RaiseColum andere Farben zuordnen.
Diese Befehle scheinen allerdings auf einen Tabcontrol nicht zu funktionieren, da mein Listview nicht mit meiner gewollte Farbdarstellung dargestellt wird.
Sobald ich das Listview auf dem Hauptfenster erstelle wird das Listview mit meiner gewollten Farbdarstellungen dargestellt!
Wenn ich das Listview auf dem Hauptfenster erstelle kommt es leider zu Komplikationen mit anderen Controls, weswegen es so wichtig ist es auf dem Tabcontrol zu lassen.

Wie kann ich die Farbdarstellung eines Listview, welches auf einen Tabcontrol erstellt wurde, ändern?

LG

Julian57
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
27.01.2012  
 



 
- Seite 1 -



Thomas
Freier
Dieses Problem kenne ich eigentlich nicht. Fehler in deinem Code?
Declare lvdll&,listview&,text$,x&,z&,ilist&
 $I Listview_Funktionen.inc
lvdll&=usedll("Listview.dll")
cls
var T&=CREATE("TABCTRL",%HWND,"Reiter1",10,10,400,360)
Var TAB2&=@InsertTab(T&,2,"Reiter2")
var ELEMENT1&=Control("DIALOG","",$54001100,0,25,400,380,t&,0,%hinstance,$0)
InitMessages(%hwnd)
InitMessages(ELEMENT1&)
var LVIEW&=CREATELISTVIEW(ELEMENT1&,%HINSTANCE,0,$FFFFFF,-1,$21)
InsertColumn LVIEW&,"SPALTE 1",60,0
InsertColumn LVIEW&,"SPALTE 2",60,0
InsertColumn LVIEW&,"SPALTE 3",60,0

whileLoop 10

    SetItem LVIEW&,"123","345","678"

wend

SHOWLISTVIEW(LVIEW&,20,40,325,200)
text$="101"
RaiseColumns(LVIEW&,addr(text$),0,Rgb(185,209,249))
Var ELEMENT2&=Control("DIALOG","",$54001100,0,25,400,380,t&,0,%hinstance,$0)
InitMessages(ELEMENT2&)
var LVIEW2&=CREATELISTVIEW(ELEMENT2&,%HINSTANCE,0,$FFFFFF,-1,$21)
InsertColumn LVIEW2&,"Test 1",60,0
InsertColumn LVIEW2&,"Test 2",60,0
InsertColumn LVIEW2&,"Test 3",60,0

whileLoop 10

    SetItem LVIEW2&,"abc","def","ghu"

wend

SHOWLISTVIEW(LVIEW2&,20,40,325,200)
text$="101"
RaiseColumns(LVIEW2&,addr(text$),0,Rgb(185,209,249))

Whileloop 0,10,2

    RaiseLine(LVIEW2&,(&loop+1000000),0,Rgb(0,128,128))

Endwhile

RaiseLine(LVIEW2&,600,0,Rgb(128,128,128))
usermessages 16'--Beenden abfangen

WHILE 1

    WAITINPUT
    case %umessage=16:break'---Ende
    Case @TabChanged(T&): TAB_WECHSEL GetActiveTab(T&)

ENDWHILE

CloseMessages(%hwnd)
CloseMessages(ELEMENT1&)
CloseMessages(ELEMENT2&)
FREEDLL lvdll&
DestroyWindow(%hwnd)
End

Proc TAB_WECHSEL

    Parameters T_nr%

    IF T_nr% = 0

        Showwindow(Element1&,1)
        Showwindow(Element2&,0)

    ElseIF T_nr% = 1

        Showwindow(Element1&,0)
        Showwindow(Element2&,1)

    EndIf

EndProc

 
Gruß Thomas
Windows XP SP2, XProfan X2
27.01.2012  
 




Julian
Schmidt
Ja, ich habe InitMessages, CloseMessages nicht spezifisch auf den TabControl angewand.
Nun funktioniert das einfärben. Danke Thomas!

Allerdings habe ich festgestellt, dass die Farben ab und zu erst nach einen klick, bzw. scrollen innerhalb des Listview erscheinen,obwohl ich eigentlich mit UpdateListview das Listview aktualisiere!? Weiß jemand Rat?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
27.01.2012  
 




Thomas
Freier
Ja, ist manchmal ein Problem. Versuch mal beim TAB-Wechsel "nach zu färben"
ElseIF T_nr% = 1

Showwindow(Element1&,0)
Showwindow(Element2&,1)

Whileloop 0,10,2

    RaiseLine(LVIEW2&,(&loop+1000000),0,Rgb(0,128,128))

Endwhile

RaiseLine(LVIEW2&,600,0,Rgb(128,128,128))
oder
ElseIF T_nr% = 1

Showwindow(Element1&,0)
Showwindow(Element2&,1)
RaiseLine(LVIEW2&,600,0,Rgb(128,128,128))
denn meist ist der 1.TAB OK.
 
Gruß Thomas
Windows XP SP2, XProfan X2
27.01.2012  
 




Julian
Schmidt
Ich tue eig. nach färben, dennoch kommt es ab und an zu den Problem.

Noch eine Frage:
Kann man ermitteln, ob die Sortierung der Zeilen geändert wurde?. Sobald man alle Zeilen nach einer Spalte aufwärts, abwärts sortiert, stimmt die Farbgebung leider nicht mehr. Deswegen würde ich gerne abfragen und wenn nötig, das Listview neu einfärben. Jemand eine Idee?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
27.01.2012  
 



Färben erst wenn der TAB aktiv ist?
Du kannst ja abfragen, ob der Spaltenbutton gedrückt wurde. Eine Spalte mit Farbwert bei 0 Breite. Erst alle Zeilen entfärben und dann den Farbwert auslesen und Zeile für Zeile färben.Wenn die Spaltenbreiten nicht verändert werden dürfen ist es kein Problem. Sonst abfragen ob die Spaltenbreite des Farbwertes verändert wurde und wieder auf 0 setzen.
Gruß Thomas
 
27.01.2012  
 




Julian
Schmidt
Unbenannt (27.01.12)
Du kannst ja abfragen, ob der Spaltenbutton gedrückt wurde. Eine Spalte mit Farbwert bei 0 Breite. Erst alle Zeilen entfärben und dann den Farbwert auslesen und Zeile für Zeile färben.Wenn die Spaltenbreiten nicht verändert werden dürfen ist es kein Problem. Sonst abfragen ob die Spaltenbreite des Farbwertes verändert wurde und wieder auf 0 setzen.


Sry. ich verstehe nicht wie du das meinst? Wie kann ich ermitteln ob die Sortierung des Zeilen geändert wurde?
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
27.01.2012  
 



Du bestimmst doch wo sortiert werden darf über
{{FROMQUOT2}}
Erklärung nicht gefunden: ASORTLISTVIEW(H,B,A)

AUTOSORTLISTVIEW H,S1,S2,S3,...,S12

BESTIMMT, IN WELCHER ART UND WEISE JEDE EINZELNE SPALTE EINES LISTVIEWS SORTIERT WERDEN SOLL, SOBALD DER ANWENDER
DEN ENTSPRECHENDEN SPALTENBUTTON GEDRÜCKT HAT.


, dann kannst du - siehe Beispiel Alle_Maustasten_abfangen.prf nach einem Linksklick im Listview prüfen, in welcher Spalte der Linksklick statt fand. War es eine Spalte in der eine Sortierung zulässig war, so wurde neu sortiert und die Zeilen müssen, wenn die Farbgebung an eine Zeile gebunden war, neu gefärbt werden.
 
27.01.2012  
 




Julian
Schmidt
Ok so funktioniert zumindest das Abfragen. Es treten allerdings immernoch diverse Probleme mit dem aktualisieren auf!

Hier der wesentliche Quelltext.
'...

while 1

    waitinput 30
    '...

    if (getfocus(neu&) or menuitem(101)) and (Getactivetab(hTab1&)<>4)'Wenn Button Hinzufügen gedrückt wurde....

        '...
        ColorListview(LV&[Getactivetab(hTab1&)])'wird nicht korrekt aktualisiert

    Endif

    '...
    x&=GetVar(4)

    If x&<>-1'Wenn ein beliebiger Spaltbutton gedrückt wurde...

        ColorListview(LV&[Getactivetab(hTab1&)])'wird nicht korrekt aktualisiert

    EndIf

    '...

Endwhile

'...

Proc ColorListview

    Parameters hdl&
    declare spalte&
    case hdl&=LV&[0] : spalte&=4
    case hdl&=LV&[1] : spalte&=5
    case hdl&=LV&[2] : spalte&=2
    case hdl&=LV&[3] : spalte&=2
    var erledigt&=RGB(0,190,0)
    var unerledigt&=RGB(255,30,30)

    whileloop 0,GetLines(hdl&)-1,1

        GetItemText(hdl&,bereich#,spalte&,&loop)
        case String$(bereich#,0)="Erledigt" : RaiseLine(hdl&,&loop+1000000,RGB(255,255,255),erledigt&)
        case String$(bereich#,0)="Unerledigt" : RaiseLine(hdl&,&loop+1000000,RGB(255,255,255),unerledigt&)

    Endwhile

    UpdateListview(hdl&)
    Return 1

EndProc

 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
28.01.2012  
 




Detlef
Jagolski
Versuch mal das!
while 1

    waitinput 30
    '...

    if (getfocus(neu&) or menuitem(101)) and (Getactivetab(hTab1&)<>4)'Wenn Button Hinzufügen gedrückt wurde....

        '...
        ColorListview(LV&[Getactivetab(hTab1&)])'wird nicht korrekt aktualisiert
        ~RedrawWindow(LV&[Getactivetab(hTab1&)],0,0, ~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_UPDATENOW | ~RDW_INTERNALPAINT)

    Endif

    '...
    x&=GetVar(4)

    If x&<>-1'Wenn ein beliebiger Spaltbutton gedrückt wurde...

        ColorListview(LV&[Getactivetab(hTab1&)])'wird nicht korrekt aktualisiert
        ~RedrawWindow(LV&[Getactivetab(hTab1&)],0,0, ~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_UPDATENOW | ~RDW_INTERNALPAINT)

    EndIf

    '...

Endwhile

'...

Proc ColorListview

    Parameters hdl&
    declare spalte&
    case hdl&=LV&[0] : spalte&=4
    case hdl&=LV&[1] : spalte&=5
    case hdl&=LV&[2] : spalte&=2
    case hdl&=LV&[3] : spalte&=2
    var erledigt&=RGB(0,190,0)
    var unerledigt&=RGB(255,30,30)

    whileloop 0,GetLines(hdl&)-1,1

        GetItemText(hdl&,bereich#,spalte&,&loop)
        case String$(bereich#,0)="Erledigt" : RaiseLine(hdl&,&loop+1000000,RGB(255,255,255),erledigt&)
        case String$(bereich#,0)="Unerledigt" : RaiseLine(hdl&,&loop+1000000,RGB(255,255,255),unerledigt&)

    Endwhile

    UpdateListview(hdl&)
    Return 1

EndProc

 
XProfan X2
XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11
28.01.2012  
 




Julian
Schmidt
Detlef Jagolski (28.01.12)
Versuch mal das!


Der Versuch war es Wert. Das Aktualisieren funktioniert Perfekt!
Danke euch beiden!
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
28.01.2012  
 



~Redraw... löst viele Problemchen, aber hast du es nach Franks, der ja sparsam programmiert, Beispiel mal versucht. d.h., n-1 mit &loop+100000 und letzte Zeile mit n?
var Spalte&=1
var text$=""

Whileloop 0,(GetCount(LVIEW2&)-2),1

    text$=trim$(GetText$(LVIEW2&,&loop,Spalte&))

    SELECT text$

        CASEOF "erledigt"

        RaiseLine(LVIEW2&,(&loop+1000000),0,Rgb(109,248,103))'alle unerledigten färben

        CASEOF "unerledigt"

        RaiseLine(LVIEW2&,(&loop+1000000),0,Rgb(210,222,222))'alle unerledigten färben
        OTHERWISE
        RaiseLine(LVIEW2&,(&loop+1000000),0,Rgb(255,255,255))'färben

    ENDSELECT

Endwhile

text$=trim$(GetText$(LVIEW2&,(GetCount(LVIEW2&)-1),Spalte&))

SELECT text$

    CASEOF "erledigt"

    RaiseLine(LVIEW2&,(GetCount(LVIEW2&)-1),0,Rgb(109,248,103))'alle unerledigten färben

    CASEOF "unerledigt"

    RaiseLine(LVIEW2&,(GetCount(LVIEW2&)-1),0,Rgb(210,222,222))'alle unerledigten färben
    OTHERWISE
    RaiseLine(LVIEW2&,(GetCount(LVIEW2&)-1),0,Rgb(255,255,255))'färben

ENDSELECT

 
28.01.2012  
 



 
- Seite 2 -



Julian
Schmidt
Ja, funzt nicht....
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
28.01.2012  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

10.806 Betrachtungen

Unbenanntvor 0 min.
Heiko Dix29.10.2023
Michael W.07.07.2016
Christof Neuß11.01.2016
Peter Max Müller16.04.2015
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