![]() |
DelphiX - Bild - OnClick...
Moin,
habe ein Problem mit den von mir erstellten Bildern... Also, ich erstelle mit folgendem Code ein Bild, welches ich dann anzeige.
Delphi-Quellcode:
Das Bild ist auch sichtbar, kein Problem; aber wie weise ich diesem Bild denn jetzt ein OnClick Ereignis zu?!
Private
{ Private-Deklarationen } Public { Public-Deklarationen } End; TMenuItems = Class(TImageSprite) End; Var NeuesSpiel: TMenuItems; [...] NeuesSpiel := TMenuItems.Create(frmStart.DxSpriteEngine1.Engine); NeuesSpiel.Image := frmStart.DXImageList1.Items.Find('NeuesSpiel'); NeuesSpiel.Height := NeuesSpiel.Image.Height; NeuesSpiel.Width := NeuesSpiel.Image.Width; NeuesSpiel.Visible := True; NeuesSpiel.X := 280; NeuesSpiel.Y := 170; NeuesSpiel.Z := 3; Jemand eine Idee? Danke und Gruss, Ricane |
Re: DelphiX - Bild - OnClick...
Die DXDraw Fläche hat eine Methode OnClick. Diese Methode gibt per X und Y die Position des Mauszeigers zurück, und die Position des Mauszeigers kannst du mit der des "Bildes" überprüfen!
|
Re: DelphiX - Bild - OnClick...
An die Lösung habe ich auch gedacht, aber gibt es wirklich keine bessere Lösung?
Na ja, dann muss ich es wohl auf die Weise machen... Grüsse und Danke, Ricane |
Re: DelphiX - Bild - OnClick...
Ich habe eine bessere Lösung gefunden, die um einiges übersichtlicher ist...
Als erstes braucht man einen "Ersatz - Cursor" dem man ganz normal als Sprite erstellt. Dazu natürlich noch die ganzen Sprites die man anklicken möchte... Jetzt erstellt man für den Cursor - Sprite die Standard Kollisionsabfrage. Wenn dann der Cursor mit einem "klickbarem" Sprite kollediert, setzt man einfach einen best. Wert in eine best. Var. In der OnClick Methode des DxDraw Steuerlements fragt man diese Var nun wieder ab und fertig ist der Spass :mrgreen: Hier noch mal ein paar Fetzten Source Code dafür...
Delphi-Quellcode:
Private
{ Private-Deklarationen } Public { Public-Deklarationen } End; TMenu = Class(TImageSprite) End; TCursor = Class(TImageSprite) Procedure DoMove(MoveCount: Integer); Override; Procedure DoCollision(Sprite: TSprite; Var Done: Boolean); Override; End; Var GeheZu: TMenu; Einkaufen: TMenu; Verkaufen: TMenu; ECursor: TCursor; WasIstAktiv: String; [...] Procedure TfrmMain.FormCreate(Sender: TObject); Begin // Blendet den Cursor aus. Screen.Cursor := -1; End; Procedure TCursor.DoMove(MoveCount: Integer); Begin Collision; End; Procedure TCursor.DoCollision(Sprite: TSprite; Var Done: Boolean); Begin If Sprite = GeheZu Then WasIstAktiv := 'GeheZu'; If Sprite = Einkaufen Then WasIstAktiv := 'Einkaufen'; If Sprite = Verkaufen Then WasIstAktiv := 'Verkaufen'; End; Procedure TfrmMain.DXDraw1Click(Sender: TObject); Begin If WasIstAktiv = 'GeheZu' Then Begin End; End; Hoffe das hat jemanden geholfen... Grüsse, Ricane |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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