Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie einem Button einen Hinweis in der StatusBar zuweisen? (https://www.delphipraxis.net/4044-wie-einem-button-einen-hinweis-der-statusbar-zuweisen.html)

dopeline 12. Apr 2003 17:48


Wie einem Button einen Hinweis in der StatusBar zuweisen?
 
Hi!

Ich möchte, dass wenn ich mit der Maus über einen Button (öffnen) gehe, unten in der StausBar eine Meldung kommt ("Klicken Sie hier um ein neues Dokument zu öffnen").
Wie stelle ich das am besten an. aus der delphi-hilfe bi ich nicht schlau geworden.

Gruß, dopeline :dancer:

oki 12. Apr 2003 21:09

Hi,

schau mal in der Hilfe bei TApplication Ereignis OnHint nach. Da ist ein Beispiel bei wie das geht. (Ach, ich kopiers mal hier rüber)

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    StatusBar1: TStatusBar;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private Deklarationen }
  public
    procedure DisplayHint(Sender: TObject);
  end;

var

  Form1: TForm1;
implementation
{$R *.DFM}

{ Hier ist die Implementierung der Ereignisbehandlungsroutine für OnHint. }

{ Der aktuelle Hinweistext der Anwendung wird in der Statusleiste angezeigt. }
procedure TForm1.DisplayHint(Sender: TObject);
begin
  StatusBar1.SimpleText := GetLongHint(Application.Hint);
end;

{ Hier ist die Ereignisbehandlungsroutine für OnCreate des Formulars. }

{ Die Ereignisbehandlungsroutine für OnHint der Anwendung wird zur Laufzeit }
{ zugewiesen, da Application im Objektinspektor nicht verfügbar ist. }
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnHint := DisplayHint;
end;
Gruß oki

APP 12. Apr 2003 21:12

Hallo,
mache den Umweg über Form1.onMouseMove (= FormMouseMove)

Du benötigst einen Button und eine Statusbar, im Objektinspektor schreibst Du beim Button1 in der Eigenschaft "Hint" den Text den Du in der Statusbar einzeigen möchtest hinein.
Den Rest siehe unten :coder:


Delphi-Quellcode:
UNIT aUnit1;

INTERFACE

USES
   Windows,
   Messages,
   SysUtils,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   ComCtrls,
   StdCtrls;

TYPE
   TForm1 = CLASS(TForm)
      Button1: TButton;
      StatusBar1: TStatusBar;
      PROCEDURE FormMouseMove(Sender: TObject; Shift: TShiftState; X,
         Y: Integer);
   PRIVATE
    { Private-Deklarationen }
   PUBLIC
    { Public-Deklarationen }
   END;

VAR
   Form1                           : TForm1;

IMPLEMENTATION

{$R *.DFM}

PROCEDURE TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
   Y: Integer);                                 // x,y = MousePos in Pixel
VAR
   aRect                          : TRect;
BEGIN
   aRect := Button1.BoundsRect;                 // Größe des Buttons
   IF (x >= aRect.Left) AND
      (x <= aRect.Right) AND
      (y >= aRect.Top) AND
      (y <= aRect.Bottom) THEN
      StatusBar1.SimpleText := Button1.Hint      // Hint in Statusbar zeigen
   ELSE
      StatusBar1.SimpleText := '';               // Hint in Statusbar löschen
END;
END.
NACHTRAG:
GRRRRRRR, war wieder mal zu langsam, außerdem ist okis Lösung wohl eleganter :firejump:

[EDIT] Bei meiner Lösung kannst Du immerhin die Hint Anzeige mit ShowHint := False ausschalten, falls dich die Hints stören und Du trotzdem in der Statusbar den Text haben möchtest... :hello: [/EDIT]

bis 12. Apr 2003 21:13

Das in die Form-Create :
Code:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  Application.OnHint := DisplayHint;
end;
Diese Procedure als Public deklarieren :
Code:
procedure TMainForm.DisplayHint(Sender: TObject);      
begin
  StatusBar.SimpleText := GetLongHint(Application.Hint);
end;
Jetzt schreibst Du zu jeder Komponente in die Eigenschaft Hint den Text der in der Statuszeile erscheinen soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz