1

Borland Delphi 7 IDE のステータス バーに時計などを表示するモジュールを作成する方法を知りたいです。

4

2 に答える 2

2

StatusBar にテキストを挿入するには、最初にパネルを挿入する必要があります。ステータスバーを選択し、「パネル」プロパティを見つけて (またはステータスバーをダブルクリックして)、「新規追加」をクリックします。その後、プロパティ「テキスト」でパネル内に必要なものを書き込むことができます (1 つまたは複数のパネルを挿入できます)。プログラムで行うには、次のようにします。

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 と対話するにはネイティブ VCL クラスを使用します。したがって、このコードはパッケージに含まれている必要があります。


上記のコードは、unitに含まれるの関連部分ですpackageToolsAPItouses句と他の適切な参照単位を追加することを忘れないでください(あなた次第です)。rtlパッケージには, vcland designide(重要!)が必要です。セクションからテストケースを直接実行するのでinitialization、パッケージをインストールするだけでテストケースを実行して何らかの結果を得ることができます。

于 2014-05-12T00:05:01.110 に答える