EJunGrid使用总结

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;

你可能感兴趣的:(grid)