Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX - Bild - OnClick... (https://www.delphipraxis.net/15013-delphix-bild-onclick.html)

Ricane 20. Jan 2004 16:40


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:
  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;
Das Bild ist auch sichtbar, kein Problem; aber wie weise ich diesem Bild denn jetzt ein OnClick Ereignis zu?!

Jemand eine Idee?


Danke und Gruss,

Ricane

Maximus 20. Jan 2004 17:12

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!

Ricane 20. Jan 2004 17:36

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

Ricane 20. Jan 2004 20:24

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 19:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz