unit U_Cards2;
.
. {generated code snipped}
.
.
procedure TForm1.ShuffleBtnClick(Sender: TObject);
{User clicked Shuffle}
begin
if not assigned(deck)
then deck:=TDeck.create(Application.mainform,point(10,10));
Deck.shuffle;
end;
procedure TForm1.FormCreate(Sender: TObject);
{ Create and shuffle deck and assign card exits }
var
i:integer;
begin
deck:=TDeck.create(self, point(10,10));
deck.shuffle;
For i:=0 to 51 do
with deck.deckobj[i] do
begin
onmousedown:=CardMouseDown;
ondragover:=FormDragover;
ondragdrop:=FormDragDrop;
end;
end;
procedure TForm1.DealBtnClick(Sender: TObject);
{User clicked Deal button}
var
card:TCard;
i,j:integer;
begin
for i:= 1 to 7 do
Begin
for j:= 1 to 4 do
If Deck.getnextcard(card)
then
with card do
Begin
left:=100*j;
top:=i*20;
visible:=true;
showdeck:=false;
bringToFront;
end;
end;
end;
procedure TForm1.SelectDeckBtnClick(Sender: TObject);
{User clicked "Select Card Back" button}
var
i:integer;
begin
If OKBottomDlg.showmodal=mrOK
then for i:=0 to 51 do
with deck.deckobj[i] do decktype:=OKBottomdlg.newdecktype;
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
{Yeah, form and cards will accept things being dragged}
begin
accept:=true;
end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
var p:TPoint;
{If somebody dropped a card on us, move its coordinates here}
begin
p.x:=x;
p.y:=y;
If sender is TCard then {we're dropping on another card}
with sender as tcard do {adjust "moveto" point from card coordinates to "form" coordinates}
begin
p.x:=p.x+left;
p.y:=p.y+top;
end;
If source is tcard {we're dropping a card, move it and put it on top}
then with source as tcard do
begin
top:=p.y;
left:=p.x;
bringtofront;
end;
end;
procedure TForm1.CardMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
{Flip a card on right click}
begin
If (sender is TCard) and (button=mbright)
then with tcard(Sender) do showdeck:=not showdeck;
end;
end.