AGB  ·  Datenschutz  ·  Impressum  







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

Eigene Hintklasse nur für bestimmte Controls

Ein Thema von Ares · begonnen am 19. Okt 2008 · letzter Beitrag vom 19. Okt 2008
Antwort Antwort
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#1

Eigene Hintklasse nur für bestimmte Controls

  Alt 19. Okt 2008, 14:56
Hallo!

Ich stricke an einer Komponente für eine Adressliste. Dabei soll eine Funktion sein, dass wenn der Nutzer die Maus über einen Namen hält ein "erweiterter Hint" mit Bild, Anschrift und sonstigen Kontaktdetails angezeigt wird. Das lässt sich mit dem normalen Hintfenster natürlich nicht lösen. Daher habe ich eine eigene Klasse von THintWindows abgeleitet.

Mein Problem ist nun, dass ich diesen erweiterten Hint nur innerhalb der Komponente und auch dort nur an ganz bestimmten Controls verwenden will. Überall anders soll der normale Hint verwendet werden. Ich kann den Hint aber nur durch Application.HintWindowClass ändern. Das ändert aber den Hint für das gesamte Programm...

Wie kann ich meinen erweiterten Hint nur einzelnen Controls zuweisen?

Besten Dank
Ares
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Eigene Hintklasse nur für bestimmte Controls

  Alt 19. Okt 2008, 15:18
Hallo Ares,

im Ereignis Delphi-Referenz durchsuchenTApplication.OnShowHint hast du Zugriff auf das HintControl (oder dessen ClassType): klick

Das Herausfiltern der gewünschten Controls findet damit allerdings auf Formularebene statt und nicht lokal in deiner Komponente.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#3

Re: Eigene Hintklasse nur für bestimmte Controls

  Alt 19. Okt 2008, 15:26
Hallo Hawkeye,

vielen Dank für den Tipp! Wie du schon sagst liegt bei dieser Lösung ein Teil der Funktion der Komponente beim Formular bzw. dem Programm. Das ist natürlich nicht optimal, da die Komponente eigentlich in sich funktionieren sollte. Gibt es hierzu also noch eine andere Möglichkeit?

Besten Dank
Ares
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Eigene Hintklasse nur für bestimmte Controls

  Alt 19. Okt 2008, 15:51
Zitat von Ares:
Gibt es hierzu also noch eine andere Möglichkeit?
Die Steuerung der HintWindows wird von der Applikation übernommen. Ein Blick in den zugehörigen Quelltext (unit Forms, Methode TApplication.ActivateHint) zeigt, dass auch die einzelnen Controls eine Nachricht CM_HINTSHOW erhalten.

Man könnte nun diese Nachricht in den Controls abfangen und die übergebenen Daten anpassen:

Delphi-Quellcode:
procedure TYourControl.CMHintShow(var Message: TMessage);
var
  Info : PHintInfo;
begin
  inherited;

  Info := PHintInfo(Message.LParam);
  Info.HintWindowClass := TMyHintWindow;
end;
Ob diese Lösung sauber genug und damit für dich akzeptabel ist, musst du selbst entscheiden.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:32 Uhr.
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