![]() |
Neue TImage Komponente entwickeln
Ich möchte gerne ein Image so ändern das ich insgesamt drei bilder angeben kann und das je nach MOuse_Event eines der drei bilder angezeigt wird.
Wenn Die MAus über dem image feld ist soll bild 1 gezeigt werden wenn die Linke maustaste gedrückt wird soll bild 2 gezeigt werden und wenn die maus nicht über dem feld ist soll bild 3 gezeigt werden. Kann mir da jdm weiterhelfen???? wäre nett!! MFG PMC |
Re: Neue TImage Komponente entwickeln
Das könnte man auch mit THarmFade realisieren, glaub ich.
Kannst es Dir ja mal angucken (harmfade.zip) : ![]() Gruß Ronny. |
Re: Neue TImage Komponente entwickeln
Liste der Anhänge anzeigen (Anzahl: 1)
Habs getestet und es funktioniert mit HarmFade. Habs mal kurz zusammen gepackt und als Datei angefügt :
|
Re: Neue TImage Komponente entwickeln
Harmfade kann ich nicht sogut gebrauchen!!!!
Ich müsste eigentlich nur wissen wie ich der property "Picture" von TImage eine Bitmap zuweisen kann(Inerhalb einer procedure der Komponente, als nicht im späteren programm) Also angenommen ich nenne meine neue komponente TNewImage dann muss ich doch irgendwie auf die vererbten properties zugreifen können. man kann ja TImage.Picture.loadfromfile('datei.bmp'); ICh möchte das selbe machen nur eben inerhalb der komponente. |
Re: Neue TImage Komponente entwickeln
Hier mal mein Code :
Delphi-Quellcode:
TBBox = class(timage)
private FBBoxState : TBBoxState; FBitmapNormal : String; FBitmapOver : String; FBitmapClick : String; { Private declarations } protected procedure MouseMove(shift: TShiftState; x,y:Integer); override; { Protected declarations } public property BBoxState : TBBoxState read FBBoxState write FBBoxState; { Public declarations } published property Width; property BmpNormal : String read FBitmapNormal write FBitmapNormal; property BmpOver : String read FBitmapOver write FBitmapOver; property BmpClick : String read FBitmapClick write FBitmapClick; { Published declarations } end; procedure Register; implementation procedure TBBox.MouseMove(shift: TShiftState; x,y:Integer); begin TBBox.picture.loadfromfile(FBitmapOver); (aber das funzt ja so nicht) inherited MouseMove(shift,x,y); end; |
Re: Neue TImage Komponente entwickeln
Hallo,
Zitat:
Delphi-Quellcode:
Gruß Ronny.
TBBox = class(timage)
private // FBBoxState : TBBoxState; FBitmapNormal : String; FBitmapOver : String; FBitmapClick : String; MyPicture:TPicture; constructor Create(AOwner: TComponent); override; destructor Destroy; override; { Private declarations } protected procedure SetzeBild(Bild: TPicture); procedure MouseMove(shift: TShiftState; x,y:Integer); override; { Protected declarations } public // property BBoxState : TBBoxState read FBBoxState write FBBoxState; { Public declarations } published property Width; property BmpNormal : String read FBitmapNormal write FBitmapNormal; property BmpOver : String read FBitmapOver write FBitmapOver; property BmpClick : String read FBitmapClick write FBitmapClick; { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('Beispiele', [TBBox]); end; constructor TBBox.Create(AOwner: TComponent); begin inherited Create(AOwner); MyPicture:=TPicture.Create; end; destructor TBBox.Destroy; begin MyPicture.Free; inherited Destroy; end; procedure TBBox.SetzeBild(Bild: TPicture); begin MyPicture:=Bild; Self.picture:=Bild; end; procedure TBBox.MouseMove(shift: TShiftState; x,y:Integer); begin MyPicture.LoadFromFile(FBitmapOver); //aber das funzt jetzt SetzeBild(MyPicture); inherited MouseMove(shift,x,y); end; |
Re: Neue TImage Komponente entwickeln
Wie kann ich denn eine Liste machen wo ich im design modus
dann eingeben kann. ICh will das so ähnlich machen wie bei einer FileListBox mit dem FIlter. Z.B. Bezeichnung - Wert1 - Wert2 (als property-praktisch wie eine Stringliste) Beispiel : Die property soll z.b. "Koordinaten" heisen und die liste sähe dann z.B. so aus : BEzeichnung - X - Y Punkt1 10 5 Punkt2 205 55 : : Punktn xx yy |
Re: Neue TImage Komponente entwickeln
Das war die Vorgabe :
Zitat:
Meiner Meinung nach müssten ersteinmal MouseOver, MouseLeave und MouseEnter eingebunden werden, oder ? Gruß Ronny. PS: Oder ich hab´s nicht ganz geschnallt. :oops: |
Re: Neue TImage Komponente entwickeln
Zitat:
Auf jeden fall müsste das BmpNormal geladen werden sobald die maus nicht mehr auf dem objekt ist. Jetzt zum eigentlichen : Ich brauche eine Property der ich insgesamt 7 werte zuweisen kann (das würde ich ja eigentlich mit einem Record machen)
Delphi-Quellcode:
Aber das möchte ich wie in so eine tabelle eingeben können
Eigenschft = Record
BmpNormal : TPicture; BmpOver : TPicture; BmpClick : TPicture; x : Integer; y : Integer; xx : Integer; yy : Integer; end; aber dann noch als eine Art Array. So das bei MouseMove nach den coordinaten(x,y,xx,yy) das BmpOver geladen wird usw. |
Re: Neue TImage Komponente entwickeln
Hallo,
hier die Komponente, laut Vorgabe, ohne Fehlerbehandlungen :
Delphi-Quellcode:
Gruß Ronny.
type
TBBox = class(timage) private FBitmapOver : String; FBitmapLeave: String; FBitmapClick : String; MyPicture:TPicture; procedure MausRaus(var WinNachricht:TMessage);message CM_MOUSELEAVE; procedure MausRein(var WinNachricht:TMessage);message CM_MOUSEENTER; constructor Create(AOwner: TComponent); override; destructor Destroy; override; { Private declarations } protected FOnMouseEnter: TNotifyEvent; FOnMouseLeave:TNotifyEvent; FOnMouseClick: TNotifyEvent; procedure Click; override; procedure SetzeBild(Bild: TPicture); { Protected declarations } public { Public declarations } published property BmpOver : String read FBitmapOver write FBitmapOver; property BmpLeave : String read FBitmapLeave write FBitmapLeave; property BmpClick : String read FBitmapClick write FBitmapClick; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('Beispiele', [TBBox]); end; constructor TBBox.Create(AOwner: TComponent); begin inherited Create(AOwner); MyPicture:=TPicture.Create; end; destructor TBBox.Destroy; begin MyPicture.Free; inherited Destroy; end; procedure TBBox.SetzeBild(Bild: TPicture); begin MyPicture:=Bild; Self.picture:=Bild; end; procedure TBBox.Click(); begin inherited Click; MyPicture.LoadFromFile(FBitmapClick); SetzeBild(MyPicture); end; procedure TBBox.MausRaus(var WinNachricht:TMessage); begin inherited; if WinNachricht.Msg=CM_MOUSELEAVE then MyPicture.LoadFromFile(FBitmapLeave); SetzeBild(MyPicture); end; procedure TBBox.MausRein(var WinNachricht:TMessage); begin inherited; if WinNachricht.Msg=CM_MOUSEENTER then MyPicture.LoadFromFile(FBitmapOver); SetzeBild(MyPicture); end; |
Re: Neue TImage Komponente entwickeln
Zitat:
Jedoch kann man Windows Botschaften abfangen und die Funktion der TImage - Komponente dementsprechend erweitern. Gruß Ronny. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 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