Autor Beitrag
Daniel L.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Sa 07.04.18 15:14 
Hi zusammen!

Ich möchte erreichen, dass beim Stehenbleiben des MausCursors über einem Image
ein Hint angezeit wird, der Mauskoordinatenbezogene Infos ausgibt.
Wird die Maus zu einer anderen Stelle im Image bewegt, soll dann der alte Hint ausgeblendet und
ein entsprechend neuer Hint angezeigt werden.
Cool wäre auch, wenn man den Hint per Mausclick wieder ausblenden könnte (ohne die Maus zu bewegen)


Ich hab einiges probiert mit OnMouseMove, CancelHint usw. aber nichts gescheites rausbekommen.

Danke für Tips -
Daniel L.
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Sa 07.04.18 15:29 
"Maus stehenbleiben" ist nach meinem Wissen kein(em) Ereignis zugeordnet.

Vermutlich kommst Du mit einem Timer weiter. Der wird mit jedem Mousemove deaktiviert und anschließend akiviert. Nachdem er einmal ausgelöst hat, wird er wiederum deaktiviert.

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.


Zuletzt bearbeitet von Delphi-Laie am Sa 07.04.18 19:16, insgesamt 1-mal bearbeitet
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Sa 07.04.18 16:13 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
"Maus stehenbleiben" ist nach meinem Wissen kein Ereignis zugeordnet.

Vermutlich kommst Du mit einem Timer weiter. Der wird mit jedem Mousemove deaktiviert und anschließend akiviert. Nachdem er einmal ausgelöst hat, wird er wiederum deaktiviert.


hm, folgendes hab ich probiert...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TForm1.FormCreate (Sender: TObject);
begin
  application.HintHidePause := 10000;    // Hint lange anzeigen
  Image1.ShowHint := true;
  timer1.Interval := 400;
end;


procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  application.CancelHint;
  //showHint := false;
  Image1.hint := IntToStr (x);
  timer1.Enabled := false;
  timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // Hint anzeigen...?
  showhint := true;
end;


CanceHint funktioniert, aber wie lässt dich der Hint erneut anzeigen?
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Sa 07.04.18 16:52 
user profile iconDaniel L. hat folgendes geschrieben Zum zitierten Posting springen:
CanceHint funktioniert, aber wie lässt dich der Hint erneut anzeigen?


An gleicher Mausposition gar nicht. Erst, wenn die Maus wiederum bewegt wird, setzt die Ereigniskaskade erneut ein.

Außerdem müßtest Du showhint entweder beim Anzeigen des Hints oder spätestens beim nächsten Mousemove wieder einnullen, d.h., auf false setzen.

Zudem hast Du nicht, wie ich es empfahl, den Timer in der Timerprozedur "disabled" (mit aktiv und deaktiv weiter oben meinte ich natürlich enabled und disabled) gesetzt.

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Sa 07.04.18 17:28 
sorry, ich verstehe dich glaub ich nicht ganz.

meinst du

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.FormCreate (Sender: TObject);
begin
  application.HintHidePause := 10000;    // Hint lange anzeigen
  Image1.ShowHint := true;
  timer1.Interval := 400;
end;


procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  //application.CancelHint;
  showHint := false;
  Image1.hint := IntToStr (x);
  timer1.Enabled := false;
  timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // Hint anzeigen...?
  showhint := true;
  timer1.Enabled := false;
end;


mit showhint := false lässt sich der Hint nicht sofort ausblenden,
man muss erst das Control mit der Maus verlassen.
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Sa 07.04.18 17:52 
Doch, Du hast mich sehr wohl verstanden. Jedenfalls sind jetzt meine Anregungen alle enthalten.

Wenn das jetzt noch nicht wie gewünscht funtiontiert, bin ich jetzt mit meinem Latein auch erst mal am Ende. Funktioniert es wenigstens besser als zuvor?

Mit einem Image.ShowHint hatte ich noch nie zu tun, deshalb wäre ein kleines Referenzprojekt ganz hilfreich. Könntest Du eines hier veröffentlichen? Falls ja, dann bitte eines für eine möglichst niedrige Delphiversion.

Alternativ können wir warten, bis jemand sich meldet, der besser als meine Wenigkeit helfen kann. Frühlingsrolle und jaenicke z.B. sind solche Experten, die eigentlich zu jedem (nicht nur Delphi-)Problem irgendeine substantielle Hilfe parathaben.

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 07.04.18 18:13 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Sa 07.04.18 18:44 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:

Sei kreativ und probier's einfach mal aus. ;)


bin schon dabei...

Danke an euch,

Daniel