更改窗體上的控件的caption(97分)

  • 主题发起人 主题发起人 chl720
  • 开始时间 开始时间
C

chl720

Unregistered / Unconfirmed
GUEST, unregistred user!
我們可以通過ComponentCount來找出窗體上所有的控件, 也可以通過
Components.Name 知到其名程, findcomponent 可檢測控件的存在,
我想知到怎樣可一修改它的caption ;
我的想法是在一個表建立 : name, caption 子段, 來對應
但控件類是不確定的,在程序端如何讓窗體上的控件的caption值取數據表中的值
謝謝了!
全送了
 
TControl(FindComponent('edit1')).Caption := 'abc';
 
用rtti来枚举找到的控件的属性,如果有caption属性就可以用修改之
 
用SendMessage()向所有的控件发送WM_SETTEXT消息
 
用下面的代码:
procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ControlCount - 1do
begin
Controls.Perform(WM_SETTEXT, 0, Longint(PChar('test')));
Controls.Perform(CM_TEXTCHANGED, 0, 0);
end;
end;
 
更简单的:
procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ControlCount - 1do
Controls.SetTextBuf('abcdefg');
end;
 
多人接受答案了。
 
procedure TForm1.RzButton1Click(Sender: TObject);
var i:integer;
begin
with self.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from sys_name');
open;
first;
while not eofdo
begin
temp:=fieldbyname('name').AsString;
cap:=fieldbyname('caption1').AsString;
for i:=0 to self.ControlCount -1 do
begin
if self.Controls.Name=temp then
begin
Controls.SetTextBuf('asdfasd');
break;
end;
end;
next;
end;

end;

為什么不行呢? 表里有相應的字段!
 
如果把
temp:=fieldbyname('name').AsString;
.............
if self.Controls.Name=temp then

改為 if self.Controls.Name='Button1' then

那么就可以 具體的指到某一控件就可以 ! 為什么呢
 
知到問題在那了
if self.Controls.Name=trim(temp)
這樣就沒問題了
謝謝以上的給各位朋友!
 
后退
顶部