解决马上散分:关于Findcomponent,感觉不容易

cnhxjtoa 2007-07-21 05:21:49
已知控件可以利用:Tedit(FindComponent('Edit'+inttostr(i))).Text等完成赋值操作. 但未知的已知控件如何赋值呢? 如:下面我的问题:
我在窗体里放了Pagecontrol控件,它所有的页面都是由程序创建的.
由于页面内需要创建的控件可能很多,所以我又在TabSheet里,由程序创建了ScrollBox控件以实现加一个滚动条的效果.它的名字相应的叫ScrollBox1,2,3...
问题:我如何给未知的已知控件赋值?
ScrollBox1.FindComponent
...全文
245 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhxjtoa 2007-07-23
  • 打赏
  • 举报
回复
for K:= 0 to ScrollBox.ControlCount - 1 do
begin
if ScrollBox.Controls[k] is TEdit then
(ScrollBox.Controls[K] as TEdit).Text := '....'
else
// memo1.Lines.Add(ScrollBox.Components[K].Name); //这样写不正确 memo1.Lines.Add(ScrollBox.Controls[K].Name); //Controls
end;
DelphiJavaDominoVB 2007-07-23
  • 打赏
  • 举报
回复
for K := 0 to ScrollBox.ComponentCount - 1 do
begin
if ScrollBox.Components[K] is TEdit then
(ScrolLBox.Components[K] as TEdit).Text := '....';
end;
你认定它是文本编辑框,这样不好吧.而一个录入窗口有很多种类型的控件.
if (ScrollBox.FindComponent('yourname'+inttostr(PageControl1.TabIndex)+'_'+inttostr(k)) is Tedit) then begin
....
end;
DelphiJavaDominoVB 2007-07-23
  • 打赏
  • 举报
回复
知道控件名如何得知它是什么类型的控件?
liu19801204 2007-07-23
  • 打赏
  • 举报
回复
帮顶
cnhxjtoa 2007-07-23
  • 打赏
  • 举报
回复
写的不错!
日总是我哥 2007-07-21
  • 打赏
  • 举报
回复
随手写一下,楼主自己调试

var
I, J, K: Integer;
ScrollBox: TScrollBox;
begin
for I := 0 to PageControl.Count - 1 do
begin
for J := 0 to PageControl.Pages[I].ComponentCount - 1 do
begin

if PageControl.Page[I].Components[J] is TScrollBox then
begin
ScrollBox := PageControl.Page[I].Components[J] as TScrollBox;
for K := 0 to ScrollBox.ComponentCount - 1 do
begin
if ScrollBox.Components[K] is TEdit then
(ScrolLBox.Components[K] as TEdit).Text := '....';
end;
Break;
end;
end;
end;
end;
shadowstar 2007-07-21
  • 打赏
  • 举报
回复
遍历

5,930

社区成员

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

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