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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| procedure TFenetrePrincipale.StringGrid_planningDrawCell(Sender: TObject;
ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
sql: String;
rs: _Recordset;
urgence: integer;
i: Integer;
valeur: String;
couleur: TColor;
X,Y:Integer;
begin
//Couleur de fond de l'élément sélectionné
if gdSelected in State then
begin
StringGrid_Planning.Canvas.Brush.Style := bsSolid;
StringGrid_Planning.Canvas.fillrect (rect);
end;
if (ACol <> 0) and (ARow <> 0) then
begin
valeur := StringGrid_Planning.Cells[ACol,ARow];
couleur := clWhite; // couleur par defaut
if (valeur <> '') then
begin
sql := 'Select urgence from Demande where numero_demande='+valeur;
rs := requete.execCommande(sql,FenetrePrincipale.ADODataSet_Global);
urgence := rs.Fields[0].Value;
//Couleur du fond de la cellule
if (urgence=3) then
begin
//faible 3
couleur := clWhite;
end
else if (urgence=2) then
begin
//normale 2
couleur := clSkyBlue;
end
else if (urgence=1) then
begin
//urgente 1
couleur := clYellow;
end
else if (urgence=0) then
begin
//tres urgente 0
couleur := clRed;
end;
end;
if (valeur <> '') then
begin
StringGrid_Planning.Canvas.Brush.Color := couleur;
StringGrid_Planning.Canvas.FrameRect(rect);
//alignement horizontal
X:=Rect.Left + (Rect.Right-Rect.Left-StringGrid_Planning.Canvas.TextWidth(valeur)) div 2;
// alignement vetical
Y:=Rect.Top + (Rect.Bottom-Rect.Top-StringGrid_Planning.Canvas.TextHeight(valeur)) div 2;
StringGrid_Planning.Canvas.TextRect(Rect,X,Y,valeur);
end;
end;
//alignement des cellules de titre
for i:=1 to StringGrid_Planning.RowCount do
begin
valeur := StringGrid_Planning.Cells[i,0];
//alignement horizontal
X:=Rect.Left + (Rect.Right-Rect.Left-StringGrid_Planning.Canvas.TextWidth(valeur)) div 2;
// alignement vetical
Y:=Rect.Top + (Rect.Bottom-Rect.Top-StringGrid_Planning.Canvas.TextHeight(valeur)) div 2;
if ((ACol = i) and (ARow = 0)) then
StringGrid_Planning.Canvas.TextRect(Rect,X,Y,valeur);
end;
//alignement des cellules de personnes
for i:=0 to StringGrid_Planning.RowCount do
begin
valeur := StringGrid_Planning.Cells[0,i];
//alignement horizontal
X:=Rect.Left + (Rect.Right-Rect.Left-StringGrid_Planning.Canvas.TextWidth(valeur)) div 2;
// alignement vetical
Y:=Rect.Top + (Rect.Bottom-Rect.Top-StringGrid_Planning.Canvas.TextHeight(valeur)) div 2;
if ((ACol = 0) and (ARow = i)) then
StringGrid_Planning.Canvas.TextRect(Rect,X,Y,valeur);
end;
end; |
Partager