1。怎么得到控件自己的NAME;
例如:一个BUTTON1的ONCLICK事件里面
var:
name:string;
begin
name:=self.name;//始终是窗体的名字。我想在这里得到本按钮的名字。
end;
2。如下代码。在窗口的ONSHOW里面
var
i,j:integer;
str,str1:sting;
temp:component;
begin
for i:=form1.componentcount-1 downto 0 do
begin
temp:=component[i];
str:=getname();//得到一个按钮的名字
str1:=temp.name;
j:=comparetext(str,str1);
if j=0 then
temp.free;///我想在这是这里实现:temp.enabled:=false;(但却不行)
end;
end;
请问怎么才能实现我想要的效果呢?即我只想让他不可用。
例如:一个BUTTON1的ONCLICK事件里面
var:
name:string;
begin
name:=self.name;//始终是窗体的名字。我想在这里得到本按钮的名字。
end;
2。如下代码。在窗口的ONSHOW里面
var
i,j:integer;
str,str1:sting;
temp:component;
begin
for i:=form1.componentcount-1 downto 0 do
begin
temp:=component[i];
str:=getname();//得到一个按钮的名字
str1:=temp.name;
j:=comparetext(str,str1);
if j=0 then
temp.free;///我想在这是这里实现:temp.enabled:=false;(但却不行)
end;
end;
请问怎么才能实现我想要的效果呢?即我只想让他不可用。
begin
Caption := Tbutton(Sender).Name;
end
所以你可以这样 buttonname := self.Button1.name;
注意:self代表类的实例,还有名字最好不要与属性的名字相同,使用其他的名称,如buttonname等。
2.你第二段代码意图是什么,请讲明,已经发现有明显的语法问题。
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
str,str1:string;
temp:Tcomponent;
begin
for i:=form1.componentcount-1 downto 0 do
begin
temp:= Self.Components[i];
str:= 'Button1';
str1 :=temp.name;
j:=comparetext(str,str1);
if comparetext(str,str1)= 0 then
begin
if temp.ClassName = 'TButton' then
Tbutton(Temp).Enabled := false;
//这里很麻烦,你用了多少种控件,一个一个的列吧,:( end;
end;
end;
就是这句
Tbutton(temp).Enabled := false;
2.第二段程序的代码是想实现在一个窗体SHOW时.逐一判断按钮是不是我得到的那个按钮的名字。
如果是,则将其enabled置为FALSE;注按钮个数和类型也是在SHOW时不知道的。
TO miky:
我的按钮个数和类型都不确定啊。
i,j:integer;
str,str1:sting;
temp:component;
begin
for i:=form1.componentcount-1 downto 0 do
begin
temp:=component[i];
str:=getname();//得到一个按钮的名字
str1:=temp.name;
if SameText(str, str1) then
temp.enabled:=false;
end;
end;