| 
   
    | ...align Cells in StringGrid? |   
    | Autor: 
      Thomas Stutz |  | [ Print tip 
] |  |  |  
 
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;Rect: TRect; State: TGridDrawState);
 
 procedure WriteText(StringGrid: TStringGrid; ACanvas: TCanvas; const ARect: TRect;
 const Text: string; Format: Word);
 const
 DX = 2;
 DY = 2;
 var
 S: array[0..255] of Char;
 B, R: TRect;
 begin
 with Stringgrid, ACanvas, ARect do
 begin
 case Format of
 DT_LEFT: ExtTextOut(Handle, Left + DX, Top + DY,
 ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length(Text), nil);
 
 DT_RIGHT: ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY,
 ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text),
 Length(Text), nil);
 
 DT_CENTER: ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div 2,
 Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect,
 StrPCopy(S, Text), Length(Text), nil);
 end;
 end;
 end;
 
 procedure Display(StringGrid: TStringGrid; const S: string; Alignment: TAlignment);
 const
 Formats: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
 begin
 WriteText(StringGrid, StringGrid.Canvas, Rect, S, Formats[Alignment]);
 end;
 begin
 // Right-justify columns 0-2
 // Spalten 0-2 rechts ausrichten.
 if ACol in [0..2] then
 Display(StringGrid1, StringGrid1.Cells[ACol, ARow], taRightJustify)
 
 // Center the first row
 // Erste zeile zentrieren
 if ARow = 0 then
 Display(StringGrid1, StringGrid1.Cells[ACol, ARow], taCenter)
 end;
 
 
 
   |