![]() |
Drag&Drop für Kartenspiel
Servus,
ich programmiere grade in Lazarus ein kleines Kartenspiel und ich will karten per Drag&Drop legen können. Kann mir einer mal helfen und mir Tipps geben wie man das am besten macht? Es sind TImages die auf andere TImages gelegt werden sollen. Es gibt dafür ja ereignisse, aber ich hab keine Ahnung wie man das macht. Danke für jede hilfe. MfG |
Re: Drag&Drop für Kartenspiel
Drag und Drop wird
![]() |
Re: Drag&Drop für Kartenspiel
quick & dirty:
du hast panels, wo je ein TImage drauf liegt. den Images weist du diese Methode als OnMouseDown zu:
Delphi-Quellcode:
Gruß Frank
procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var pnl:TPanel; begin if Button=mbLeft then begin ReleaseCapture; pnl:=((sender as TImage).parent as TPanel); pnl.BringToFront; pnl.Perform(WM_NCLBUTTONDOWN,HTcaption,0); end; end; |
Re: Drag&Drop für Kartenspiel
danke erstmal für die antworten.
Also bei der Methode von Frank gibbet Folgendes Problem: Ich entwickle unter Linux mit Lazarus, das erste problem: Lazarus kennt ReleaseCapture nicht und das zweite problem ist das die methode mit windows messages funktioniert, was ein bisschen problematisch ist unter linux ;) Noch andere "quick 'n' dirty's"? MfG |
Re: Drag&Drop für Kartenspiel
Dann verwende doch die Drag & Drop Events - gibts die unter Linux??
Also Dragmode bei den Eigenschaften auf dmautomatic Bei OnDragover dann in etwa sowas
Delphi-Quellcode:
oder auch
if source=image1 then accept:=true;
Delphi-Quellcode:
um das akzeptieren des gezogenen Elements zu erlauben
if (source as TImage) then accept:=true;
Dann kannst du bei OnDragDrop auswerten was mit dem gedroppten Elemnt gamcht wird Das sollte dann auch funzn - zumindest unter WIN Gruß Matthias |
Re: Drag&Drop für Kartenspiel
Jo, die gibt es, die funzen aber ein wenig verbuggt, also das verbuggte sind die cursor, die verändern sich da teilweiße wahllos und wenn man mim draggen fertig ist, bleibt das oft ein "hier kannst du nicht hindraggen"-symbol ;).
Außerdem wollte ich das ganze einfach ein wenig schöner machen und die karte mit der maus mitgehen lassen, so wie in solitaire MfG |
Re: Drag&Drop für Kartenspiel
Zitat:
|
Re: Drag&Drop für Kartenspiel
also nochmal manuell, sollte aso in der clx funktionieren:
Delphi-Quellcode:
HTH Frank
{ Private-Deklarationen }
fDragging:boolean; fRelPos:TPoint; ... procedure TForm1.PanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin fDragging:=true; fRelPos:=Point(x,y); (sender as TPanel).Cursor:=crCross; end; procedure TForm1.PanelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin fDragging:=false; (sender as TPanel).Cursor:=crDefault; end; procedure TForm1.PanelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if fDragging then begin (sender as TPanel).left:=panel1.left+X-fRelPos.x; (sender as TPanel).top:=panel1.top+Y-fRelPos.y; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 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