通过名称动态引用对象(100分)

  • 主题发起人 主题发起人 liyijincom
  • 开始时间 开始时间
L

liyijincom

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样:
[?]在FORM上有10个按纽,名称为button1..button10
想通过程序动态改变其中的某个的caption属性,该怎么做?


请高手指点
小弟对delphi不是好熟
 
改一下
procedure TForm1.Button1Click(Sender: TObject);

var
i: Integer;
const
NamePrefix = 'MyEdit';
begin
for i := 1 to 20 do begin
TEdit.Create(Self).Name := NamePrefix + IntToStr(i);
with TEdit(FindComponent(NamePrefix + IntToStr(i))) do
begin
Left := 10;
Top := i * 20;
Parent := self;
end;
end;
end;
 
在Form里可以直接改,Button1.Caption:='XXX';
 
Tbutton(FindComponent('button1')).Caption:='change it';
 
我只是想在外部的其它地方主动去改变它
 
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
const
myName = 'button';
begin
for i := 1 to 10 do begin
with TButton(FindComponent(myName + IntToStr(i))) do
begin
caption:='caption'
end;
end;
end;
 
小人物的方法可能行,我先试试
 
procedure TForm1.Button1Click(Sender: TObject);
var
j,i: Integer;
const
myName = 'button';
begin
.....

i:= N;
for j := ComponentCount - 1 downto 0 do
begin
if Components[j].Name = MyName + inttstr(i) then
if Components[j] is Tbutton then
begin
(Components[j] as Tbutton).Caption := 随便你怎么叫 ..
做一些其它的.....
end;
end;
end;
 
另外,引用FindComponent,要uses中要加什么?
系统提示,没有定义

用的是第三方控件,应该没有什么关系吧
 
??
没有,它是一个方法,正常是使用SELF的FINDCOMPONENT
 
我都不知道为何,会出现这样的事,但的确说没有定义
 
uses Classes;
 
Classes已经有了,但不行
 
在外部,须包含BUTTON1所在的窗体的头文件
 
我正在调试中,如果过了,即送分
 
谢谢几位,已经解决
 
后退
顶部