Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Drag&Drop innerhalb eines Treeviews (https://www.delphipraxis.net/104362-drag-drop-innerhalb-eines-treeviews.html)

BrinkschulteManfred 2. Dez 2007 13:08


Drag&Drop innerhalb eines Treeviews
 
Hallo zusammen,

ich komme momentan leider nicht weiter. Ich möchte einen Drag&Drop innerhalb eies TreeView implementieren, bekomme aber jedesmal eine "Zugriffsverletzung bei Adresse ..."
Der inzwischen sehr einfache Code ist folgender:
Delphi-Quellcode:
procedure TFormMain.TreeViewSchuleDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  StatusBarMain.Panels[0].Text :=
    IntToStr(TTreeView(Source).Selected.SelectedIndex) + '-' +
    IntToStr(TTreeView(Sender).DropTarget.SelectedIndex);
{  ...  }
end;
Imprinzip möchte ich damit erst mal nur die Knotenytpen von Ursprung und Ziel herausfinden.
Wo mag das Problem liegen?

Beste Grüße
Manfred

marabu 2. Dez 2007 16:38

Re: Drag&Drop innerhalb eines Treeviews
 
Hallo Manfred,

während ein Dragging bei fehlender Selektion garnicht erst begonnen wird, ist DropTarget sehr oft NIL. Ohne Prüfung erhältst du also viele Zugriffsfehler:

Delphi-Quellcode:
procedure TDemoForm.TreeViewDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
var
  srcNode, tgtNode: TTreeNode;
begin
  with Source as TTreeView do
    srcNode := Selected;
  with Sender as TTreeView do
    tgtNode := DropTarget;

  if Assigned(tgtNode)
    then StatusBarMain.Panels[0].Text := IntToStr(srcNode.AbsoluteIndex)
         + '-' + IntToStr(tgtNode.AbsoluteIndex)
    else MessageBeep(0);
  Accept := True;
end;
Grüße vom marabu

BrinkschulteManfred 3. Dez 2007 05:26

Re: Drag&Drop innerhalb eines Treeviews
 
Guten Morgen Maraubu,

super, das war es, hätte ich auch drauf kommen müssen.... :thumb:

Vielen Dank
Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz