![]() |
Wenn Maus über Rechteck in Image soll Hint erscheinen
Hallo,
ich habe ein TImage, dass auf einer Scollbox liegt. Ich habe per Canvas Rechtecke auf das Image gemalt. Wenn die Maus über ein Rechteck ist soll ein Text im Hint an der Stelle angezeigt werden, wenn die Maus das Rechteck verlässt soll der Hint verschwinden. Allerdings klappt das nicht so richtig. Der Hint will nicht verschwinden und wenn ich das Bild weiter scrolle wird der Hint nicht am Rechteck angezeigt, sondern -wenn überhaupt- irgendwo anders im bild. Das ist mein Code (in OnMouseMove beim Image):
Delphi-Quellcode:
wenn anstatt HideHint CancelHint verwende klappt es auch nicht. Showhint ist bei Application und Image auf True
// Abfrage ob Maus über rechteck...
begin application.HintPause:=20; application.ActivateHint(Point(x,y)); image1.hint:='Test'; end else application.hidehint; danke |
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
Hi und Willkommen auf'er DP :dp: :hi:
Guck mal im OI nach dem Eintrag "Hint" :wink: |
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
:wiejetzt:
den Hint setze ich per Laufzeit. das ist aber nicht das problem. :cry: |
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
Warum machst den Hint zur Laufzeit?
|
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
weil ich später dann, wenn das klappt, für jedes Rechteck einen anderen Hint haben will.
|
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
ich glaub das geht net
|
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
das geht sehr wohl. damit habe ich ja auch kein problem.... :wall:
|
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
Und wie sieht deine Abfrage aus, ob die Maus über einem Rechteck ist?
|
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
erzeuge eine neue Komponente ,die ein rechteck zeichnet.
diese komponente kannst du so oft auf dein image plazieren wie du willst. mache zwei neue events mit CM_MOUSEENTER und CM_MOUSELEAVE und steuere damit deinen hint. ![]() raik |
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
Delphi-Quellcode:
rechteck ist 5*5 px groß
if (mx+5 >= x) and (mx <=x) and (my+5 >=y) and (my <=y) then
mx = startpunkt X von Rechteck my = startpunkt Y von Rechteck x = maus x y = maus y |
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
Zitat:
|
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
Wenn du eh eine Scrollbox nimmst, könntest du genauso gut ein Shape nehmen, oder hab ich da jetzt was falsch verstanden...:gruebel:
Man liest sich, Stanlay :hi: |
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
da hast du was falsch verstanden, die scrollbox benutze ich da das bild im image größer als die form ist.
|
Re: Wenn Maus über Rechteck in Image soll Hint erscheinen
Hallo
könntest das mal so probieren:
Delphi-Quellcode:
Mfg Frank
...
private { Private-Deklarationen } rect1,rect2,rect3:Trect; ... procedure TForm1.FormCreate(Sender: TObject); begin rect1:=rect(10,10,50,50); rect2:=rect(100,100,150,150); rect3:=rect(200,200,250,250); Image1.Canvas.Brush.Color:=clblue; image1.Canvas.FillRect(rect1); image1.Canvas.FillRect(rect2); image1.Canvas.FillRect(rect3); Image1.ShowHint:=true; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); Var newhint:string; begin //neuen hint ermitteln newhint:=''; if PtInRect(rect1,point(x,y)) then newhint:='Rechteck1' else if PtInRect(rect2,point(x,y)) then newhint:='Rechteck2' else if PtInRect(rect3,point(x,y)) then newhint:='Rechteck3'; //wenn anderer hinttext -> neuen hint setzen if newhint<>image1.Hint then begin Image1.Hint:=newhint; Application.CancelHint; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 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