Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem bei der Hint anzeige (https://www.delphipraxis.net/154713-problem-bei-der-hint-anzeige.html)

PhilmacFLy 22. Sep 2010 10:48

Delphi-Version: 2005

Problem bei der Hint anzeige
 
Hey DP'ler

ich hab ein kleines Problem bei der Hint anzeige auf meinem TChart.
Hier erstmal der Code:

Aufruf über:
Delphi-Quellcode:
procedure TFrm_Messung.Ch_MessungMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
ShowSeriesHint(Mouse.CursorPos.X ,Mouse.CursorPos.Y);
end;
Dann der eigentliche Code
Delphi-Quellcode:
procedure Tfrm_messung.ShowSeriesHint(X,Y:Integer);
begin
  Ch_Messung.Hint := 'Dies ist ein Hinweis';
  //ShowHint auf True setzen
  if Ch_Messung.ShowHint = False then
     Ch_Messung.ShowHint := True;
  //Col und Row Position lesen
  if (Mouse.CursorPos.X <> lastX) or (Mouse.CursorPos.Y <> lastY) then
     begin
     Application.CancelHint;
     Lastx := Mouse.CursorPos.X;
     Lasty := Mouse.CursorPos.Y;
     end;
end;
Das Problem ist nun das der Hint, reproduzierbar, immer erst auftaucht, wenn ich auf das Chart klick, und eigentlich sollte er ja erscheinen wenn man drüber fährt. Oder hab ich irgendwo einen Denkfehler?

DeddyH 22. Sep 2010 10:54

AW: Problem bei der Hint anzeige
 
Wenn die aktuelle Mausposition von der gemerkten abweicht, rufst Du Application.CancelHint auf. Ob das so richtig ist? Außerdem vergleiche bitte nie auf true/false, zumal die Abfrage IMO überflüssig ist. Und wieso übergibst Du die Screen-Koordinaten der Maus, brauchst Du die später noch? Ansonsten würden es X und Y ja genauso tun.

PhilmacFLy 22. Sep 2010 11:18

AW: Problem bei der Hint anzeige
 
Also ich ruf Application.CancelHint auf um wenn er die Maus wieder bewegt der Hint nicht mehr an der alten Position angezeigt wird sondern an der neuen. Das mit X, Y hast du recht da hab ich nur getestet obs vllt an der übergabe liegt.

DeddyH 22. Sep 2010 11:21

AW: Problem bei der Hint anzeige
 
Müsste es dann nicht andersherum sein (erst abbrechen, dann neu anzeigen)?
Delphi-Quellcode:
procedure Tfrm_messung.ShowSeriesHint(X,Y:Integer);
begin
  //Col und Row Position lesen
  if (X <> lastX) or (Y <> lastY) then
   begin
     Application.CancelHint;
     Lastx := X;
     Lasty := Y;
   end;
  Ch_Messung.Hint := 'Dies ist ein Hinweis';
  //ShowHint auf True setzen
  Ch_Messung.ShowHint := True;
end;

PhilmacFLy 22. Sep 2010 11:34

AW: Problem bei der Hint anzeige
 
Genau das gleiche Problem, erst wenn ich auf das Chart klick erscheint der Hint.

DeddyH 22. Sep 2010 12:19

AW: Problem bei der Hint anzeige
 
Ich habe gerade kein Delphi zur Hand, kann aber am Nachmittag mal schauen, was das sein könnte.

[edit] Entspricht dies hier in etwa dem, was Du erreichen möchtest?
Delphi-Quellcode:
procedure TfrmMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (X <> OldX) or (Y <> OldY) then
    begin
      Application.ActivateHint(Mouse.CursorPos);
      OldX := X;
      OldY := Y;
    end;
end;
[/edit]

PhilmacFLy 22. Sep 2010 20:08

AW: Problem bei der Hint anzeige
 
fast ich will eigentlich die Werte von den Series anzeigen die auf der Chart sind.

DeddyH 23. Sep 2010 10:14

AW: Problem bei der Hint anzeige
 
Du kannst den Hint doch vor dem Application.ActivateHint neu belegen.

haentschman 23. Sep 2010 10:18

AW: Problem bei der Hint anzeige
 
Zitat:

Genau das gleiche Problem, erst wenn ich auf das Chart klick erscheint der Hint.
...hat das vieleicht mit dem Focus zu tun ? :gruebel:

PhilmacFLy 23. Sep 2010 10:37

AW: Problem bei der Hint anzeige
 
Zitat:

Zitat von haentschman (Beitrag 1051441)
Zitat:

Genau das gleiche Problem, erst wenn ich auf das Chart klick erscheint der Hint.
...hat das vieleicht mit dem Focus zu tun ? :gruebel:

Ne habs grad mit ch_messung.setfocus probiert selbes problem

stahli 23. Sep 2010 11:09

AW: Problem bei der Hint anzeige
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich weiß keine genaue Lösung aber für komplexe Hints kann ich die AlphaControls empfehlen, die einen Hintmanager enthalten (geht auch ohne Skin-Modus).

Die Hints können als Frames hinterlegt werden und der Hintmanager weist dann die gewünschten Inhalte zu. Das Handling ist sehr flexibel und komfortabel.
In meinem Fall lasse ich den Hint jede Sekunde neu zeichnen, so dass ich einen laufenden Timer darstellen kann (siehe Bild).

Ob der Hintmanager in der kostenfreien Version dabei ist, weiß ich jetzt aber nicht.

mkinzler 23. Sep 2010 11:10

AW: Problem bei der Hint anzeige
 
Ab D2007 oder D2009 geht das auch ohne Fremdkomponenten

DeddyH 23. Sep 2010 11:17

AW: Problem bei der Hint anzeige
 
Ich dachte, das Problem sei weitestgehend gelöst. :gruebel:

PhilmacFLy 24. Sep 2010 11:17

AW: Problem bei der Hint anzeige
 
Is es auch. Also macht euch mal keine Sorgen mehr über das :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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