如何在Delphi IDE状态栏上编写和显示内容

时间:2014-05-08 19:00:14

标签: delphi ide delphi-7 statusbar toolsapi

我想知道如何在Borland Delphi 7 IDE状态栏上编写模块来显示时钟或其他东西,因为我知道它可能但我无法找到!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

由于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部分运行测试用例,因此安装软件包足以让测试用例运行并产生一些结果。