我想知道如何编写一个模块来在 Borland Delphi 7 IDE 状态栏上显示时钟或其他东西,因为我知道这是可能的,但我找不到如何!
2 回答
要在状态栏中插入文本,您必须先插入一个面板。只需选择您的状态栏,找到属性“面板”(或在状态栏上双击),然后单击“添加新”。之后,您可以在“文本”属性中的面板内写入您想要的内容(您可以插入一个或多个面板)。要以编程方式执行此操作,您可以执行以下操作:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[0].Text := 'Today is: ' + FormatDateTime('dd/mm/yyyy hh:nn:ss', Now);
end;
由于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
touses
子句以及其他适当的引用单位(由您决定)。包应该需要rtl
,vcl
和designide
(重要!)。由于我直接从initialization
部分运行测试用例,安装包足以让测试用例运行并产生一些结果。