Flex wird nicht sauber dargestellt

30/05/2008 - 10:31 von Ahmed Martens | Report spam
Hallo Leute,

ich habe ein Problem. Und zwar werden gruppierte Werte nicht immer
sauber dargestellt. Nachfolgend habe ich mal den Prog-Code eingefügt,
wie das Flexgrid gefüllt und farblich gestalltet wird.
Sobald ich einen ganz bestimmten Befehl inaktiv setze, wird alles bis
auf eine Stelle richtig dargestellt (keine Gruppierung).

Anbei auch 2 Bilder für Klarstellung. Die in dem Bild
'falsche_Darstellung' ausgegrauten Felder sind richtig mit Werten
gefüllt. Sobald ich diese auch anklicke, werde sie auch gruppiert
dargestellt. Es verbleibt dann aber ein dicker gepunkteter Rahmen um
diese Felder.

In der 'richtigen_Darstellung' wird alles richtig angezeigt, aber eben 2
bestimmte Zellen nicht richtig gruppiert.

1. Falsche Darstellung, aber richtige Gruppierung:
http://img91.imageshack.us/my.php?i...ungby8.jpg

2. Richtige Darstellung, aber fehlende Gruppierung:
http://img49.imageshack.us/my.php?i...unguc3.jpg


Und hier der gesamte Prog-Code:

Private Sub Form_Initialize()


Call Design_Flexgrid(flexTest, 2)


End Sub


Public Sub Get_Investabzugsbetrag(myFlex As MSFlexGrid, MdNr As Long, iJahr As Integer)
Dim dbsInvest As Database
Dim recInvest As Recordset
Dim ProgPfad As String
Dim UserID As Integer
Dim sql As String
Dim blnFarbe As Boolean
Dim iRows As Long




Dim i As Integer

programmpfad = GetSetting("Kanzlei", "Standardwerte", "Programmpfad")
120 programmpfad = programmpfad & "\DokMa"
130 dokma = "\" & GetSetting("DokMa", "Settings", "DokMA-DB", "DokMa.mdb")
140 UserID = GetSetting("Kanzlei", "Standardwerte", "Mitarbeiternummer")


sql = "SELECT tblInvestitionsabzugsbetràge.* From tblInvestitionsabzugsbetràge WHERE (((tblInvestitionsabzugsbetràge.MdNr)116) AND ((tblInvestitionsabzugsbetràge.Jahr_Abzugsbetrag) Between " & iJahr & " And " & (iJahr - 4) & ")) order BY tblInvestitionsabzugsbetràge.ID;"

Set dbsInvest = OpenDatabase(programmpfad & dokma)
Set recInvest = dbsInvest.OpenRecordset(sql)

With recInvest
.MoveLast
.MoveFirst
End With

With myFlex
.Redraw = False

.Rows = (recInvest.RecordCount * 2) + .FixedRows



'Zeilenformate
blnFarbe = False
For i = (.FixedRows + 2) To .Rows Step 2
If blnFarbe = True Then
.FillStyle = flexFillRepeat
.Row = i - 2
'.RowSel = .Rows - 1
.Col = .FixedCols
.ColSel = .Cols - 1
.CellBackColor = &HC0E0FF

.Row = i - 1
'.RowSel = .Rows - 1
.Col = .FixedCols
.ColSel = .Cols - 1
.CellBackColor = &HC0E0FF

blnFarbe = False
Else
blnFarbe = True
End If
Next




blnFarbe = False
'Spaltenformatierung
For i = 3 To (.Cols - 3) Step 5
.FillStyle = flexFillRepeat

If blnFarbe = False Then
For q = 1 To 5
.Col = (q + i)
.Row = .FixedRows
.RowSel = .Rows - 1

.CellBackColor = &HC0FFC0

Next
blnFarbe = True
Else
For q = 1 To 5
.Col = (q + i)
.Row = .FixedRows
.RowSel = .Rows - 1

.CellBackColor = vbWhite
Next

blnFarbe = False
End If
Next





End With




Do While recInvest.EOF = False
iJahr = recInvest.Fields("Jahr_Abzugsbetrag")
With myFlex

iRows = ((recInvest.AbsolutePosition + 1) * 2) + .FixedRows




.FillStyle = flexFillSingle

'Zeilenformatierungen
For i = 3 To .Cols - 1

If Right(.TextMatrix(0, i), 4) = iJahr Then




.TextMatrix(iRows - 2, 0) = recInvest.Fields("ID")
.TextMatrix(iRows - 1, 0) = recInvest.Fields("ID")



*Wenn ich diese beiden Zeilen auskommentiere, wird zwar alles richtig
*wie Bild 2 dargestellt, aber nicht richtig gruppiert.
*Ansonsten habe ich diesen Darstellungsfehler.

' .MergeRow(iRows - 2) = True
' .MergeCells = flexMergeFree

.TextMatrix(iRows - 2, 1) = recInvest.Fields("Bezeichnung_WG")
.TextMatrix(iRows - 2, 2) = recInvest.Fields("Bezeichnung_WG")


.TextMatrix(iRows - 1, 1) = recInvest.Fields("Funktion_WG")
.TextMatrix(iRows - 2, 3) = Format(recInvest.Fields("Anschaffungskosten"), "#,##0.00")
.TextMatrix(iRows - 1, 2) = Format(recInvest.Fields("max_%"), "Percent")
.TextMatrix(iRows - 1, 3) = Format(recInvest.Fields("Investitionsabzugsbetrag"), "#,##0.00")



.Row = iRows - 1
.Col = i
'.MergeCol(i) = True
'.CellAlignment = flexAlignCenterCenter
.CellFontName = "Marlett"
.CellFontSize = 16


.Row = iRows - 2
.Col = i
'.MergeCol(i) = True
'.CellAlignment = flexAlignCenterCenter
.CellFontName = "Marlett"
.CellFontSize = 16


.TextMatrix(iRows - 1, i) = "a"
.TextMatrix(iRows - 2, i) = "a"

For q = 1 To 4
' .MergeCells = flexMergeRestrictColumns
' .MergeCol(i + q) = True
'.CellAlignment = flexAlignCenterCenter

'.TextMatrix(.Rows - 2, i + q) = " "
Select Case recInvest.Fields("J" & q)


Case 0 'nicht geprüft
.TextMatrix(iRows - 2, i + q) = " "
.TextMatrix(iRows - 1, i + q) = " "

Case 1 'erfüllt

.Row = iRows - 1
.Col = i + q
.CellFontName = "Marlett"
.CellFontSize = 16


.Row = iRows - 2
.Col = i + q
.CellFontName = "Marlett"
.CellFontSize = 16

.TextMatrix(iRows - 2, i + q) = "a"
.TextMatrix(iRows - 1, i + q) = "a"

Case 2 'nicht erfüllt

.Row = iRows - 1
.Col = i + q
.CellFontName = "Wingdings 2"
.CellFontSize = 16
.CellBackColor = vbRed
.TextMatrix(iRows - 2, i + q) = "V"
.TextMatrix(iRows - 1, i + q) = "V"

.Row = iRows - 2
.Col = i + q
.CellFontName = "Wingdings 2"
.CellFontSize = 16
.CellBackColor = vbRed
.TextMatrix(iRows - 2, i + q) = "V"
.TextMatrix(iRows - 1, i + q) = "V"



End Select


Next

'.Rows = .Rows + 2
Exit For
End If

Next


End With

recInvest.MoveNext


Loop



blnFarbe = False
myFlex.Redraw = True

recInvest.Close
dbsInvest.Close
Set recInvest = Nothing
Set dbsInvest = Nothing





End Sub


Public Sub Design_Flexgrid(myFlex As MSFlexGrid, Optional Steuer As Integer)
Dim i As Long, q As Integer
With myFlex
.Redraw = False
.Clear
.RowHeight(0) = 300

For i = 0 To .Cols - 1
.ColWidth(i) = 1300
Next

'kràftiger Rahmen aktive Zelle
'.FocusRect = flexFocusHeavy =nur bei MSHFlexgrid
.FillStyle = flexFillRepeat
Select Case Steuer

Case 0 'USt. = Standard
[Snip unwichtig]
Case 1 'ESt.
[Snip unwichtig]

Case 2 'Investitionsabzugsbetrag

Dim myJahr As Integer

myJahr = Year(Now()) - 1

.Cols = 29
.Rows = 4
.MergeRow(0) = True
.MergeCells = flexMergeFree

.ColWidth(0) = 900

For i = 0 To .Cols - 1
.Row = 0
.Col = i
.CellFontBold = True
.Row = 1
.Col = i
.CellFontBold = True

Next
.MergeCol(0) = True
.Row = 1
.Col = 0
.CellAlignment = flexAlignCenterCenter
.TextMatrix(0, 0) = "ID"
.TextMatrix(1, 0) = "ID"

For i = 1 To 2
.TextMatrix(0, i) = "Bezeichnung WG"
Next
.ColWidth(1) = 4000

.TextMatrix(1, 1) = "Funktion"
.TextMatrix(1, 2) = "max. %"
.ColWidth(2) = 900

For i = 0 To 1
.Col = 3
.Row = i
.CellAlignment = flexAlignRightCenter
Next
.ColWidth(3) = 1600
.TextMatrix(0, 3) = "AK WG"
.TextMatrix(1, 3) = "Invest.-Abzug"

Y = 4
For q = 0 To 4
Z = 0

For i = (4 + (q * 5)) To (9 + (q * 5)) - 1

.ColWidth(i) = 350
' .Col = i
' .Row = 0
.ColAlignment(i) = flexAlignCenterCenter

'.CellAlignment = flexAlignCenterCenter
.TextMatrix(0, i) = "Jahr " & myJahr - Y

' .Col = i
' .Row = 1
'.CellAlignment = flexAlignCenterCenter
.TextMatrix(1, i) = Format(DateSerial(myJahr - Y + Z, 1, 1), "YY")
Z = Z + 1

Next
Y = Y - 1
Next

For q = 4 To .Cols - 1
.Row = .Rows - 2
.MergeCol(q) = True
Next

End Select

.Redraw = True
End With

End Sub


Hat jemand eine Idee woran das liegen kann und wie ich es behebe?

Gruß Ahmed
Antworten bitte nur in der Newsgroup.
 

Lesen sie die antworten

#1 Ahmed Martens
31/05/2008 - 15:50 | Warnen spam
Hat denn keiner eine Idee?


Am Fri, 30 May 2008 10:31:23 +0200 schrieb Ahmed Martens:

Hallo Leute,

ich habe ein Problem. Und zwar werden gruppierte Werte nicht immer
sauber dargestellt. Nachfolgend habe ich mal den Prog-Code eingefügt,
wie das Flexgrid gefüllt und farblich gestalltet wird.
Sobald ich einen ganz bestimmten Befehl inaktiv setze, wird alles bis
auf eine Stelle richtig dargestellt (keine Gruppierung).

Anbei auch 2 Bilder für Klarstellung. Die in dem Bild
'falsche_Darstellung' ausgegrauten Felder sind richtig mit Werten
gefüllt. Sobald ich diese auch anklicke, werde sie auch gruppiert
dargestellt. Es verbleibt dann aber ein dicker gepunkteter Rahmen um
diese Felder.

In der 'richtigen_Darstellung' wird alles richtig angezeigt, aber eben 2
bestimmte Zellen nicht richtig gruppiert.

1. Falsche Darstellung, aber richtige Gruppierung:
http://img91.imageshack.us/my.php?i...ungby8.jpg

2. Richtige Darstellung, aber fehlende Gruppierung:
http://img49.imageshack.us/my.php?i...unguc3.jpg


Und hier der gesamte Prog-Code:

Private Sub Form_Initialize()


Call Design_Flexgrid(flexTest, 2)


End Sub


Public Sub Get_Investabzugsbetrag(myFlex As MSFlexGrid, MdNr As Long, iJahr As Integer)
Dim dbsInvest As Database
Dim recInvest As Recordset
Dim ProgPfad As String
Dim UserID As Integer
Dim sql As String
Dim blnFarbe As Boolean
Dim iRows As Long




Dim i As Integer

programmpfad = GetSetting("Kanzlei", "Standardwerte", "Programmpfad")
120 programmpfad = programmpfad & "\DokMa"
130 dokma = "\" & GetSetting("DokMa", "Settings", "DokMA-DB", "DokMa.mdb")
140 UserID = GetSetting("Kanzlei", "Standardwerte", "Mitarbeiternummer")


sql = "SELECT tblInvestitionsabzugsbetràge.* From tblInvestitionsabzugsbetràge WHERE (((tblInvestitionsabzugsbetràge.MdNr)116) AND ((tblInvestitionsabzugsbetràge.Jahr_Abzugsbetrag) Between " & iJahr & " And " & (iJahr - 4) & ")) order BY tblInvestitionsabzugsbetràge.ID;"

Set dbsInvest = OpenDatabase(programmpfad & dokma)
Set recInvest = dbsInvest.OpenRecordset(sql)

With recInvest
.MoveLast
.MoveFirst
End With

With myFlex
.Redraw = False

.Rows = (recInvest.RecordCount * 2) + .FixedRows



'Zeilenformate
blnFarbe = False
For i = (.FixedRows + 2) To .Rows Step 2
If blnFarbe = True Then
.FillStyle = flexFillRepeat
.Row = i - 2
'.RowSel = .Rows - 1
.Col = .FixedCols
.ColSel = .Cols - 1
.CellBackColor = &HC0E0FF

.Row = i - 1
'.RowSel = .Rows - 1
.Col = .FixedCols
.ColSel = .Cols - 1
.CellBackColor = &HC0E0FF

blnFarbe = False
Else
blnFarbe = True
End If
Next




blnFarbe = False
'Spaltenformatierung
For i = 3 To (.Cols - 3) Step 5
.FillStyle = flexFillRepeat

If blnFarbe = False Then
For q = 1 To 5
.Col = (q + i)
.Row = .FixedRows
.RowSel = .Rows - 1

.CellBackColor = &HC0FFC0

Next
blnFarbe = True
Else
For q = 1 To 5
.Col = (q + i)
.Row = .FixedRows
.RowSel = .Rows - 1

.CellBackColor = vbWhite
Next

blnFarbe = False
End If
Next





End With




Do While recInvest.EOF = False
iJahr = recInvest.Fields("Jahr_Abzugsbetrag")
With myFlex

iRows = ((recInvest.AbsolutePosition + 1) * 2) + .FixedRows




.FillStyle = flexFillSingle

'Zeilenformatierungen
For i = 3 To .Cols - 1

If Right(.TextMatrix(0, i), 4) = iJahr Then




.TextMatrix(iRows - 2, 0) = recInvest.Fields("ID")
.TextMatrix(iRows - 1, 0) = recInvest.Fields("ID")



*Wenn ich diese beiden Zeilen auskommentiere, wird zwar alles richtig
*wie Bild 2 dargestellt, aber nicht richtig gruppiert.
*Ansonsten habe ich diesen Darstellungsfehler.

' .MergeRow(iRows - 2) = True
' .MergeCells = flexMergeFree

.TextMatrix(iRows - 2, 1) = recInvest.Fields("Bezeichnung_WG")
.TextMatrix(iRows - 2, 2) = recInvest.Fields("Bezeichnung_WG")


.TextMatrix(iRows - 1, 1) = recInvest.Fields("Funktion_WG")
.TextMatrix(iRows - 2, 3) = Format(recInvest.Fields("Anschaffungskosten"), "#,##0.00")
.TextMatrix(iRows - 1, 2) = Format(recInvest.Fields("max_%"), "Percent")
.TextMatrix(iRows - 1, 3) = Format(recInvest.Fields("Investitionsabzugsbetrag"), "#,##0.00")



.Row = iRows - 1
.Col = i
'.MergeCol(i) = True
'.CellAlignment = flexAlignCenterCenter
.CellFontName = "Marlett"
.CellFontSize = 16


.Row = iRows - 2
.Col = i
'.MergeCol(i) = True
'.CellAlignment = flexAlignCenterCenter
.CellFontName = "Marlett"
.CellFontSize = 16


.TextMatrix(iRows - 1, i) = "a"
.TextMatrix(iRows - 2, i) = "a"

For q = 1 To 4
' .MergeCells = flexMergeRestrictColumns
' .MergeCol(i + q) = True
'.CellAlignment = flexAlignCenterCenter

'.TextMatrix(.Rows - 2, i + q) = " "
Select Case recInvest.Fields("J" & q)


Case 0 'nicht geprüft
.TextMatrix(iRows - 2, i + q) = " "
.TextMatrix(iRows - 1, i + q) = " "

Case 1 'erfüllt

.Row = iRows - 1
.Col = i + q
.CellFontName = "Marlett"
.CellFontSize = 16


.Row = iRows - 2
.Col = i + q
.CellFontName = "Marlett"
.CellFontSize = 16

.TextMatrix(iRows - 2, i + q) = "a"
.TextMatrix(iRows - 1, i + q) = "a"

Case 2 'nicht erfüllt

.Row = iRows - 1
.Col = i + q
.CellFontName = "Wingdings 2"
.CellFontSize = 16
.CellBackColor = vbRed
.TextMatrix(iRows - 2, i + q) = "V"
.TextMatrix(iRows - 1, i + q) = "V"

.Row = iRows - 2
.Col = i + q
.CellFontName = "Wingdings 2"
.CellFontSize = 16
.CellBackColor = vbRed
.TextMatrix(iRows - 2, i + q) = "V"
.TextMatrix(iRows - 1, i + q) = "V"



End Select


Next

'.Rows = .Rows + 2
Exit For
End If

Next


End With

recInvest.MoveNext


Loop



blnFarbe = False
myFlex.Redraw = True

recInvest.Close
dbsInvest.Close
Set recInvest = Nothing
Set dbsInvest = Nothing





End Sub


Public Sub Design_Flexgrid(myFlex As MSFlexGrid, Optional Steuer As Integer)
Dim i As Long, q As Integer
With myFlex
.Redraw = False
.Clear
.RowHeight(0) = 300

For i = 0 To .Cols - 1
.ColWidth(i) = 1300
Next

'kràftiger Rahmen aktive Zelle
'.FocusRect = flexFocusHeavy =nur bei MSHFlexgrid
.FillStyle = flexFillRepeat
Select Case Steuer

Case 0 'USt. = Standard
[Snip unwichtig]
Case 1 'ESt.
[Snip unwichtig]

Case 2 'Investitionsabzugsbetrag

Dim myJahr As Integer

myJahr = Year(Now()) - 1

.Cols = 29
.Rows = 4
.MergeRow(0) = True
.MergeCells = flexMergeFree

.ColWidth(0) = 900

For i = 0 To .Cols - 1
.Row = 0
.Col = i
.CellFontBold = True
.Row = 1
.Col = i
.CellFontBold = True

Next
.MergeCol(0) = True
.Row = 1
.Col = 0
.CellAlignment = flexAlignCenterCenter
.TextMatrix(0, 0) = "ID"
.TextMatrix(1, 0) = "ID"

For i = 1 To 2
.TextMatrix(0, i) = "Bezeichnung WG"
Next
.ColWidth(1) = 4000

.TextMatrix(1, 1) = "Funktion"
.TextMatrix(1, 2) = "max. %"
.ColWidth(2) = 900

For i = 0 To 1
.Col = 3
.Row = i
.CellAlignment = flexAlignRightCenter
Next
.ColWidth(3) = 1600
.TextMatrix(0, 3) = "AK WG"
.TextMatrix(1, 3) = "Invest.-Abzug"

Y = 4
For q = 0 To 4
Z = 0

For i = (4 + (q * 5)) To (9 + (q * 5)) - 1

.ColWidth(i) = 350
' .Col = i
' .Row = 0
.ColAlignment(i) = flexAlignCenterCenter

'.CellAlignment = flexAlignCenterCenter
.TextMatrix(0, i) = "Jahr " & myJahr - Y

' .Col = i
' .Row = 1
'.CellAlignment = flexAlignCenterCenter
.TextMatrix(1, i) = Format(DateSerial(myJahr - Y + Z, 1, 1), "YY")
Z = Z + 1

Next
Y = Y - 1
Next

For q = 4 To .Cols - 1
.Row = .Rows - 2
.MergeCol(q) = True
Next

End Select

.Redraw = True
End With

End Sub


Hat jemand eine Idee woran das liegen kann und wie ich es behebe?

Gruß Ahmed





Gruß Ahmed

Antworten bitte nur in der Newsgroup

Ähnliche fragen