【问题标题】:How to write and show something on Delphi IDE status bar如何在 Delphi IDE 状态栏上编写和显示内容
【发布时间】:2014-05-08 19:00:14
【问题描述】:

我想知道如何编写一个模块来在 Borland Delphi 7 IDE 状态栏上显示时钟或其他内容,因为我知道这是可能的,但我找不到方法!

【问题讨论】:

  • IIUYC 你必须写一个 IDE 专家。查看 ToolsAPI/OTA。请参阅this FAQ 了解一下。
  • 为什么有这么多反对票?对我来说,问题看起来非常清楚和合理,而且从第一次修订开始就这样做了。 @user3615169,我今天很懒,抱歉,所以我要问你你尝试了什么,你到目前为止研究了什么,换句话说,你已经知道了什么?

标签: delphi ide delphi-7 statusbar toolsapi


【解决方案1】:

要在状态栏中插入文本,您必须先插入一个面板。 只需选择您的状态栏,找到“面板”属性(或在状态栏上双击),然后单击“添加新”。 之后,您可以在“文本”属性中的面板内写入您想要的内容(您可以插入一个或多个面板)。 要以编程方式执行此操作,您可以执行以下操作:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  StatusBar1.Panels[0].Text := 'Today is: ' + FormatDateTime('dd/mm/yyyy hh:nn:ss', Now);
end;

【讨论】:

  • 你的答案不是我的答案,因为我想写在Delphi7状态栏上而不是我自己的应用程序上,但感谢您的关注
  • 实际上,我并不完全理解您想要什么,抱歉。尝试向我们提供有关它的更多详细信息。
【解决方案2】:

由于OP没有回复更多细节,我将发布一个小演示如何到达Delphi编辑窗口的状态栏。我没有成功添加没有干扰布局的新的不同状态面板,所以我只是更改了 INS/OVR 指示器面板的文本。

免责声明:我仍然无法访问安装了 Delphi 7 的机器,所以我在 BDS(“Galileo”)IDE 中完成了该操作。但是,差异应该很小。我相信主要区别在于我们定位编辑窗口的方式。

关键字符串是:'TEditWindow' 用于编辑窗口类名称,'StatusBar' 用于TStatusBar 编辑窗口拥有的控件名称。这些字符串在不同版本中是一致的。

{ helper func, see below }
function FindForm(const ClassName: string): TForm;
var
  I: Integer;
begin
  Result := nil;
  for I := 0 to Screen.FormCount - 1 do
  begin
    if Screen.Forms[I].ClassName = ClassName then
    begin
      Result := Screen.Forms[I];
      Break;
    end;
  end;
end;

procedure Init;
var
  EditWindow: TForm;
  StatusBar: TStatusBar;
  StatusPanel: TStatusPanel;
begin
  EditWindow := FindForm('TEditWindow');
  Assert(Assigned(EditWindow), 'no edit window');
  StatusBar := EditWindow.FindComponent('StatusBar') as TStatusBar;
  (BorlandIDEServices as IOTAMessageServices).AddTitleMessage(Format('StatusBar.Panels.Count = %d', [StatusBar.Panels.Count]));
  //StatusPanel := StatusBar.Panels.Add;
  StatusPanel := StatusBar.Panels[2];
  StatusPanel.Text := 'HAI!';
end;

initialization
  Init;

finalization
  // nothing to clean up yet

另一个注意事项: 如您所见,我使用 Open Tools API 仅输出调试消息,与 IDE 交互我使用 Native VCL 类。因此,此代码必须在包中。


上面的代码是unit 的相关部分,应该包含在package 中。不要忘记将ToolsAPI 添加到uses 子句以及其他适当的引用单位(由您决定)。 包应该需要rtlvcldesignide(重要!)。 由于我直接从initialization 部分运行测试用例,安装包足以让测试用例运行并产生一些结果。

【讨论】:

  • 尊敬的免费咨询,感谢您的回答,我想测试您的回答,但我找不到在哪里和在哪个模块中,请您帮助我这个
  • @user3615169,我更新了答案。但我强烈建议您回到基础,因为编写 IDE 插件对于新手来说是相当复杂的领域。请随时索取更多详细信息。
猜你喜欢
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多