| |
| 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! | Fragen zu Tipps & Tricks und Workshops im vb@rchivTipp 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 | |
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...) ??? | |
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 | |
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 | |
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! | |
| Sie sind nicht angemeldet! Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere Infos
|
|
|
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
|
|