Perlu dicatat, bahwa prosedur ini untuk produk tercetak berupa list belum diimplemetasikan.
Prosedur ini tercakup dalam utility.pas. dan digunakan bersamaan dengan fungsi PrintTStrings pada sesi pencetakan memo.
===
procedure RenderForm(AForm: TForm; ACanv: TCanvas);
var i,j,x,y :integer;
cn: TControl;
s,tm: string;
NormalKeyBoardChar:string;
function CleanAccelChar(sc:string):string;
var idx:integer;
begin
result:=”;
for idx:=1 to length(sc) do
if sc[idx]<>’&’ then result:= result+sc[idx];
end;
begin
NormalKeyBoardChar := ‘ 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()-_+=|\,<.>/?:;”‘+#39;
for i:= 0 to AForm.ControlCount -1 do
begin
s:=”;
cn:= AForm.Controls[i];
if cn.Visible then
begin
if cn is TLabel then
begin
ACanv.Font := TLabel(cn).Font;
S:= TLabel(cn).Caption;
if Trim(s)<>” then
begin
if (TLabel(cn).FocusControl<>nil) then
begin
s:=CleanAccelChar(s);
end;
if ACanv.TextWidth(TLabel(cn).Caption)<=cn.Width then
begin
case TLabel(cn).Alignment of
taLeftjustify: x:= cn.Left + 1;
taRightjustify: x:= cn.Left + cn.Width – ACanv.TextWidth(S)-1;
taCenter: x:= cn.Left + (( cn.Width -Â ACanv.TextWidth(S))div 2);
end;
ACanv.TextOut(x,cn.Top +1,s);
end
else
PrintTStrings(s,cn.BoundsRect,ACanv,TLabel(cn).Alignment,15);
end;
end else
if cn is TEdit then
begin
ACanv.Font := TEdit(cn).Font;
S:= TEdit(cn).Text;
if Trim(s)<>” then
begin
j:= (cn.Height – ACanv.TextHeight(‘0′)) div 2;
ACanv.TextOut(cn.Left+1,cn.Top + j,S);
end;
end else
if cn is TCurrencyEdit then
begin
ACanv.Font := TCurrencyEdit(cn).Font;
if TCurrencyEdit(cn).Value <> 0 then
begin
s:= Format(‘%.0n’,[TCurrencyEdit(cn).Value]);
j:= (cn.Height – ACanv.TextHeight(‘0′)) div 2;
ACanv.TextOut(cn.Left+cn.Width-2-ACanv.TextWidth(S),cn.Top+J,S);
end;
end else
if cn is TSpinEdit then
begin
ACanv.Font := TSpinEdit(cn).Font;
if TSpinEdit(cn).Value <> 0 then
begin
s:= Inttostr(TSpinEdit(cn).Value);
j:= (cn.Height – ACanv.TextHeight(‘0′)) div 2;
ACanv.TextOut(cn.Left+cn.Width-2-ACanv.TextWidth(S),cn.Top+J,S);
end;
end else
if cn is TPanel then
begin
ACanv.Font := TPanel(cn).Font;
S:= TPanel(cn).Caption;
if Trim(s)<>” then
begin
j:= (cn.Height – ACanv.TextHeight(‘0′)) div 2;
case TPanel(cn).Alignment of
taLeftJustify: x := cn.Left + 2;
taRightJustify:x := cn.Left + cn.Width – ACanv.TextWidth(S) – 2;
taCenter:Â Â Â x:=Â cn.Left + ((cn.Width – ACanv.TextWidth(S) ) div 2);
else x:= cn.Left + 2;
end;
ACanv.TextOut(x,cn.Top+J,S);
end;
end else
if cn is TImage then
begin
ACanv.StretchDraw(cn.BoundsRect,TImage(cn).Picture.Bitmap)
end else
if cn is TShape then
begin
//tmpb := ACanv.Brush;
//ACanv.Brush := TShape(cn).Brush;
ACanv.Rectangle(cn.BoundsRect);
//ACanv.Brush := tmpb;
end else
if cn is TMaskEdit then
begin
ACanv.Font := TMaskEdit(cn).Font;
S:= TMaskEdit(cn).Text;
if Trim(s)<>” then
begin
j:= (cn.Height – ACanv.TextHeight(‘0′)) div 2;
ACanv.TextOut(cn.Left+1,cn.Top + j,S);
end;
end else
if cn is TComboBox then
begin
ACanv.Font := TComboBox(cn).Font;
S:= TComboBox(cn).Text;
if trim(s)<>” then
begin
j:= (cn.Height – ACanv.TextHeight(‘0′)) div 2;
ACanv.TextOut(cn.Left+1,cn.Top + j,S);
end;
end else
if cn is TDateTimePicker then
begin
ACanv.Font := TDateTimePicker(cn).Font;
S:= DateToStr(TDateTimePicker(cn).Date);
j:= (cn.Height – ACanv.TextHeight(‘0′)) div 2;
ACanv.TextOut(cn.Left+1,cn.Top + j,S);
end else
if cn is TMemo then
begin
ACanv.Font := TMemo(cn).Font;
{tm:= DelNonListedChar(TMemo(cn).lines.Text,NormalKeyBoardChar);
if Trim(tm)<>” then
begin
y:=0;
repeat
s:= ”;
x:= 1;
repeat
Informate(inttostr(x));
s:= s+tm[x];
x:= x+1;
if x>length(tm) then break;
until ACanv.TextWidth(s)> cn.Width;
j:= 0;
ACanv.TextOut(cn.Left+1,cn.Top + j + y ,S);
y:= y+(3*ACanv.TextHeight(‘0′) div 2 );
Delete(tm,1,x);
until tm=”;
end;}
PrintTStrings(TMemo(cn).Text,cn.BoundsRect,ACanv,TMemo(cn).Alignment,20);
end;
end;
end;
end;
===
Prosedur yang tertulis di sini dapat saja berubah disebabkan HTML-TAG-STRIPTING. Untuk menghindari kesalahan silakan lihat di file library yang disertakan dalam paket source DFGEN versi terakhir.
==
Salam bahagia







































