Fórum Drag and drop em Stringgrid Será que ninguém pode me ajudar? #169633
16/07/2003
0
Galera gostaria de saber como arrasto uma linha de um stringgrid para outro stringgrid ou para um dbgrig e como arrasto uma linha de um dbgrid para um stringgrid ou para outro dbgrid usando a propriedade drag drop :?:
[]´s Lindomir
lindomir@arcosnet.com.br
[]´s Lindomir
lindomir@arcosnet.com.br
Lindomir
Curtir tópico
+ 0
Responder
Posts
16/07/2003
Jairroberto
Olá, Lindomir!
O problema é que a resposta para isso é meio complexa e está tudo no help do Delphi. Procure no help do Delphi os exemplo sobre a propriedade DragMode e sobre os eventos OnDragOver e OnDragDrop. Você verá que é bastante simples, pois os parâmetros deste eventos trazer um referência para o componente de origem (Source) do que está sendo arrastado e para o componente sobre o qual está o mouse (Sender). Os exemplos são bastante elucidativos. O mais difícil é adequar à sua necessidade específica. Veja um pequeno exemplo que inclui uma nova linha no StringGrid de destino e copia os dados da linha arrastada pelo mouse do StringGrid de origem:
O DFM deste exemplo está assim:
Um abraço,
Jair
O problema é que a resposta para isso é meio complexa e está tudo no help do Delphi. Procure no help do Delphi os exemplo sobre a propriedade DragMode e sobre os eventos OnDragOver e OnDragDrop. Você verá que é bastante simples, pois os parâmetros deste eventos trazer um referência para o componente de origem (Source) do que está sendo arrastado e para o componente sobre o qual está o mouse (Sender). Os exemplos são bastante elucidativos. O mais difícil é adequar à sua necessidade específica. Veja um pequeno exemplo que inclui uma nova linha no StringGrid de destino e copia os dados da linha arrastada pelo mouse do StringGrid de origem:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure StringGrid2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure StringGrid2DragDrop(Sender, Source: TObject; X, Y: Integer);
private
SourceRow: Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ACol, ARow: Integer;
begin
with TStringGrid(Sender) do
begin
BeginDrag(False, 3);
MouseToCell(X, Y, ACol, ARow);
SourceRow := ARow;
end;
end;
procedure TForm1.StringGrid2DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := (Source is TStringGrid) and (Source <> Sender);
end;
procedure TForm1.StringGrid2DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
ACol, ARow: Integer;
begin
TStringGrid(Sender).RowCount := TStringGrid(Sender).RowCount + 1;
ARow := Pred(TStringGrid(Sender).RowCount);
for ACol := 0 to Pred(TStringGrid(Source).ColCount) do
TStringGrid(Sender).Cells[ACol, ARow] := TStringGrid(Source).Cells[ACol, SourceRow];
end;
end.
O DFM deste exemplo está assim:
object Form1: TForm1 Left = 240 Top = 133 Width = 696 Height = 480 Caption = ´Form1´ Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = ´MS Sans Serif´ Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object StringGrid1: TStringGrid Left = 12 Top = 16 Width = 597 Height = 157 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goTabs] TabOrder = 0 OnDragDrop = StringGrid2DragDrop OnDragOver = StringGrid2DragOver OnMouseDown = StringGrid1MouseDown end object StringGrid2: TStringGrid Left = 12 Top = 196 Width = 597 Height = 161 TabOrder = 1 OnDragDrop = StringGrid2DragDrop OnDragOver = StringGrid2DragOver OnMouseDown = StringGrid1MouseDown end end
Um abraço,
Jair
Responder
Gostei + 0
18/07/2003
Lindomir
Muito obrigado Jair vc me ajudou bastante
[]´s Lindomir Avelar :D
[]´s Lindomir Avelar :D
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)