当前位置:主页>仓库管理软件> 列表

FR中怎样动态改变Memo位置 找免费财务软件

仓库管理软件版1楼: 在FR中,有四个Memo,排列如下:
Memo1
Memo2
Memo3
Memo4
如果Memo1无内容,则Memo2、Memo3、Memo4的位置逐级向上递增一个,即Memo2的位置上升到Memo1的位置,Memo3的位置上长到Memo2的位置;
如果Memo2和Memo3都无内容,则Memo4上升到Memo2的位置,即如果Memo无内容,有内容的Memo一直上升到上一个有内容的Memo的下边。

请教各位高手,在FR中如何实现。

2楼: 放一个Penal到窗体上,然后所有的Memo放到Panel上,Align属性为alTop,没有内容的Memo都隐藏起来呗 如免费网吧管理软件

3楼: TO:royal1442

我说的是在FastReport中的Memo

4楼: FastReport我不熟悉。不好意思。

5楼: var H: double;
begin
H := Memo2.Top-Memo1.Top;
if Memo1.Text = '''' then
begin
Memo1.Visible := False;
Memo2.Top := Memo2.Top-H;
Memo3.Top := Memo3.Top-H;
Memo4.Top := Memo4.Top-H;
end;
if Memo2.Text = '''' then
begin
Memo3.Top := Memo3.Top-H;
Memo4.Top := Memo4.Top-H;


end;
if Memo3.Text = '''' then
begin
Memo4.Top := Memo4.Top-H;
end;
end;
Page--BeforePrint事件(FastReport3.0)

6楼: TO:Leadyli
你的代码无法解决Memo1和Memo3同时为空
或 Memo2和Memo4同时为空时的Memo位置问题

能否告诉你的EmaiL,好和你联系

仓库管理软件版7楼: 忘了:当Memo的Text为空时,要把当前Memo的Visable设为False;
我的邮箱:leadyli@163.com

8楼: TO:Leadyli
还是不行,当memo1和memo3同时为空时,字段会重叠。

9楼: var H: double;
begin
H := Memo2.Top-Memo1.Top;
if Memo1.Text = '''' then
begin
Memo1.Visible := False;
if Memo2.Text <> '''' then
Memo2.Top := Memo2.Top-H;
if Memo3.Text <> '''' then
Memo3.Top := Memo3.Top-H;
if Memo4.Text <> '''' then
Memo4.Top := Memo4.Top-H;
end;
if Memo2.Text = '''' then
begin
Memo2.Visible := False;
if Memo3.Text <> '''' then
Memo3.Top := Memo3.Top-H;
if Memo4.Text <> '''' then
Memo4.Top := Memo4.Top-H;


end;
if Memo3.Text = '''' then
begin
Memo3.Visible := False;
if Memo4.Text <> '''' then
Memo4.Top := Memo4.Top-H;
end;
Memo4.Visible := Memo4.Text <> '''';
end;

10楼: 还是不行

11楼: 上面的方法不對。
先要對四個控件的Top,Height,Width記錄下來,然後再建立一下變量Count:=4;
這個變量是每個控件有無數據時是否減1,然後取相關的Top,Height,Width
這樣就很方面的實現了。

12楼: 我觉得用动态创建Memo来实现会简单些。 如免费财务软件

13楼: 我已实现,谢谢各位

仓库管理软件版14楼: 多人接受答案了。