Ik ben met een projectje bezig waarvoor ik een stringgrid heb op mijn form. Bij dit stringgrid heb ik op de drawcell event een functie zitten die kijkt of de cell een bepaalde kleur nodig heeft.
Dit ziet er als volgt uit:
Waarbij calendar.GetColor(ACol, ARow) dus de kleur ophaalt uit een calendar object wat ik daarvoor aan heb gemaakt.
In het calendar object worden de kleuren dan ook in een dubbele array bijgehouden.
Daarnaast gebruik ik methodes in calendar die de stringgrid meekrijgen. Bijvoorbeeld:
Nu treden er soms onverklaarbare access violations op, waarbij ik denk dat het komt door het gebruiken van gui componenten in de calendar klasse en door het gebruik van het calendar object in de GUI drawcell methode.
Hoe zou ik dit het beste kunnen oplossen, is dit makkelijk af te vangen op een bepaalde manier?
Dit ziet er als volgt uit:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| procedure TForm1.sgrCalendarDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var dx: Integer; begin with (Sender as TStringGrid) do begin // Don't change color for first Column, first row if (ACol = 0) or (ARow = 0) then Canvas.Brush.Color := clBtnFace else begin // Draw the color if calendar.GetColor(ACol, ARow) <> 0 then Canvas.Brush.Color := calendar.GetColor(ACol, ARow); Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]); Canvas.FrameRect(Rect); end; end; end; |
Waarbij calendar.GetColor(ACol, ARow) dus de kleur ophaalt uit een calendar object wat ik daarvoor aan heb gemaakt.
In het calendar object worden de kleuren dan ook in een dubbele array bijgehouden.
Daarnaast gebruik ik methodes in calendar die de stringgrid meekrijgen. Bijvoorbeeld:
Delphi:
1
| calendar.SetLookAndFeel(stringgrid); |
Nu treden er soms onverklaarbare access violations op, waarbij ik denk dat het komt door het gebruiken van gui componenten in de calendar klasse en door het gebruik van het calendar object in de GUI drawcell methode.
Hoe zou ik dit het beste kunnen oplossen, is dit makkelijk af te vangen op een bepaalde manier?