(*//
标题:TreeView-StringGrid拖拽
说明:拖拽包含子节点
日期:2002-09-14
设计:Zswang
支持:[email protected]
//*)procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var
vCol, vRow: Integer;
begin
Accept := False;
if not (Source is TTreeView) then Exit;
TStringGrid(Sender).MouseToCell(X, Y, vCol, vRow);
if vCol < TStringGrid(Sender).FixedCols then Exit;
if vRow < TStringGrid(Sender).FixedRows then Exit;
Accept := True;
end;procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Assigned(TTreeView(Sender).Selected) then
TTreeView(Sender).BeginDrag(True);
end;procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
vCol, vRow: Integer;
I, T: Integer;
begin
with TStringGrid(Sender), TTreeView(Source) do begin
MouseToCell(X, Y, vCol, vRow);
Cells[vCol, vRow] := Selected.Text;
for I := Selected.AbsoluteIndex + 1 to Items.Count - 1 do begin
Inc(vRow);
if Selected.Level >= Items[I].Level then Break;
if vRow >= RowCount then Break;
T := vCol + (Items[I].Level - Selected.Level);
if vCol <= ColCount then Cells[T, vRow] := Items[I].Text;
end;
end;
end;
标题:TreeView-StringGrid拖拽
说明:拖拽包含子节点
日期:2002-09-14
设计:Zswang
支持:[email protected]
//*)procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var
vCol, vRow: Integer;
begin
Accept := False;
if not (Source is TTreeView) then Exit;
TStringGrid(Sender).MouseToCell(X, Y, vCol, vRow);
if vCol < TStringGrid(Sender).FixedCols then Exit;
if vRow < TStringGrid(Sender).FixedRows then Exit;
Accept := True;
end;procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Assigned(TTreeView(Sender).Selected) then
TTreeView(Sender).BeginDrag(True);
end;procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
vCol, vRow: Integer;
I, T: Integer;
begin
with TStringGrid(Sender), TTreeView(Source) do begin
MouseToCell(X, Y, vCol, vRow);
Cells[vCol, vRow] := Selected.Text;
for I := Selected.AbsoluteIndex + 1 to Items.Count - 1 do begin
Inc(vRow);
if Selected.Level >= Items[I].Level then Break;
if vRow >= RowCount then Break;
T := vCol + (Items[I].Level - Selected.Level);
if vCol <= ColCount then Cells[T, vRow] := Items[I].Text;
end;
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货