AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Firemonkey - Tooltip-Componente

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

Registriert seit: 15. Mär 2010
45 Beiträge
 
#1

AW: Firemonkey - Tooltip-Componente

  Alt 24. Nov 2013, 18:23
Hallo,

danke fuer die Hilfe!
Die Formatierung habe ich schon mal aendern koennen.

"Im Grunde genommen weiss ich was du meinst", aber ich denke, so schnell bekomme ich das nicht hin. Ich kenne Pascal/Delphi zwar schon seit mehr als 20 Jahren, programmiere aber immer wieder nur zum Spass kleinere Programme/Tools (so wie auch zur Zeit). Ich muss mir das mit dem Registrieren etc. mal anschauen und dann einbauen. Auch wuerde ich dann die Zuweisungen noch aendern und deine Vorschlaege mit einarbeiten.


Gruss
AnCorr
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Firemonkey - Tooltip-Componente

  Alt 24. Nov 2013, 18:46
Wenn du die Liste als Published-Property mit TStrings/TStringList freigibst (nur read und kein write , bzw. das Write nur als Assign an die StringList übergeben und nicht auf die Variable zuweisen), dann bekommst du den Standard-Property-Editor für TStrings und brauchst dich nicht um einen eigenen Editor zu kümmern.


Und das Registrieren ist recht einfach:
Delphi-Quellcode:
procedure register;

implementation

procedure Register;
begin
  RegisterComponents('Zusätzlich', [TTooltip]);
end;
Für genauere Infos und wie man auch ein eigens Icon angibt, dafür sollten sich massig Tutorials für Delphi-Referenz durchsuchenRegisterComponents geben.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
AnCorr

Registriert seit: 15. Mär 2010
45 Beiträge
 
#3

AW: Firemonkey - Tooltip-Componente

  Alt 24. Nov 2013, 19:16
Hi,

ich habe den Code mal so abgeaendert, dass nun auch Hinweise entfernt oder geaendert werden koennen.
Ebenso habe ich, nachdem ich einen Teil des Themas ueber deine Komponente gelesen habe, das genutzte Label auch oeffentlich gemacht, damit auch dieses nach eigenen Wuenschen formatiert werden kann.


Kann ich den Code einfach gegen den bisherigen austauschen, oder soll ich diesen neu (zusaetzlich) einstellen?

Das mit dem Erzeugen der Form innerhalb der Komponente versuche ich noch einzubauen, ebenso wie die Routine zum Registrieren.

Danke fuer die Hilfe!


Gruss
AnCorr

(Eigentlich wollte ich ja an meinem Programm weiterarbeiten, aber das Thema "Komponente" reizt mich nun auch )
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

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
AnCorr

Registriert seit: 15. Mär 2010
45 Beiträge
 
#5

AW: Firemonkey - Tooltip-Componente

  Alt 24. Nov 2013, 23:37
Hallo sx2008,

die beiden Routinen habe ich schon zu einer zusammengefasst, so wie es himitsu schon vorgeschlagen hat. Die Stringliste habe ich allerdings noch drin.
Den geanderten Code habe ich noch nicht hier eingebracht, weil ich noch nicht weiss, ob ich nun den bisherigen einfach ueberschreiben soll, oder als neuen hier anhaengen soll.

Zwischenzeitlich habe ich mal versucht, daraus eine "richtige" Klasse/Komponente zu machen, aber das hat nicht so ganz funktioniert.
Ich kann ein Paket erzeugen und installieren, aber beim Verwenden wird die Klasse in ihre Einzelteile "zerlegt". Das heisst, die beiden Timer, das Label und das Rechteck werden auf die "Hauptform" gelegt, und sind alle "namenlos". Ich muss diese dann wieder dem ToolTip-Objekt zuordnen und neu benennen.
Ein Klick auf das ToolTip-Objekt erzeugt dann gar einen "Zugriffsfehler" in einem der fmx..19.bpl Pakete (habe das Paket wieder entfernt, deshalb kann ich den Fehler im Moment nicht mehr reproduzieren).

Eine Form als Klasse zu erstellen scheint mit Firemonkey wohl nicht ganz so einfach zu sein.


Gruss
AnCorr
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

AW: Firemonkey - Tooltip-Componente

  Alt 25. Nov 2013, 06:08
Wäre es nicht besser, wenn man den Beitrag unter Projekte verschiebt, damit der Beitragsersteller die Änderungen im ersten Beitrag einpflegen kann, eventuell auch mit Anhang ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
AnCorr

Registriert seit: 15. Mär 2010
45 Beiträge
 
#7

AW: Firemonkey - Tooltip-Componente

  Alt 25. Nov 2013, 23:06
Hallo

leider weiss ich nicht, ob ich das selbst tun muss, den Beitrag zu den "Projekten" zu verschieben.
Wenn das eine Angelegenheit fuer die Moderatoren ist, habe ich kein Problem damit.
Obwohl ich eigentlich an meinem Programm weiter arbeiten wollte, laesst mich dieses Thema auch nicht mehr los.
Ich habe alle Vorschlaege umgesetzt, und noch andere Aenderungen gemacht.
Im Moment kaempfe ich damit, dass sich die Eigenschaften des Labels (sprich dem Aussehen des Textes) zwar einstellen lassen, diese aber keine Wirkung zeigen.

Nun ja, ich werde noch eine Weile daran arbeiten...


Gruss
AnCorr
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:25 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