Aslo die Zeile mit
Accept := (Sender = Source) and (Row > 0);
Wird dir immer False liefern, weil Sender das Grid ist selbst ist und Source ist das Grid wovon er ds annehmen soll xD
und Accept muss True geben damit es funkt xD
2. Mit MouseToCell geht das net, da es sich nur auf sich selbst bezieht und net auf die anderen
Du musst die erstmal selbst festlegen wenn du DragKind auf dmManual hast, wann er das machen soll, bei dir am besten bei MouseDown
Delphi-Quellcode:
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StringGrid1.BeginDrag(True);
end;
end.
So damit startest du das Drag and Drop
als nächstes machste bei deinem anderen StringGrid bei DragOver folgendes
Delphi-Quellcode:
procedure TForm1.StringGrid2DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
If Source is TStringGrid then //Nur StringGirds annehmen
Accept := True;
end;
Nun machste in Drag and Drop folgendas
Delphi-Quellcode:
procedure TForm1.StringGrid2DragDrop(Sender, Source: TObject; X,
Y: Integer);
var Cell : TPoint;
Row : Integer;
begin
(Sender as TStringGrid).MouseToCell(X,Y,Cell.X,Cell.Y);
Row := (Source as TStringGrid).Row;
(Sender as TStringGrid).Rows[Cell.Y].Assign((Source as TStringGrid).Rows[Row]);
(Source as TStringGrid).Rows[Row].Clear;
end;
end.