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
Antwort Antwort
Seite 1 von 2  1 2      
herRrscher

Registriert seit: 1. Jun 2008
11 Beiträge
 
Delphi 2005 Personal
 
#1

Drag&Drop in Listbox

  Alt 16. Jun 2008, 20:57
Hallo
Ich will in einer Listbox die Einträge per Drag&Drop ordnen können, aber wie mache ich das?
Ich bin leider noch ziemlicher Anfänger.
Gruß, herRrscher

//p.s.:die listbox heisst 'listbox_bilder'
I've hacked 127.0.0.1
  Mit Zitat antworten Zitat
oki

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

Re: Drag&Drop in Listbox

  Alt 16. Jun 2008, 22:22
Hi,

nichts für ungut, aber nutz mal kurz die Suche. 17 Seiten mit Beiträgen.

Deine Stichworte sind Drag&Drop, BeginDrag, OnDragOver, OnEndDrag ....

Wenn was unklar ist, sag Bescheid.

Gruß oki
42
  Mit Zitat antworten Zitat
herRrscher

Registriert seit: 1. Jun 2008
11 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Drag&Drop in Listbox

  Alt 17. Jun 2008, 06:37
Die Suche hab ich schon benutzt aber auf den ersten paar seiten nix gefunden was ich kapiert hätte
I've hacked 127.0.0.1
  Mit Zitat antworten Zitat
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, 07: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
herRrscher

Registriert seit: 1. Jun 2008
11 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Drag&Drop in Listbox

  Alt 21. Jun 2008, 15:51
Hab ich grad ausprobiert aber das funst nicht.
I've hacked 127.0.0.1
  Mit Zitat antworten Zitat
extrem

Registriert seit: 27. Mai 2008
72 Beiträge
 
#6

Re: Drag&Drop in Listbox

  Alt 21. Jun 2008, 22:24
Hi


Was funst nicht?

Hast du auch das onDragOver Ereignis angepasst?
Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TListbox;
end;
Falls du nicht mit Listbox1.BeginDrag() arbeitest, dann musst du noch DragMode auf mAutomatic stellen.
Dann sollte der Code eigentlich funktionieren, habe es ausprobiert.
  Mit Zitat antworten Zitat
herRrscher

Registriert seit: 1. Jun 2008
11 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Drag&Drop in Listbox

  Alt 22. Jun 2008, 11:31
Macht immernoch nischt.
Ich habe vier Einträge in der ListBox, halte die LMT auf einem gedrückt um ihn zu ziehen und ziehe aber der Eintrag kommt nicht mit.
I've hacked 127.0.0.1
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Drag&Drop in Listbox

  Alt 22. Jun 2008, 11:35
Hallo,

hast du das gesehen und versucht: ListBox-Einträge per Drag & Drop verschieben

Grüße
  Mit Zitat antworten Zitat
herRrscher

Registriert seit: 1. Jun 2008
11 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Drag&Drop in Listbox

  Alt 22. Jun 2008, 12:08
muss ich da dass TListbox durch den namen meiner listbox erstetzen
I've hacked 127.0.0.1
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Drag&Drop in Listbox

  Alt 22. Jun 2008, 12:21
Nein, du kannst den Code, wenn ich das richtig sehe, 1:1 ins OnDragOver-Ereignis deiner ListBox einfügen.

Es ist natürlich dennoch sinnvoll, sich den Code anzusehen, damit du grob weißt, was passiert. Dadurch lernst du viel und kannst den Source evtl. sogar selbst auf zukünftige Problemstellungen anwenden oder entsprechend anpassen.

Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:48 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