Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ListView1DragDrop danach (selected=true) (https://www.delphipraxis.net/4359-listview1dragdrop-danach-selected%3Dtrue.html)

aaron 25. Apr 2003 16:35


ListView1DragDrop danach (selected=true)
 
wie kann ich das verschobene item nach dem verschieben (selected=true) markieren?


Delphi-Quellcode:
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  DragItem, DropItem, CurrentItem, NextItem: TListItem;
begin
  if Sender = Source then
    with TListView(Sender) do
    begin
      DropItem   := GetItemAt(X, Y);
      CurrentItem := Selected;
      while CurrentItem <> nil do
      begin
        NextItem := GetNextItem(CurrentItem, SdAll, [IsSelected]);
        if DropItem = nil then DragItem := Items.Add
        else
          DragItem := Items.Insert(DropItem.Index);
        DragItem.Assign(CurrentItem);
        CurrentItem.Free;
        CurrentItem := NextItem;
       // NextItem.Focused; ??????????????? oder
      // CurrentItem.Selected:=true;???????????  funktioniert beides nicht
      end;
    end;
end;

Christian Seehase 25. Apr 2003 17:39

Moin Aaron,

hast Du auch die Eigenschaft HideSelection auf false umgestellt (Defaultwert ist hier true)?

aaron 25. Apr 2003 21:11

ja, habe ich...

Specialwork 26. Apr 2003 00:24

Hallo Aaron,

Dein Problem ist, das sowohl Nextitem und CurrentItem auf nil zeigen.

Delphi-Quellcode:
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  DragItem, DropItem, CurrentItem, NextItem: TListItem;
begin
  if Sender = Source then
    with TListView(Sender) do
    begin
      DropItem   := GetItemAt(X, Y);
      CurrentItem := Selected;
      while CurrentItem <> nil do
      begin
        NextItem := GetNextItem(CurrentItem, SdAll, [IsSelected]);
        if DropItem = nil then DragItem := Items.Add
        else
          DragItem := Items.Insert(DropItem.Index);
        DragItem.Assign(CurrentItem);
        CurrentItem.Free;
        CurrentItem := NextItem;
       // NextItem.Focused; <-- = NIL
      // CurrentItem.Selected:=true;?<-- = NIL
      end;
    end;
end;
Gruß, Tom

aaron 26. Apr 2003 13:43

hallo tom, vielen dank für deine antwort...
ich verstehe nicht wie du das meinst, denn ich benutze
Delphi-Quellcode:
  // NextItem.Focused; <-- = NIL
      // CurrentItem.Selected:=true;?<-- = NIL
überhaupt nicht, war eigentlich mehr als frage gedacht.
zeig mir doch wie es funktioniert :firejump:

aaron 26. Apr 2003 17:33

kann mir das jemand zeigen, ist verdammt dringend?

Specialwork 26. Apr 2003 21:13

Hallo Aaron,

Arbeite daran, und poste es Dir spätestens morgen

Gruß, Tom

aaron 26. Apr 2003 22:32

super :dancer:

Specialwork 28. Apr 2003 09:04

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Aaron,

:bouncing4:

Hier die versprochene Lösung:

Delphi-Quellcode:
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  DragItem, DropItem, CurrentItem, NextItem: TListItem;
begin
  if Sender = Source then begin
    with TListView(Sender) do begin
      DragItem   := nil;
      DropItem   := GetItemAt(X, Y);
      CurrentItem := Selected;

      while CurrentItem <> nil do begin
        NextItem := GetNextItem(CurrentItem, SdAll, [IsSelected]);

        if DropItem = nil then begin
          DragItem := Items.Add;
        end else begin
          DragItem := Items.Insert(DropItem.Index);
        end;

        DragItem.Assign(CurrentItem);
        CurrentItem.Free;
        CurrentItem := NextItem;
      end;

      if DragItem <> nil then
        DragItem.Selected:=true;
    end;
  end;
end;

procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept:=True;
end;
Gruß, Tom

aaron 28. Apr 2003 09:13

jepp.
großen Dank ...
:bounce1:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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