控件如何在垂直方向上连着排布(流式布局)?

ooolinux 2020-09-25 10:27:58
比如,一道题目下面四个选项,再下面按钮,题目可能很长,用Label可以自动换行吗?下面的控件要紧接着Label,如何实现较好,只能用代码来调整控件的Top属性吗?
...全文
1060 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2020-10-09
  • 打赏
  • 举报
回复
引用 33 楼 早打大打打核战争 的回复:
多放几个,后面的根据选项数目不显示

不显示的话位置不好处理。
  • 打赏
  • 举报
回复
多放几个,后面的根据选项数目不显示
ooolinux 2020-10-08
  • 打赏
  • 举报
回复
引用 31 楼 qq_457565758的回复:
radiobutton.Align = alTop radiobutton .WordWrap = True
暂时用的radiogroup,把问题简化了,假定有且只有四个选项且选项不会太长。如果选项可能为3至6个需要动态生成控件了。
lao_yunger 2020-10-08
  • 打赏
  • 举报
回复
radiobutton.Align = alTop radiobutton .WordWrap = True
ooolinux 2020-09-29
  • 打赏
  • 举报
回复
引用 26 楼 早打大打打核战争的回复:
Form的AutoSize = true即可,我的原则是能设计完成的就不写代码
Form如果AutoSize为true会不会Label变得很长但是自动折行wordwrap失效了?
  • 打赏
  • 举报
回复
Form的AutoSize = true即可,我的原则是能设计完成的就不写代码
ooolinux 2020-09-29
  • 打赏
  • 举报
回复
引用 28 楼 hj8090 的回复:
Form.AutoSize应该是Form上的所有控件都适应了位置后才执行的,调整Form的尺寸,适应Form上的组件。 就是上下,左右不留空白位置。
引用 29 楼 早打大打打核战争 的回复:
form上有panel控制宽度就没问题
可以的,窗体宽度不会变化,可能因为RadioGroup的原因,只有它没有AutoSize的属性。
  • 打赏
  • 举报
回复
form上有panel控制宽度就没问题
hj8090 2020-09-29
  • 打赏
  • 举报
回复
Form.AutoSize应该是Form上的所有控件都适应了位置后才执行的,调整Form的尺寸,适应Form上的组件。 就是上下,左右不留空白位置。
ooolinux 2020-09-28
  • 打赏
  • 举报
回复
引用 24 楼 秋天之落叶的回复:
[quote=引用 23 楼 ooolinux的回复:] 就是几个控件Align对齐都设为alTop,同时设置margin边距。 两个按钮放在一个Panel里,Panel的Bevel都设为None就看不出来了。
选项有多有少、有长有短的时候怎么办?还是用函数封装好。[/quote] 如果要完全适配各种可能情况还是要用代码。
秋天之落叶 2020-09-28
  • 打赏
  • 举报
回复
引用 23 楼 ooolinux的回复:
就是几个控件Align对齐都设为alTop,同时设置margin边距。 两个按钮放在一个Panel里,Panel的Bevel都设为None就看不出来了。
选项有多有少、有长有短的时候怎么办?还是用函数封装好。
ooolinux 2020-09-28
  • 打赏
  • 举报
回复
就是几个控件Align对齐都设为alTop,同时设置margin边距。 两个按钮放在一个Panel里,Panel的Bevel都设为None就看不出来了。
ooolinux 2020-09-28
  • 打赏
  • 举报
回复
引用 19 楼 秋天之落叶 的回复:
这个我做过,form上加一个richedit,然后创建单选或复选框,调整间距即可: for i := 0 to usl.count - 1 do begin if Trim(usl[i]) <> '' then begin ucb[i] := TCheckBox.Create(nil); ucb[i].Parent := TabSheet25; ucb[i].Font.name := uricheditwenti.Font.name; ucb[i].Font.size := uricheditwenti.Font.size - 3; ucb[i].Left := uricheditwenti.Left + 30; ucb[i].top := uricheditwenti.Height + Trunc(-uricheditwenti.Font.Height * 3.4 * (i + 1)) - 65; ucb[i].Width := uricheditxuanxiang.Width - 60; ucb[i].Height := -uricheditwenti.Font.Height * 3 + 3; ucb[i].Caption := ' ' + Trim(usl[i]); ucb[i].WordWrap := True; ucb[i].BringToFront; ucb[i].OnMouseUp := myMouseUp; end; end;
这个代码有点麻烦。
秋天之落叶 2020-09-28
  • 打赏
  • 举报
回复
创建的TCheckBox本来就可以设置为自动换行,只考虑上下的间距即可。 我考虑问题项最多150个汉字,以此计算间距,你可以自己确定一个数值。
秋天之落叶 2020-09-28
  • 打赏
  • 举报
回复
效果图
秋天之落叶 2020-09-28
  • 打赏
  • 举报
回复
这个我做过,form上加一个richedit,然后创建单选或复选框,调整间距即可: for i := 0 to usl.count - 1 do begin if Trim(usl[i]) <> '' then begin ucb[i] := TCheckBox.Create(nil); ucb[i].Parent := TabSheet25; ucb[i].Font.name := uricheditwenti.Font.name; ucb[i].Font.size := uricheditwenti.Font.size - 3; ucb[i].Left := uricheditwenti.Left + 30; ucb[i].top := uricheditwenti.Height + Trunc(-uricheditwenti.Font.Height * 3.4 * (i + 1)) - 65; ucb[i].Width := uricheditxuanxiang.Width - 60; ucb[i].Height := -uricheditwenti.Font.Height * 3 + 3; ucb[i].Caption := ' ' + Trim(usl[i]); ucb[i].WordWrap := True; ucb[i].BringToFront; ucb[i].OnMouseUp := myMouseUp; end; end;
hj8090 2020-09-28
  • 打赏
  • 举报
回复
只有确定方向就简单了,低版本的就用DrawText显示标题和计算标题高度,同时设置radiogroup和button的高度。 高版本的我没试过。
ooolinux 2020-09-28
  • 打赏
  • 举报
回复
引用 16 楼 ooolinux 的回复:
[quote=引用 15 楼 hj8090 的回复:]看了这么多都没看出来楼主到底想实现什么,

1:大多数控件都有Align属性(没有的可放置到Panel等容器中),依次设置为alTop,就是所谓的流式布局;
中间要间隔也可以通过放个panel什么的。

2:memo+radiogroup就可以实现,文字多了,memo可显示进度条;

3:确实要居中显示文本,用DrawText计算下区域在DrawText一次就可以了;

答题时题目用滚动条才能显示完整不显示[/quote]
不现实
ooolinux 2020-09-28
  • 打赏
  • 举报
回复
引用 15 楼 hj8090 的回复:
看了这么多都没看出来楼主到底想实现什么,

1:大多数控件都有Align属性(没有的可放置到Panel等容器中),依次设置为alTop,就是所谓的流式布局;
中间要间隔也可以通过放个panel什么的。

2:memo+radiogroup就可以实现,文字多了,memo可显示进度条;

3:确实要居中显示文本,用DrawText计算下区域在DrawText一次就可以了;

答题时题目用滚动条才能显示完整不显示
hj8090 2020-09-28
  • 打赏
  • 举报
回复
看了这么多都没看出来楼主到底想实现什么, 1:大多数控件都有Align属性(没有的可放置到Panel等容器中),依次设置为alTop,就是所谓的流式布局; 中间要间隔也可以通过放个panel什么的。 2:memo+radiogroup就可以实现,文字多了,memo可显示进度条; 3:确实要居中显示文本,用DrawText计算下区域在DrawText一次就可以了;
加载更多回复(14)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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