vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Tipp 2080: Einzelne Zeilen im ListView färben (Hintergrund und Schrift) 
Autor: pspaeth
 Tipp anzeigenDatum: 10.03.10 16:38

Hallo zusammen,

obwohl ich genau 1:1 den Code oben übernommen habe, führt der Click auf den Button zum sofortigen Absturz von Access. Bereits der erste Aufruf "SetLIBackColor ListView1, 3, vbRed" führt zum sofortigen Exitus. Nach Aufruf des Task Managers kann man seltsamerweise im Hintergrund wieder die Einträge der Listview aktivieren, jedoch muss Access letztlich "hart" beendet werden.

Ich nutze Access 2003 SP3, Windows XP SP3.

Hat vielleicht jemand eine Idee ???

Danke und viele Grüße
Peter
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Einzelne Zeilen im ListView färben (Hintergrund und Schrift) 
Autor: ModeratorDieter (Moderator)
Datum: 11.03.10 00:49

P.S.: Der Tipp wurde für VB6 erstellt - nicht für VBA.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Einzelne Zeilen im ListView färben (Hintergrund und Schrift) 
Autor: pspaeth
Datum: 11.03.10 08:32

OK, als geborener "Nicht Programmierer" und selbsterlernter VBA Nerd kann ich VB6 und VBA nicht wirklich auseinanderhalten - lauffähig bzw. absturzfähig war er ja auch unter VBA

Gibt's denn da auch was für VBA (oder wahlweise von ratiopharm...) ???
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Einzelne Zeilen im ListView färben (Hintergrund und Schrift) 
Autor: vbfranz
Datum: 01.06.10 12:40

Hallo,
ich habe eine Form mit 3 ListView's (LV).
Die erste LV möchte ich einfärben.
Wenn ich nun die erste LV einfärbe, werden die anderen beiden LV's ebenfalls gleich eingefärbt.
Z.B.: wenn in der ersten Liste die zweite und vierte Zeile eingefärbt wird, sind die anderen LV's ebenfalls in der zweiten und vierten Zeile eingefärbt.

Was mache ich falsch?

Ich habe die Programmaufrufe folgend geteilt:
Zuerst starte ich InitColors und InitColorCombo - hier werden keine LV's angesprochen.
Dann das subclassing:
Public Sub SubclassingO_activate()
    With fListen
        If bColor = False Then
            ' Subclassing aktivieren
            ReDim Preserve clrtext(.LV(0).ListItems.Count)
            ReDim Preserve clrtextbk(.LV(0).ListItems.Count)
            g_MaxItems = .LV(0).ListItems.Count - 1
            g_addProcOld = SetWindowLong(.hWnd, GWL_WNDPROC, AddressOf _
              WindowProc)
            bColor = True
        End If
    End With
End Sub
und dann färbe ich die erste LV mit FillColor.
For iA = 1 To myObjListe.Count
     Obj_FillColor myObjListe.Item(iA), iA
Next
 
Public Sub Obj_FillColor(ByVal Obj As BObj, ByVal iB As Integer)
    Dim irec        As IRecord
    Dim lColor      As Long
 
    Set irec = Obj
    With fListen
        If irec.Field("BackColor") > 10 Then
            lColor = CLng(irec.Field("BackColor"))
            SetLIBackColor .LV(0), iB, lColor
        Else
            SetLIBackColor .LV(0), iB, vbWhite
        End If
        '------------------------------------
        If irec.Field("ForeColor") > 10 Then
            lColor = CLng(irec.Field("ForeColor"))
            SetLIForeColor .LV(0), iB, lColor
        Else
            SetLIForeColor .LV(0), iB, vbBlack
        End If
    End With
End Sub
Die anderen LV's {LV(1) und LV(2)} werden hier gar nicht angesprochen!

Im Voraus besten Dank für Eure Hilfe
vbfranz
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Einzelne Zeilen im ListView färben (Hintergrund und Schrift) Nachtrag 
Autor: vbfranz
Datum: 01.06.10 12:58

Hallo,
ich habe eine zweite Version laufen:
Dabei ist nur die Reihenfolge der LV's vertauscht.
Die erste LV ist die LV(2), dann kommt die LV(1) und dann die LV(0).
Wenn ich den Aufruf der subclassing und der Färbung auskommentiere funktioniert alles korrekt, obwohl dieser Teil gar nicht durchlaufen wird!
Hier der entsprechende Aufruf:
    Select Case iListShow
    Case 2  
        .....
        '--------------------------------------
        ' Subclassing aktivieren
'        SubclassingA_activate
        '--------------------------------------
        'Listenzeilen einfärben
'        For iA = 1 To myAdrListe.Count
'            Adr_FillColor myAdrListe.Item(iA), iA
'        Next
    Case Else  
        ....  <= Holen der Listendaten aus einer DB.
        '--------------------------------------
        ' Subclassing aktivieren
        SubclassingO_activate
        '--------------------------------------
        'Listenzeilen einfärben
        For iA = 1 To myObjListe.Count
            Obj_FillColor myObjListe.Item(iA), iA
        Next
    End Select
Was muss ich tun, damit es funktioniert?

Danke
vbfranz
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Einzelne Zeilen im ListView färben (Hintergrund und Schrift) Nachtrag 2 
Autor: vbfranz
Datum: 02.06.10 14:46

Hallo,
ich habe mir den Code des Tips nochmals genauer angeschaut.

Wahrscheinlich kann die Function "WindowProc" nicht zwischen mehreren LV's unterscheiden.

Was kann ich tun, um dieses Problem zu beheben?

Wahrscheinlich müssen einige Typen (NMLVCUSTOMDRAW, NMCUSTOMDRAW)angepasst und die Sub's "SetLIBackColor" und "SetLIForeColor" und vielleicht auch das Subclassing (g_Maxitems) angepasst werden.

Kann mir bitte jemand auf die Sprünge helfen?

Danke
vbfranz

PS.: Den Nachtrag1 kann ich nicht mehr nachvollziehen, das war wahrscheinlich nur eine Eintagsfliege!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel