AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Items einer ListBox mittels DragDrop verschieben?
Thema durchsuchen
Ansicht
Themen-Optionen

Items einer ListBox mittels DragDrop verschieben?

Ein Thema von AlexII · begonnen am 28. Mai 2009 · letzter Beitrag vom 28. Mai 2009
 
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Items einer ListBox mittels DragDrop verschieben?

  Alt 28. Mai 2009, 20:09
Hab jetzt folgende Lösung gefunden, die auch gut funktioniert. Jetzt muss ich das aber so machen, dass die Items der ListBox2 parallel mit verschoben werden müssen. Wer hat da eine Idee?

Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  verschieben, ItemPos, i: integer;
begin
  Accept := false;
  if not (Source is TListBox) then
    Exit;
  if (Source as TListBox).MultiSelect then
  begin
    if (Source as TListBox).SelCount < 0 then
      Exit;
  end else begin
    if ((Source as TListBox).ItemIndex < 0) then
      Exit;
  end;

  with Source as TListBox do
  begin
    ItemPos := ItemAtPos(point(x,y), true);
    if (ItemPos < 0) or (ItemPos >= Items.Count) then
      Exit;
    if Selected[ItemPos] then
      ItemIndex := ItemPos;

    verschieben := ItemIndex - ItemPos;

    if verschieben <> 0 then
    begin
      if verschieben > 0 then
        i := 0
      else
        i := pred(Items.Count);

      while (i >= 0) and (i < Items.Count) do
      begin
        if Selected[i] then
        begin
          if (i-verschieben >= 0) and (i-verschieben < Items.Count) then
          begin
            Items.Move(i, i-verschieben);
            Selected[i]:=false;
            Selected[i-verschieben]:=true;
          end else begin
            break;
          end; // if
        end; // if

        if verschieben > 0 then
          inc(i)
        else
          dec(i);
      end; // while
    end; // if
  end; // with
  Accept := true;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz