AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hint überschreiben

Ein Thema von Rainer Wolff · begonnen am 3. Aug 2010 · letzter Beitrag vom 4. Aug 2010
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#14

AW: Hint überschreiben

  Alt 3. Aug 2010, 21:37
Entweder du mußt ständig/regelmäßig alle Hint-Texte anpassen, also vorsorglich bevor sie angezeigt werden könnten, oder ...


entweder man definiert einen Marker, welcher dann ersetzt wird:
Delphi-Quellcode:
Label1.Hint := ':MyHint:'; // natürlich im OI deklariert
Label1.ShowHint := True;

procedure TForm5.FormCreate(Sender: TObject);
begin
  Application.OnShowHint := ShowHint;
end;

procedure TForm5.ShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: Controls.THintInfo);
begin
  if HintStr = ':MyHint:then
    HintStr := 'die aktuelle Zeit ist ' + TimeToStr(Now);
  if HintStr = ':MyOtherHint:then
    HintStr := 'das aktuelle Datum ist ' + DateToStr(Now);
end;
das geht auch mit Teilen
Delphi-Quellcode:
Label1.Hint := 'die aktuelle Zeit ist :MyHint:';
Label1.ShowHint := True;

procedure TForm5.FormCreate(Sender: TObject);
begin
  Application.OnShowHint := ShowHint;
end;

procedure TForm5.ShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: Controls.THintInfo);
begin
  HintStr := StringReplace(HintStr, ':MyHint:', TimeToStr(Now), []);
  HintStr := StringReplace(HintStr, ':MyOtherHint:', DateToStr(Now), []);
end;
man kann aber auch über's Control gehn:
Delphi-Quellcode:
procedure TForm5.FormCreate(Sender: TObject);
begin
  Application.OnShowHint := ShowHint;
end;

procedure TForm5.ShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: Controls.THintInfo);
begin
  if HintInfo.HintControl = Label1 then
    HintStr := 'die aktuelle Zeit ist ' + TimeToStr(Now);
end;
ShowHint wird immer aufgerufen, kurz bevor irgendein Hint angezeigt wird.


Aber schöner wäre es natürlich, wenn in jeder Komponente auch ein OnHint existieren würde, damit man vor Ort reagieren und sich dort entsprechende Eventhandler schreiben könnte.

Gut, man könnte auch ein anderes Event mißbrauchen, welches man sonst nirgends in der Anwendung verwendet hat.
> OnEndDock bietet sich oftmals an
Delphi-Quellcode:
Label1.ShowHint := True;
Label1.OnEndDock := Label1EndDock;

procedure TForm5.FormCreate(Sender: TObject);
begin
  Application.OnShowHint := ShowHint;
end;

procedure TForm5.ShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: Controls.THintInfo);
begin
  if Assigned(TForm(HintInfo.HintControl).OnEndDock) then
  begin
    TForm(HintInfo.HintControl).OnEndDock(HintInfo.HintControl, nil, 0, 0);
    HintStr := TForm(HintInfo.HintControl).Hint;
  end; // TForm wurde nur verwendet, da .Hint und
end; // .OnEndDock in TControl als protected deklariert sind

procedure TForm5.Label1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
  TLabel(Sender).Hint := 'die aktuelle Zeit ist ' + TimeToStr(Now);
  // oder Label1.Hint := 'die aktuelle Zeit ist ' + TimeToStr(Now);
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Aug 2010 um 21:56 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 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 by Thomas Breitkreuz