如何在框架之间和框架内进行通信?例如:帧1和帧2。
帧%2位于帧% 1中。为了将帧%2插入到帧%1中,我从ToolPalette ->添加了帧
type
TFrame1 = class(TFrame)
Frame22: TFrame2;
var MyFrame1:TFrame1; // Now I can access to everything within a frame and from other frames too
implementation但我在尝试访问MyFrame1并执行类似于MyFrame1.Button1.Enable的操作时出错:"Exception class EAccessViolation with a message 'Access violation at address 0084858C in module 'P1.exe'“
如何从帧2访问帧1?MyFrame1->错误。
谢谢!
发布于 2011-07-18 17:58:42
请删除全局变量声明:
var MyFrame1: TFrame1;它通常对框架没有意义。
您可以将子帧的Owner类型转换为TFrame1,例如:
implementation
uses
FrameUnit1;
procedure TFrame2.Test;
begin
if Owner is TFrame1 then
ShowMessage(TFrame1(Owner).Name);
end;发布于 2011-07-18 19:35:45
TOndrej提到使用所有者,但这通常是表单,而不是Frame1。Frame2的父级应该是Frame1,因此:
uses
Frame1Unit;
procedure TFrame2.Test;
var
C: TControl;
begin
if Parent is TFrame1 then
ShowMessage(TFrame1(Parent).Name)
else
for C in Parent.Controls do
if C is TFrame1 then
ShowMessage(TFrame1(C).Name);
end; 更新了添加了使用Parent.Controls查找TFrame1的代码。
https://stackoverflow.com/questions/6731149
复制相似问题