Statusbar: Hint in Panel 3 anzeigen lassen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
Cineatic
Beiträge: 23
Registriert: Mo 25. Sep 2023, 10:37
OS, Lazarus, FPC: OS: Windows 10 & 11; Lazarus: 3.6; FPC: 3.2.2
CPU-Target: 64Bit

Statusbar: Hint in Panel 3 anzeigen lassen

Beitrag von Cineatic »

Hallo,

mit der Forensuche bin ich leider nicht fündig geworden.

Ich bin zur Zeit dabei, einen kleinen Texteditor zu schreiben. Einfach nur so zur Übung, um mich wieder in die Programmierung einzuarbeiten.

Auf dem Formular habe ich auch eine TStatusBar Komponente mit 3 Panel gesetzt. Standardmäßig werden die Hints anderer Komponenten im ersten Panel angezeigt. Ich möchte diese allerdings im 3. Panel anzeigen lassen.

Dazu habe ich auch schon folgendes getestet:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnHint := ShowHintInStatusBar;
end;

procedure TForm1.ShowHintInStatusBar;
begin
  StatusBar1.Panels[1].Text := Application.Hint;
end;
Aber dies führt leider nur zu Fehlermeldungen und nicht dem gewünschten Erfolg.

Fehlermeldungen:
Projekt kompilieren, Ziel: C:\Users\cinea\AppData\Local\Temp\project1.exe: Exit code 1, Fehler: 2
unit1.pas(36,25) Error: Incompatible types: got "untyped" expected "<procedure variable type of procedure(TObject) of object;Register>"
unit1.pas(41,14) Error: identifier idents no member "Panel"
Leider bin ich hier als Wiedereinsteiger zur Zeit am Ende mit meinem Latein. Die Meldungen sagen mir jetzt nicht all zu viel.

Ich habe mal ein Testprojekt angehangen, welches keinerlei Funktion hat und nur das Problem mit der Statusbar veranschaulichen soll.
Dateianhänge
Statusbar-Test.zip
(140.03 KiB) 43-mal heruntergeladen

Benutzeravatar
Zvoni
Beiträge: 401
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Statusbar: Hint in Panel 3 anzeigen lassen

Beitrag von Zvoni »

Code: Alles auswählen

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    StatusBar1: TStatusBar;
    procedure FormCreate(Sender: TObject);
  public
    procedure ShowHintInStatusbar(Sender:TObject);  //<--!!
  end;
......
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnHint := @ShowHintInStatusBar;
end;
// Genau hinschauen: Du brauchst nen TObject-Parameter
procedure TForm1.ShowHintInStatusBar(Sender:TObject);
begin
  StatusBar1.Panels[1].Text := Application.Hint;
end;

Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
Cineatic
Beiträge: 23
Registriert: Mo 25. Sep 2023, 10:37
OS, Lazarus, FPC: OS: Windows 10 & 11; Lazarus: 3.6; FPC: 3.2.2
CPU-Target: 64Bit

Re: Statusbar: Hint in Panel 3 anzeigen lassen

Beitrag von Cineatic »

Uff, manchmal sehe ich echt den Wald vor lauter Bäumen nicht. Selbst wenn mit Neon-Reklame ein Schild davor steht "Hier Wald"

Danke für den Hinweis!

Antworten