Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Hint spezieller Controls in Statuszeile (https://www.delphipraxis.net/10564-hint-spezieller-controls-statuszeile.html)

oki 21. Okt 2003 10:02


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:
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;
Nun kommt wohl mein Fehler. Sender scheint nicht das Control zu sein, das den Hint sendet. Somit liefert bei mir
Delphi-Quellcode:
 IF Sender is TSpeedButton
immer False.

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

Ghostwalker 21. Okt 2003 10:17

Re: Hint spezieller Controls in Statuszeile
 
Probiers mal mit

Sender.classname = 'TSpeedButton'

dann sollts funktionieren:)

sakura 21. Okt 2003 10:19

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:
kurzer Popup-Hint | Langer Message-Feld Hint
Wenn Du mit dem Pipe-Symbol startest, wird kein PopUp gezeigt und nur der lange genutzt. Im Application-OnHint-Eventhandler schreibst Du dann

Delphi-Quellcode:
procedure TfrmMain.ApplicationEvents1Hint(Sender: TObject);
begin
  if Pos('|', Application.Hint) > 0 then
    Memo8.Text := GetLongHint(Application.Hint)
  else
    Memo8.Text := '';
end;
...:cat:...

sakura 21. Okt 2003 10:21

Re: Hint spezieller Controls in Statuszeile
 
Zitat:

Zitat von Ghostwalker
Sender.classname = 'TSpeedButton'

dann sollts funktionieren:)

Nein, Sender ist die TApplication ;-)

...:cat:...

oki 21. Okt 2003 11:58

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

oki 21. Okt 2003 12:09

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

oki 21. Okt 2003 12:19

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:
procedure TFahrzEinstForm.ShowSecureButtonHint(Sender: TObject);
begin
  if length(GetLongHint(Application.Hint)) > 0 then
    Memo8.Text := GetLongHint(Application.Hint)
  else
    Memo8.Text := '';
end;
Eigentlich ist es ja egal ob man die Maus mit Speck oder Käse fängt, hauptsache man hat sie.
So funzt es aber.

Gruß oki

sakura 21. Okt 2003 12:39

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:...

oki 22. Okt 2003 09:36

Keine Ahnung.

Mein OS ist Win2000 mit D5.

Noch mal Dank,

Gruß oki

sakura 22. Okt 2003 09:47

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 07:59 Uhr.
Seite 1 von 2  1 2      

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