首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi:框架间的通信

Delphi:框架间的通信
EN

Stack Overflow用户
提问于 2011-07-18 17:51:52
回答 2查看 573关注 0票数 2

如何在框架之间和框架内进行通信?例如:帧1和帧2。

帧%2位于帧% 1中。为了将帧%2插入到帧%1中,我从ToolPalette ->添加了帧

代码语言:javascript
复制
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->错误。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-18 17:58:42

请删除全局变量声明:

代码语言:javascript
复制
var MyFrame1: TFrame1;

它通常对框架没有意义。

您可以将子帧的Owner类型转换为TFrame1,例如:

代码语言:javascript
复制
implementation

uses
  FrameUnit1;

procedure TFrame2.Test;
begin
  if Owner is TFrame1 then
    ShowMessage(TFrame1(Owner).Name);
end;
票数 2
EN

Stack Overflow用户

发布于 2011-07-18 19:35:45

TOndrej提到使用所有者,但这通常是表单,而不是Frame1。Frame2的父级应该是Frame1,因此:

代码语言:javascript
复制
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的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6731149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档