델파이 쌩초보자입니다.
AdvStringGrid 의 첫번째 row에 있는 문자의 길이에 맞게 각각의 column의 width의
값을 조절하고 싶습니다. 도와주세요.
------------------------------------------------------------------------------
생각을 해낸게 문자중에서 가장 긴 문자열에 맞춰서 column의 길이를 setting을
할려고 해보았는데 그것도 안되네요...
for y:=0 to AdvStringGrid1.RowCount-1 do
begin
for x:=0 to AdvStringGrid1.ColCount-1 do
begin
if Length(AdvStringGrid1.cells[x,y])>max then begin
max := Length(AdvStringGrid1.cells[x,y]);
end;
end;
end;
AdvStringGrid1.DefaultColWidth := max;
end;
출력이 끝난후에
AdvStringGrid1.autosize := true;
를 사용사시면 자동으로 맞춰 줍니다.
인쇄시에는 화면에 보이는대로 출력이 안되더군요. 그럴경우 다음을 사용하면 될겁니다.
오른쪽 맞춤과 가운데 맞춤이 적용된거같은데 조금 변형해서 쓰시면 될겁니다.... 즐 프하세요.
procedure Tfm.AdvStringGrid1CustomCellDraw(Sender: TObject;
Canvas: TCanvas; ACol, ARow: Integer; AState: TGridDrawState;
ARect: TRect; Printing: Boolean);
var t_str,chk_str : string;
begin
InflateRect(arect,-5,-5);
Canvas.Pen.Color := clBlack;
if arow=0 then begin
Canvas.Font.Size := 14;
Canvas.Font.Style := [fsBold];
end
else begin
Canvas.Font.Size := 8;
Canvas.Font.Style := [];
end;
if asg_jot.IsBaseCell(ACol,ARow) then
begin
t_str := asg.cells[acol,arow];
if IsNum(StringReplace(t_str, ',', '', [rfReplaceAll]))then begin
// Canvas.Font.Size := 6;
Canvas.TextOut(ARect.Right-Canvas.Textwidth(t_str)-Canvas.Textwidth(')')-1 ,ARect.Top+((ARect.Bottom-ARect.Top-Canvas.TextHeight(t_str)) div 2),t_str);
end
else begin
// Canvas.Font.Size := 7;
Canvas.TextOut(ARect.left+ ((ARect.right-ARect.left-Canvas.Textwidth(t_str)) div 2) ,ARect.Top+((ARect.Bottom-ARect.Top-Canvas.TextHeight(t_str)) div 2),t_str);
end;
exit;
end;
end;