AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drag&Drop in Listbox

Ein Thema von herRrscher · begonnen am 16. Jun 2008 · letzter Beitrag vom 22. Jun 2008
 
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Drag&Drop in Listbox

  Alt 17. Jun 2008, 06:25
Moin,

die Hilfe bietet dir (zumindest die von Delphi 5) folgendes Beispiel:
Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var
 Accept: Boolean);

begin
  Accept := Source is TLabel;

end;

In der folgenden Ereignisbehandlungsroutine für OnDragDrop wird der Ablegevorgang implementiert.

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);

begin
  if (Sender is TListBox) and (Source is TLabel) then
  begin
    with Sender as TListBox do
    begin
      Font := (Source as TLabel).Font;
      Color := (Source as TLabel).Color;
    end;
  end;

end;
Im Ereignis DragOver kannst du über den Parameter Accept festlegen, ob das gezogene Element an der aktuellen Mausposition akzeptiert werden soll. Für dich sollte dort natürlich auf deine ListBox geprüft werden.

Im Ereignis DragDrop legst du fest, was mit deinem gezogenen Element passieren soll. Für dich heißt das dann, ermitteln, über welchem Eintrag die Maus los gelassen wurde und bewegen des gezogenen Eintrages an diese Position.

Welches Item sich an der aktuellen Position befindet kannst du mit ItematPos ermitteln, mit Items.Move bewegst du deinen Eintrag an die neue Position.

Delphi-Quellcode:
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var TargetIndex : Integer;
begin
  if (Sender is TListBox) and (Source is TListBox) then
  begin
    with Sender as TListBox do
    begin
      TargetIndex := -1;
      TargetIndex := ItemAtPos(Point(X, Y), True);
      if (ItemIndex > -1) and (TargetIndex > -1) then
      Items.Move(ItemIndex, TargetIndex);
    end;
  end;

end;
Ich hab das jetzt nicht getestet. ist vom Grundsatz aber wohl ok.

Gruß oki

[edit] Ach so, mein Beispielcode unterstellt natürlich, das diese Operation in der selben Listbox erfolgt! [/edit]
42
  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 16:03 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