![]() |
OnMouseOver bei selbst erzeugtem TPicture
hallo,
ich habe eine liste erzeugt, die aus records besteht. in diesem record sind wiederum TPicture elemente enthalten. in der liste wird jeder eintrag angezeigt und das darin enthaltene TPicture wird als verkleinertes thumbnail angezeigt. ich möchte jetzt, wenn ich mit dem mauszeiger über dem TPicture bin, eine vergrösserte ansicht in einer anderen TPaintBox anzeigen lassen. doch wie kann ich das machen? es muss ja irgendwie für alle TPictures in allen einträgen der liste die gleiche prozedur aufgerufen werden. oder kann man das nur machen, wenn mein eintrag ein object ist? und wenn ja, wie? um hier nicht zu allgemein rumzureden, kann ich ja mal meinen eintrag hinzufügen:
Delphi-Quellcode:
so. wie man sehen kann, solle es eine kleine datenbank für spiele werden und so ein eintrag soll bis zu 6 bilder bekommen, die in der listenansicht als thumbs (stretchdraw) angezeigt werden.
BasicGameEntry = record
Name,Genre,System,Publisher,Released: string; Description: TStrings; Rating: integer; Picture: Array[1..6] of TPicture; end; |
Re: OnMouseOver bei selbst erzeugtem TPicture
Erweitere doch TPicture doch um das Ereignis OnMouseOver. Wo ist das Problem??
|
Re: OnMouseOver bei selbst erzeugtem TPicture
genau das möchte ich ja machen. da ich aber nicht weiss wie ich das machen kann, frage ich ja hier.
wie kann ich TPicture um das ereignis OnMouseOver erweitern und vor allem verstehe ich nicht so ganz, wie ich dann allgemein jedes TPicture an meine paintbox senden kann. während das programm läuft, sollen ja einträge erstellt und der liste hinzugefügt werden. und auch diese einträge sollen schon diese OnMouseOver eigenschaft besitzen. das ist mein problem. |
Re: OnMouseOver bei selbst erzeugtem TPicture
Ahhhh jetzt verstehe ich was du meinst...
Vergiss das mit TPicture und On MouseOver.. :wall: Das geht ja garnet weils ein Container ist Aber mal als Anstoß.. Setze mal eine Paintbox auf deinen Formular. Und Create ein TPicture das etwa halb so groß ist wie deine Paintbox. Über die X-Y Koordinaten müsste sich ja rausfinden lassen wo sich dein Picture aufhält. Bisschen pseudocode aus einem meiner Projekte (leicht abgeändert) :stupid:
Delphi-Quellcode:
function TPictuere.Erkennen(Punkt:Tpoint): boolean;
var PunktOL:Tpoint; //Punkt oben links deines Pictures PunktUR:Tpoint; //Punkt unten rechts deines Pictures begin PunktOL.X:=self.x1+10; PunktOL.Y:=self.y1+10; PunktUR.X:=self.x2-10; PunktUR.Y:=self.y2-10; if (punkt.X >=PunktOL.X) and (punkt.X <=PunktUR.X) and (Punkt.Y>=punktOL.Y) and (Punkt.Y<=punktUR.Y) then begin result:=true; //Tpicture berührt end else begin result:=false; // ausserhalb von Tpicture end; end; Ich hoffe es hilft dir etwas. |
Re: OnMouseOver bei selbst erzeugtem TPicture
ja, so kenne ich das auch noch aus der guten alten DOS-zeit. ich dachte nur, dass es unter windows vielleicht etwas leichter geht und man das nicht mehr alles per hand machen muss.
ich meine, ein Button weiss ja auch, wann auf ihn geklickt wird, ohne das vorher gefragt wird, wo der cursor ist. und wenn ich ein TPicture aus dercomponenten-leiste auswähle und auf meine form lege, dann kann ich ihm ja auch die eigenschaft OnMouseOver (oder OnClick...) zuweisen. daher denke ich auch, dass das es irgendwie möglich sein muss, allen TPictures, die in meiner liste kreiert werden, den Event OnMouseOver zuzuweisen und das TPicture schreibt sich dann auf zB PaintBox1.Canvas, oder? |
Re: OnMouseOver bei selbst erzeugtem TPicture
Zitat:
Meinst manchmal ein du Timage?? |
Re: OnMouseOver bei selbst erzeugtem TPicture
err, sorry, ich rede natürlich die ganze zeit von TImage.
|
Re: OnMouseOver bei selbst erzeugtem TPicture
also sieht dein Record so aus??
Delphi-Quellcode:
BasicGameEntry = record Name,Genre,System,Publisher,Released: string; Description: TStrings; Rating: integer; Picture: Array[1..6] of TImage; end; öhhm dann hat doch jedes Picture dieses Event :gruebel: Und du kannst es abfragen. |
Re: OnMouseOver bei selbst erzeugtem TPicture
ich glaube, wir reden hier aneinander vorbei.
also: ich habe eine paintbox, in der alle ainträge meiner liste dargestellt werde. die einträge sind das oben genannte record, das bilder in einer verkleinerten thumbnail-ansicht darstellt. das funktioniert auch einwandfrei so. es gibt jetzt noch eine zweite paintbox, in der die bilder in der originalgrösse (oder zumindest grösser) dargestellt werden sollen, wenn ich mit dem mauszeiger über das verkleinert dargestellte TImage des listeneintrags gehe. das problem ist: von alleine tut es das nicht. was muss ich machen, damit genau das realisiert wird? ich weiss, dass irgendwie irgendwo etwas in einen .OnMouseOver event geschrieben werden muss, habe aber wirklich keine ahnung wie und wo. |
Re: OnMouseOver bei selbst erzeugtem TPicture
Zitat:
Zitat:
Wie zeigst du die thumbnails in der Paintbox an? Auf jeden Fall musst du bei deren OnMouseMove aus den Koordinaten den Index des Bildes errechnen und dieses dann in der zweiten Paintbox anzeigen. [add]Sind im Record die Thumbnails oder die Original-Bilder enthalten? [/add] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 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