1

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

4

2 回答 2

2

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

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  StatusBar1.Panels[0].Text := 'Today is: ' + FormatDateTime('dd/mm/yyyy hh:nn:ss', Now);
end;
于 2014-05-09T11:04:23.140 回答
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. 不要忘记添加ToolsAPItouses子句以及其他适当的引用单位(由您决定)。包应该需要rtlvcldesignide(重要!)。由于我直接从initialization部分运行测试用例,安装包足以让测试用例运行并产生一些结果。

于 2014-05-12T00:05:01.110 回答