![]() |
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: |
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:
Gruß oki
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; |
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:
NACHTRAG:
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. 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] |
Das in die Form-Create :
Code:
Diese Procedure als Public deklarieren :
procedure TMainForm.FormCreate(Sender: TObject);
begin Application.OnHint := DisplayHint; end;
Code:
Jetzt schreibst Du zu jeder Komponente in die Eigenschaft Hint den Text der in der Statuszeile erscheinen soll.
procedure TMainForm.DisplayHint(Sender: TObject);
begin StatusBar.SimpleText := GetLongHint(Application.Hint); end; |
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