1 1。0版沒有實現垂直方向上的對齊,
procedure TOBGUI_ReportDesign.gridDrawCellText(ACanvas: TCanvas; const ARect:
TRect; const ACoord: TPoint; AGrid: TZJGrid; const Text: String; var
ADefaultDraw: Boolean);
begin
if agrid.Cells[acoord.X,acoord.Y].TextAlign = gaTopCenter then
begin
adefaultdraw := false;
acanvas.TextRect(arect,(arect.Right-arect.Left-acanvas.TextWidth(text)) div 2+arect.Left,
arect.Top,text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign = gaBottomCenter then
begin
adefaultdraw := false;
acanvas.TextRect(arect,(arect.Right-arect.Left-acanvas.TextWidth(text)) div 2+arect.Left,
arect.Bottom-acanvas.TextHeight(text),text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign = gaTopLeft then
begin
adefaultdraw := false;
acanvas.TextRect(arect,arect.Left,arect.Top,text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign =gaTopRight then
begin
adefaultdraw := false;
acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),arect.Top,text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign =gaBottomLeft then
begin
adefaultdraw:= false;
acanvas.TextRect(arect,arect.Left,arect.Bottom-acanvas.TextHeight(text),text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign =gabottomright then
begin
adefaultdraw := false;
acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),arect.Bottom-acanvas.TextHeight(text),text);
end;
end;
2 暈,2。5版更厲害,所有的對齊都不管用,還有如果按照上面的方式修改之後,
當使用了非gaCenterCenter對齊之後,在cell上面設定顏色的話,無法刷出顏色來。但是cell的背景色的值確實被設定。
所以如下,主要利用canvas:
procedure TOBGUI_ReportDesign.gridDrawCellText(ACanvas: TCanvas;
const ARect: TRect; const ACoord: TPoint; AGrid: TEjunGrid;
const Text: String; var ADefaultDraw: Boolean);
begin
if agrid.Cells[acoord.X,acoord.Y].TextAlign = gaTopCenter then
begin
adefaultdraw := false;
ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
ACanvas.Rectangle(ARect);
acanvas.TextRect(arect,(arect.Right-arect.Left-acanvas.TextWidth(text)) div 2+arect.Left,
arect.Top,text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign = gaBottomCenter then
begin
adefaultdraw := false;
ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
ACanvas.Rectangle(ARect);
acanvas.TextRect(arect,(arect.Right-arect.Left-acanvas.TextWidth(text)) div 2+arect.Left,
arect.Bottom-acanvas.TextHeight(text),text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign = gaTopLeft then
begin
adefaultdraw := false;
ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
ACanvas.Rectangle(ARect);
acanvas.TextRect(arect,arect.Left,arect.Top,text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign =gaTopRight then
begin
adefaultdraw := false;
ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
ACanvas.Rectangle(ARect);
acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),arect.Top,text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign =gaBottomLeft then
begin
adefaultdraw:= false;
ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
ACanvas.Rectangle(ARect);
acanvas.TextRect(arect,arect.Left,arect.Bottom-acanvas.TextHeight(text),text);
end
else
if grid.Cells[acoord.X,acoord.Y].TextAlign =gabottomright then
begin
adefaultdraw := false;
ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
ACanvas.Rectangle(ARect);
acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),
arect.Bottom-acanvas.TextHeight(text),text);
end
else
if grid.Cells[ACoord.X,ACoord.Y].TextAlign= gacenterleft then
begin
adefaultdraw := false;
ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
ACanvas.Rectangle(ARect);
acanvas.TextRect(arect,arect.Left,
(arect.Bottom-ARect.Top-ACanvas.TextHeight(text))div 2+ARect.Top,text);
end
else
if grid.Cells[ACoord.X,ACoord.Y].TextAlign= gacenterright then
begin
adefaultdraw := false;
ACanvas.Brush.Color := AGrid.Cells[ACoord.X,ACoord.Y].Color;
ACanvas.Rectangle(ARect);
acanvas.TextRect(arect,arect.Right-acanvas.TextWidth(text),
(arect.Bottom-ARect.Top-ACanvas.TextHeight(text))div 2+ARect.Top,text);
end;
end;