![]() |
Hint spezieller Controls in Statuszeile
Hi Leute,
eigentlich ist das so'ne popelige Sache, dass ich mich gar nicht traue zu Fragen. Aber bevor ich lange rumspiele und wichtige Sachen nicht schaffe frag ich lieber. Problem: Ich habe mehrere SpeedButton, deren Hint ich in einer Statuszeile (oder sonst wo) anzeigen möchte. Weitere Controls meines Formulars sollen ihren Hint in gewohnter Form anzeigen. Lösung: Nun kann ich dem TApplication.OnHint - Ereignes natürlich eine neue Procedur zuweisen. Kein Thema. in dieser Procedure mache ich jetzt folgendes:
Delphi-Quellcode:
Nun kommt wohl mein Fehler. Sender scheint nicht das Control zu sein, das den Hint sendet. Somit liefert bei mir
procedure TFahrzEinstForm.ShowSecureButtonHint(Sender: TObject);
begin IF Sender is TSpeedButton then begin IF ((Sender as TSpeedButton) = SpeedButton28) or ((Sender as TSpeedButton) = SpeedButton29) or ((Sender as TSpeedButton) = SpeedButton30) or ((Sender as TSpeedButton) = SpeedButton31) or ((Sender as TSpeedButton) = SpeedButton38) or ((Sender as TSpeedButton) = SpeedButton39) then begin Memo8.Text := (Sender as TSpeedButton).Hint; end else begin Memo8.Text := ''; end; end; end;
Delphi-Quellcode:
immer False.
IF Sender is TSpeedButton
Ich habe über den Debugger geprüft, dass meine Procedure angesprungen wird wenn ich über die entsprechenden Button fahre. Also, ich brauch nur einen Tipp und komme dann bestimmt selber weiter. dank und Gruß oki |
Re: Hint spezieller Controls in Statuszeile
Probiers mal mit
Sender.classname = 'TSpeedButton' dann sollts funktionieren:) |
Re: Hint spezieller Controls in Statuszeile
Ich empfehle Dir einen relativ unbekannten Trick anzuwenden. Die Eigenschaft Hint ist eigentlich eine "Doppeleigenschaft". Dieser Hint nimmt den ShortHint und den LongHint auf. Diese kannst Du mit dem Pipe-Symbol "|" trennen.
Code:
Wenn Du mit dem Pipe-Symbol startest, wird kein PopUp gezeigt und nur der lange genutzt. Im Application-OnHint-Eventhandler schreibst Du dann
kurzer Popup-Hint | Langer Message-Feld Hint
Delphi-Quellcode:
...:cat:...
procedure TfrmMain.ApplicationEvents1Hint(Sender: TObject);
begin if Pos('|', Application.Hint) > 0 then Memo8.Text := GetLongHint(Application.Hint) else Memo8.Text := ''; end; |
Re: Hint spezieller Controls in Statuszeile
Zitat:
...:cat:... |
Hi,
Dank für die Antworten. Sankuras Trick kannte ich wirklich noch nicht. Den nehm ich (einfach aber schmerzlos). Das Sender TApplication ist war auch meine Vermutung, wußte es nur nicht sicher. Dank und Gruß oki |
Hi Sancura,
geht nicht!!!! :twisted: In Application.Hint ist das Pipe-Symbol nicht mehr vorhanden. Hab im Debug-Modus nachgeschaut. "Was nun sprach Zeus, die Götter sind besoffen." :freak: Gruß oki |
Hi,
da abgesehen vom Pipe-Symbol als prüfbares Zeichen in Application.Hint der Rest von Sancuras Aussage stimmt hab ich jetzt folgendes gemach:
Delphi-Quellcode:
Eigentlich ist es ja egal ob man die Maus mit Speck oder Käse fängt, hauptsache man hat sie.
procedure TFahrzEinstForm.ShowSecureButtonHint(Sender: TObject);
begin if length(GetLongHint(Application.Hint)) > 0 then Memo8.Text := GetLongHint(Application.Hint) else Memo8.Text := ''; end; So funzt es aber. Gruß oki |
Re: Hint spezieller Controls in Statuszeile
Liegt das jetzt an der Delphi Version oder am OS. Ich hatte erst Deine Lösung und die ging nicht :gruebel: Schließlich habe ich vorm posten getestet...
...:cat:... |
Keine Ahnung.
Mein OS ist Win2000 mit D5. Noch mal Dank, Gruß oki |
Re: Hint spezieller Controls in Statuszeile
Hm, dann bin ich mir nicht sicher, es muss wohl an Delphi liegen... GetLongHint ist eine WinAPI Funktion...
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 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