AGB  ·  Datenschutz  ·  Impressum  







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

Firemonkey - Tooltip-Componente

Ein Thema von AnCorr · begonnen am 24. Nov 2013 · letzter Beitrag vom 26. Nov 2013
 
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Firemonkey - Tooltip-Componente

  Alt 24. Nov 2013, 23:11
ich würde die beiden prozeduren AddControlName() und AddControlTip() zu einer einzigen Prozedur mit 2 Parametern zusammenfassen.
Dein Anwendungbeispiel sieht dann so aus:
Delphi-Quellcode:
  //Hinzufuegen der Controls & Texte, welche angezeigt werden sollen
  Tooltip.AddControlTip(Image_Beispiel, 'Dies ist der Tip zum Bild Image_Beispiel');
  Tooltip.AddControlTip(Edit_Beispiel, 'Dies ist der Tip zur TextBox Edit_Beispiel');
  Tooltip.AddControlTip(Listbox_Beispiel, 'Dies ist der Tip zur ListBox Listbox_Beispiel');

  // der Tooltip für ein Control kann auch nachträglich geändert werden
  Tooltip.AddControlTip(Edit_Beispiel, 'Geänderter Tip zur TextBox Edit_Beispiel');

  // man kann sogar den Tooltip wieder entfernen
  Tooltip.AddControlTip(Listbox_Beispiel, '');
Damit wird die Schnittstelle klarer und es wird verhindert, dass Controls und Tips auseinanderlaufen.
Delphi-Quellcode:
// die neue Prozedur
procedure TTooltip.AddControlTip(control: Tcontrol; const ToolTip: String);
var
  i : integer;
begin
  i := Tips.IndexOfObject(control); // prüfe ob Control schon in Liste
  if i <> -1 then
  begin
    if ToolTip = 'then
      Tips.Delete(i) // lösche bestehenden Eintrag in der Liste
    else
      Tips.Strings[i] := ToolTip // ändere Tooltip für gefundenes Control
  end
  else if Assigned(control) then
    Tips.AddObject(ToolTip, control); // Control & Tooltip anhängen
end;
Das Feld Elements: TStringList kann dann komplett entfallen.
In der Procedure procedure TTooltip.ShowDelayOnTimer müssen dann natürlich Veränderungen vorgenommen werden.
Delphi-Quellcode:
  LObject := (Parent as TForm).ObjectAtPoint(FMousePoint) ;

  idx := Tips.IndexOfObject(LObject);
  if idx <> -1 then // prüfe ob das Control in der Liste ist
  begin
    Text := Tips.Strings[idx]; // Hole den Tooltip zu dem Control
    LMousePos := Screen.MousePos;
    ShowToolTip(LMousePos.X, LMousePos.Y);
  end;
Die Hilfsprozeduren GetElementIndex() und GetElementTip() werden nicht mehr gebraucht.
fork me on Github

Geändert von sx2008 (24. Nov 2013 um 23:18 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 00:27 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