OnDrawcell et insertion texte
Bonjour,
Je viens vers vous pour résoudre un petit soucis avec mon projet sous Lazarus.
Cela fait un bout de temps que je n'ai plus développé et j'ai tout oublié ou presque.
Voilà, je réalise un petit soft qui a pour but de gérer les absences du personnel d'une entreprise.
Dans mon projet, j'ai un objet TStringGrid qui représente le calendrier annuel. Je souhaite faire apparaitre dans la première et dernière ligne, le nom des mois, et dans la première et dernière colonne, le numéro des jours.
A l'aide de OnDrawCell, je réalise mes bordures de cellules et mes fonds en couleur sans problème.
Mais quand je lui insère le text de la cellule à l'aide de Cells[Acool, Arow] = IntToStr(Arow) (pour les lignes), il plante au débogage...
Voici comment j'ai construit ma procédure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| procedure TForm1.MonCalDrawCell(Sender: TObject; aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState);
begin
With Sender As TStringGrid Do With Canvas Do
Begin
clear;
// Colonne de Gauche
if (acol = 0) and (arow>0) and (arow < moncal.rowCount-1) then
begin
Canvas.Brush.Color := clMoneyGreen;
Canvas.FillRect(arect);
Pen.Color:=clgreen;
Canvas.MoveTo(aRect.Right, aRect.Top);
Canvas.LineTo(aRect.left, aRect.Top);
Canvas.LineTo(aRect.left, aRect.Bottom);
Canvas.LineTo(aRect.Right, aRect.Bottom);
Cells[Acol,Arow] := Inttostr(Arow) ;
end;
// Colonne de Droite
if (acol = Moncal.ColCount-1) and (arow >0) and (arow < Moncal.rowCount-1) then
begin
Canvas.Brush.Color := clMoneyGreen;
Canvas.FillRect(arect);
Pen.Color:=clgreen;
Canvas.MoveTo(aRect.Right, aRect.Top);
Canvas.LineTo(aRect.left, aRect.Top);
Canvas.LineTo(aRect.left, aRect.Bottom);
Canvas.LineTo(aRect.Right, aRect.Bottom);
Cells[Acol,Arow] := Inttostr(Arow) ;
end;
DrawText(Canvas.Handle, PChar(Cells[ACol,ARow]), -1, aRect, DT_CENTER or DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE );
End;
end; |
Merci de bien vouloir m'aider... je suis un peu perdu