AGB  ·  Datenschutz  ·  Impressum  







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

Hint / Tooltip selber anzeigen lassen?

Ein Thema von hitzi · begonnen am 20. Feb 2003 · letzter Beitrag vom 3. Mai 2011
Antwort Antwort
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.413 Beiträge
 
Delphi 12 Athens
 
#1
  Alt 21. Feb 2003, 08:09
Delphi startet ja schon... Folgender Code ist fast 1:1 copy&paste, aber es sollte Dir zeigen, wie es geht.

Du must die Eigenschaft ShowHint des Grids auf True setzen (ParentShowHint wird automatisch False).

Die Form-Variable FLastFragmentEntry merkt sich die letzte Zeile des aktuellen Hints, damit der Hint nicht so flackert. Unter Umständen musst Du auch noch die Spalten abfangen, falls Du die separat "hinten" möchtest. - Der Code ist nur zeilenweise.

Delphi-Quellcode:
procedure TfrmMain.grdFragmentsMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  Col, Row: Integer;
  FileName, FolderName, Fragments, Cluster: string;
begin
  grdFragments.MouseToCell(X, Y, Col, Row);

  if FLastFragmentEntry = Cardinal(Row) then
    Exit;
  FLastFragmentEntry := Row;

  // //kopfzeile zeigt keinen hint
  if Row > 0 then
  begin
    FileName := grdFragments.Cells[0, Row];
    FolderName := grdFragments.Cells[2, Row];
    Cluster := grdFragments.Cells[1, Row];
    Fragments := Fetch(Cluster, '/');
    grdFragments.Hint := Format('Datei: %s'#13#10'Ordner: %s'#13#10 +
        'Fragmente: %s'#13#10'Cluster: %s', [FileName, FolderName, Fragments,
        Cluster]);
  end else begin
    grdFragments.Hint := '';
  end;
  Application.ActivateHint(grdFragments.ClientToScreen(Point(0, (Y div
      grdFragments.DefaultRowHeight) * grdFragments.DefaultRowHeight)));
end;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#2

AW: Hint / Tooltip selber anzeigen lassen?

  Alt 3. Mai 2011, 19:21
Ich habe fast dasselbe Problem. Ich habe eine eigene graphische Komponente von TCustomControl abgeleitet und möchte je nach berührter Region meiner Komponente UNTERSCHIEDLICHE Hint anzeigen.

Der Trick mit Application.ActivateHint(Mouse.CursorPos) klappt zwar, aber wenn man das im MouseMove-Event erledigt, dann erscheint der Hint immer SOFORT und STÄNDIG, sobald man die entsprechende Region mit der Maus berührt.

Ich möchte aber eigentlich schon normales Hint-Verhalten haben: Also erst nach Application.HintPause erscheinen und dann auch wieder von selbst nach Application.HintHidePause verschwinden. Beides geht so leider nicht.

Wie kann man der Komponente quasi vorgaukeln, dass die Mouse zwischendurch die Komponente verlassen hat, also den offensichtlich vorhandenen "Hint-Merker" zurücksetzen? Wo merkt sich die Komponente, dass sie den Hint schon angezeigt hat? Wie kann man diesen Merker so zurücksetzen, dass beim nächsten Ruhen der Mouse wieder der Hint entsprechend angezeigt wird?

Vielen Dank im voraus!
  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 03:30 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