18. marts 2003 - 10:37
Der er
1 kommentar og
1 løsning
Kryds og bolle?
Er der én der kan hjælpe mig lidt i Delphi? Jeg skal lave et kryds og bolle spil. Jeg har lavet et string grid, og vil gerne vide hvordan man bruger drag and drop! Et eksempel ville være at foretrække. F.eks. hvordan man trækker et billede fra et felt til et andet.
På forhånd tak for hjælpen!
18. marts 2003 - 13:50
#1
Lav en form med en stringgrid på
sæt fixedcols og fixedrows til 0
sæt rowcount og colcount til 3
sæt defaultrowheight og defaultcolwidth til 60
sæt dragmode til dmAutomatic
sæt width og height til 184
lav 2 globale variable:
var
gx,gy: integer;
lav følgende events:
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.cells[0,0] := 'X';
StringGrid1.cells[1,1] := 'Y';
StringGrid1.cells[2,2] := 'Z';
end;
procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
If (sender is TStringGrid) and (Source is TStringGrid) then
begin
(Sender as TStringGrid).cells[(X DIV 60),(Y Div 60)] := StringGrid1.cells[(gx div 60),(gy div 60)];
end;
end;
procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
gx := x;
gy := y;
end;
Nu kan du trække x,y og z til de andre felter.
18. marts 2003 - 14:16
#2
Jeg havde lige lidt problemer med den.
Sæt Dragmode til dmManual og indsæt følgende i mousedown eventen:
(Det skal selvfølgelig være StringGrid1MouseDown og ikke Formens)
StringGrid1.BeginDrag(False);
dvs:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
gx := x;
gy := y;
StringGrid1.begindrag(False);
end;