更改运行时创建的元素样式
change runtime created element style
我有 5 个元素是在 运行 时间创建的,像这样
NewButton := TImageViewer.Create(Self);
with NewButton do
begin
Parent := Self;
Bitmap.LoadFromStream(InStream);
Height := 80;
Width := 80;
tag:=leftx;
Position.X := leftx;
Position.Y := 5;
OnClick := WaitingButtonsClick;
Enabled := True;
Visible := True;
Name := 'but' + IntToStr(leftx);
end;
leftx := leftx+85;
所以元素有自己的名字和标签
现在用户点击图片后我必须更改加载的图片
所以我在点击后得到了元素上的名字
procedure TForm1.WaitingButtonsClick(Sender: TObject);
begin
// ShowMessage( (Sender as TAction).ActionComponent.Name );
ShowMessage(TImageViewer(Sender).Name);
// id := TButton(Sender).tag;
// showmessage('slm'+id.ToString);
end;
ok.after 获取元素的名称 我如何更改目标文件或样式!?
您似乎正在将类型 TImageViewer
的对象转换为 TButton
。
像这样更改您的点击处理程序:
procedure TForm1.WaitingButtonsClick(Sender: TObject);
var
viewer: TImageViewer;
begin
viewer := Sender as TImageViewer;
// Change file or style of viewer
//viewer.Bitmap.LoadFromFile(....);
...
end;
通常,总是使用 as
运算符来转换对象:
viewer := Sender as TImageViewer
- 正确
对
viewer := TImageViewer(Sender)
- 错误
好处是 as
运算符会为您执行安全检查,并在您尝试转换为不兼容的类型时发出警告。
第二种变体只能在变量是普通指针(不是对象)的情况下使用,而且很少需要这种情况。
不建议同时使用表单上的位置来使组件名称唯一。
最好再想出一个组件名称创建方案
例如,您可以在表单中定义一个计数器并将该计数器添加到组件的名称中。
我有 5 个元素是在 运行 时间创建的,像这样
NewButton := TImageViewer.Create(Self);
with NewButton do
begin
Parent := Self;
Bitmap.LoadFromStream(InStream);
Height := 80;
Width := 80;
tag:=leftx;
Position.X := leftx;
Position.Y := 5;
OnClick := WaitingButtonsClick;
Enabled := True;
Visible := True;
Name := 'but' + IntToStr(leftx);
end;
leftx := leftx+85;
所以元素有自己的名字和标签
现在用户点击图片后我必须更改加载的图片
所以我在点击后得到了元素上的名字
procedure TForm1.WaitingButtonsClick(Sender: TObject);
begin
// ShowMessage( (Sender as TAction).ActionComponent.Name );
ShowMessage(TImageViewer(Sender).Name);
// id := TButton(Sender).tag;
// showmessage('slm'+id.ToString);
end;
ok.after 获取元素的名称 我如何更改目标文件或样式!?
您似乎正在将类型 TImageViewer
的对象转换为 TButton
。
像这样更改您的点击处理程序:
procedure TForm1.WaitingButtonsClick(Sender: TObject);
var
viewer: TImageViewer;
begin
viewer := Sender as TImageViewer;
// Change file or style of viewer
//viewer.Bitmap.LoadFromFile(....);
...
end;
通常,总是使用 as
运算符来转换对象:
viewer := Sender as TImageViewer
- 正确
对
viewer := TImageViewer(Sender)
- 错误
好处是 as
运算符会为您执行安全检查,并在您尝试转换为不兼容的类型时发出警告。
第二种变体只能在变量是普通指针(不是对象)的情况下使用,而且很少需要这种情况。
不建议同时使用表单上的位置来使组件名称唯一。
最好再想出一个组件名称创建方案
例如,您可以在表单中定义一个计数器并将该计数器添加到组件的名称中。