FASTREPORT如何动态设置组件长度

jobslew2603765 2008-10-27 11:39:58
FASTREPORT如何动态设置组件长度
我的想法是:通过设定的纸张来确定纸张的width,
然后来设置我的memo的宽度,但是memo的宽度,不能设定,要不总是不对
例如:我的page1.width=182
但是我一运行我们的报表
memo1.width=139.811
memo2.width=143.61121
memo3.width=120.811
memo4.width=128.6040
我就没有办法给我的memo5设置width了,请教为什么呢?


...全文
482 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jobslew2603765 2008-10-30
  • 打赏
  • 举报
回复
我用过4.2的,但是不能调整字体,
如果选择了字体,中文显示只能显示一半,
怎么调整都没有用
llh6795 2008-10-29
  • 打赏
  • 举报
回复
帮顶ING
genispan 2008-10-29
  • 打赏
  • 举报
回复
我用fastreport4.0 默认是CM的
jobslew2603765 2008-10-29
  • 打赏
  • 举报
回复
你报表page的单位你设置了吗?
page默认是mm,你需要设置为pixel

我没有看到整个page的属性是设置mm,或者是pixel的啊?
jobslew2603765 2008-10-29
  • 打赏
  • 举报
回复
你报表page的单位你设置了吗?
page默认是mm,你需要设置为pixel


设置了这个,就可以用厘米来控制位置,长度了吗?
zdgood 2008-10-29
  • 打赏
  • 举报
回复
学习!
火龙岛主 2008-10-29
  • 打赏
  • 举报
回复
你报表page的单位你设置了吗?
page默认是mm,你需要设置为pixel
jobslew2603765 2008-10-28
  • 打赏
  • 举报
回复
filename:=ExtractFilePath(paramstr(0))+'\data\setting.ini';
FStream := TIniFile.Create(filename);

try
with page1 do
begin
if trim((FStream.ReadString('Marge','Left','')))<>'' then
begin
leftmargin:=strtofloat(trim((FStream.ReadString('Marge','Left',''))));
page1.leftmargin:= leftmargin;

end;
if trim((FStream.ReadString('Marge','Top','')))<>''then
begin
topmargin:=strtofloat(trim((FStream.ReadString('Marge','Top',''))));
page1.TopMargin:=topmargin;
end;
if trim((FStream.ReadString('Marge','Right','')))<>''then
begin
rightmargin:=strtofloat(trim((FStream.ReadString('Marge','Right',''))));
page1.RightMargin:=rightmargin;
end;
if trim((FStream.ReadString('Marge','Bottom','')))<>''then
begin

bottommargin:=strtofloat(trim((FStream.ReadString('Marge','Bottom',''))));
page1.BottomMargin:=bottommargin;
end;
//读取的纸张的大小,保存在ini文件中。
strpage:=trim((FStream.ReadString('Paper','PaperName','')));
begin
if strpage='A4' THEN
begin
page1.PaperSize:=DMPAPER_A4;
end
else if strpage='B5' THEN
begin
PaperSize:=DMPAPER_B5;
// pagewidth 182 paperheighth 257
PAPERHEIGTH:=page1.PaperHeight ;

paperwidth:=page1.PaperWidth ;

//取得实际的页面的大小,计算去掉左右边距后,报表的宽度。
Widthpage:=page1.PaperWidth-page1.LeftMargin-page1.RightMargin ;

header1.Width :=Widthpage ;

masterdata1.Width :=Widthpage ;

memo28.Left :=0;
memo29.Left :=memo28.Left+memo28.Width ;
memo30.Left :=memo29.Left+memo29.Width ;
memo31.Left :=memo30.Left+memo30.Width ;
memo32.Left :=memo31.Left+memo31.Width ;

memo32.Left:=Widthpage -(memo28.Width+memo29.Width +memo30.Width +memo31.Width );

end
else //custom 自定义纸张
begin
// ShowMessage('custom');
filename:=ExtractFilePath(paramstr(0))+'\data\setting.ini';
FStream1 := TIniFile.Create(filename);
try
Page1.PaperHeight:=strtoint(trim(FStream1.ReadString('UserPaper','length','')));
Page1.Paperwidth:=strtoint(trim((FStream1.ReadString('UserPaper','Width',''))));
ShowMessage('Page1.PaperHeight:'+FloatToStr(Page1.PaperHeight));
ShowMessage('Page1.Paperwidth:'+FloatToStr(Page1.Paperwidth));
finally
FStream1.Free;
end;


end;



end;

end;
finally
FStream.Free;
end;
jobslew2603765 2008-10-28
  • 打赏
  • 举报
回复
filename:=ExtractFilePath(paramstr(0))+'\data\setting.ini';
FStream := TIniFile.Create(filename);

try
with page1 do
begin
if trim((FStream.ReadString('Marge','Left','')))<>'' then
begin
leftmargin:=strtofloat(trim((FStream.ReadString('Marge','Left',''))));
page1.leftmargin:= leftmargin;

end;
if trim((FStream.ReadString('Marge','Top','')))<>''then
begin
topmargin:=strtofloat(trim((FStream.ReadString('Marge','Top',''))));
page1.TopMargin:=topmargin;
end;
if trim((FStream.ReadString('Marge','Right','')))<>''then
begin
rightmargin:=strtofloat(trim((FStream.ReadString('Marge','Right',''))));
page1.RightMargin:=rightmargin;
end;
if trim((FStream.ReadString('Marge','Bottom','')))<>''then
begin

bottommargin:=strtofloat(trim((FStream.ReadString('Marge','Bottom',''))));
page1.BottomMargin:=bottommargin;
end;
//读取的纸张的大小,保存在ini文件中。
strpage:=trim((FStream.ReadString('Paper','PaperName','')));
begin
if strpage='A4' THEN
begin
page1.PaperSize:=DMPAPER_A4;
end
else if strpage='B5' THEN
begin
PaperSize:=DMPAPER_B5;
// pagewidth 182 paperheighth 257
PAPERHEIGTH:=page1.PaperHeight ;

paperwidth:=page1.PaperWidth ;

//取得实际的页面的大小,计算去掉左右边距后,报表的宽度。
Widthpage:=page1.PaperWidth-page1.LeftMargin-page1.RightMargin ;

header1.Width :=Widthpage ;

masterdata1.Width :=Widthpage ;

memo28.Left :=0;
memo29.Left :=memo28.Left+memo28.Width ;
memo30.Left :=memo29.Left+memo29.Width ;
memo31.Left :=memo30.Left+memo30.Width ;
memo32.Left :=memo31.Left+memo31.Width ;

memo32.Left:=Widthpage -(memo28.Width+memo29.Width +memo30.Width +memo31.Width );

end
else //custom 自定义纸张
begin
// ShowMessage('custom');
filename:=ExtractFilePath(paramstr(0))+'\data\setting.ini';
FStream1 := TIniFile.Create(filename);
try
Page1.PaperHeight:=strtoint(trim(FStream1.ReadString('UserPaper','length','')));
Page1.Paperwidth:=strtoint(trim((FStream1.ReadString('UserPaper','Width',''))));
ShowMessage('Page1.PaperHeight:'+FloatToStr(Page1.PaperHeight));
ShowMessage('Page1.Paperwidth:'+FloatToStr(Page1.Paperwidth));
finally
FStream1.Free;
end;


end;



end;

end;
finally
FStream.Free;
end;
cncharles 2008-10-28
  • 打赏
  • 举报
回复
你的代码是在FastReport脚本中写的还是程序中写的? 另外Memo的AutoWidth要设为False.
yeah920 2008-10-28
  • 打赏
  • 举报
回复
只能帮顶。希望有人来解答。
火龙岛主 2008-10-28
  • 打赏
  • 举报
回复
你是怎么写的代码,代码贴一下。
jobslew2603765 2008-10-27
  • 打赏
  • 举报
回复
我的纸张可以自定义的,而且我的memo1,等都是在A4的情况下设定的长度,
当我的纸张的宽度变化了,我的memo没有变化,所以,就出现了,控件的长度比
page的宽度还宽,
我也不明白了,

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧