begin process at 2010 02 10 06:02:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

ListBox Drag&Drop Multiple


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ListBox Drag&Drop Multiple

samedi 29 décembre 2007 à 00:39:59 | ListBox Drag&Drop Multiple

morinxav2

Bonsoir,
joyeuses fêtes a tout le monde.

Comment peut on faire un un drag and drop d'une selection multiple dans une listbox?

Merci d'avance

morinxav

samedi 29 décembre 2007 à 03:32:05 | Re : ListBox Drag&Drop Multiple

Guillemouze

dans l'evenement OnDragGrop, tu as la source, tu peux la caster en  listbox et attaquer la propriete de selection
samedi 29 décembre 2007 à 17:40:43 | Re : ListBox Drag&Drop Multiple

Caribensila

Membre Club
Réponse acceptée !

Joyeuses fêtes à toutes et tous, too!

Voilà un bout de code pour te montrer la façon de procéder.
Je n'ai pas le temps de l'optimiser ni de commenter. Désolé.

var   ListeItems: TStrings;

procedure TForm1.FormCreate(Sender: TObject);
  begin
  ListBox1.MultiSelect       := true;
  ListBox1.ExtendedSelect := true;
  ListeItems := TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
  begin
  ListeItems.Free;
end;

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
  var   i : Integer;
  begin
  (Sender as TControl).begindrag(false,3);
  ListeItems.Clear;
  for i := 0 to ListBox1.Count - 1 do
    if ListBox1.Selected[i] then ListeItems.Add(IntToStr(i));
end;

procedure TForm1.ListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
  begin
  Accept := true;
end;

procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
  var   i : Integer;
  begin
  for i := 0 to ListeItems.Count - 1 do
      ListBox2.Items.Add(ListBox1.Items[StrToInt(ListeItems[i])]);
  for i := ListeItems.Count - 1 downto 0 do
      ListBox1.Items.Delete(StrToInt(ListeItems[i]));
end;


On peut faire un Drag'n Drop des éléments sélectionnés de ListBox1 vers ListBox2.
A toi d'arranger ça à ta sauce   ;)

@+

samedi 29 décembre 2007 à 23:54:29 | Re : ListBox Drag&Drop Multiple

japee

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut à tous,

Il n'est pas obligatoire de passer par un TStrings.
Dans l'exemple qui suit, on peut indifféremment glisser-déposer depuis ListBox1 vers ListBox2 et vice-versa.
Pour celà, ListBox2 est reliée à ListBox1 par l'inspecteur d'objets pour les 2 events qui suivent :

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TListBox;
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  i: Integer;
begin
  // ordre inversé
  {
  for i := TListBox(Source).Items.Count - 1 downto 0 do
  begin
    if TListBox(Source).Selected[i] then
    begin
      TListBox(Sender).Items.Add(TListBox(Source).Items[i]);
      TListBox(Source).Items.Delete(i);
    end;
  end;
  }
  // ou si on veut respecter l'ordre des items :
  for i := 0 to TListBox(Source).Items.Count - 1 do
    if TListBox(Source).Selected[i] then
      TListBox(Sender).Items.Add(TListBox(Source).Items[i]);
  for i := TListBox(Source).Items.Count - 1 downto 0 do
    if TListBox(Source).Selected[i] then
      TListBox(Source).Items.Delete(i);
end;


Bonnes fêtes de fin d'année.
dimanche 30 décembre 2007 à 00:02:35 | Re : ListBox Drag&Drop Multiple

morinxav2

Bonsoir,
merci beaucoup, la deuxieme solution etant bien sûr beaucoup plus elegante.
mais les deux fonctionnent.

Bonnes fêtes de fin d'année et encore merci.

petit a petit je progresse. Mais j'ai vraiement beaucoup de subtilités a comprendre encore!!!

A+

morinxav

dimanche 30 décembre 2007 à 00:26:36 | Re : ListBox Drag&Drop Multiple

Caribensila

Membre Club
« merci beaucoup, la deuxieme solution etant bien sûr beaucoup plus elegante. »

'faut pas exagérer!
L'élégance a aussi son revers de médaille... 
dimanche 30 décembre 2007 à 00:49:45 | Re : ListBox Drag&Drop Multiple

japee

Membre Club Administrateur CodeS-SourceS
Bah, les 2 approches sont légèrement différentes, c'est tout.
Pour l'élégance, faudrait demander à Mme de Fontenay...
dimanche 30 décembre 2007 à 01:05:34 | Re : ListBox Drag&Drop Multiple

morinxav2

Bon ok je suis daccord,

Dernier petit detail, avec vos 2 solutions je deplace ma selection certe mais a la fin de la listbox et non ou je veux...

je croyais pouvoir adapter l'une ou l'autre des solutions mais a priori je suis vraiement trop mauvais!

Auriez vous une solution?

Merci d'avance

A+
morinxav

dimanche 30 décembre 2007 à 01:10:48 | Re : ListBox Drag&Drop Multiple

Caribensila

Membre Club
Demande au dandy !
dimanche 30 décembre 2007 à 01:23:29 | Re : ListBox Drag&Drop Multiple

japee

Membre Club Administrateur CodeS-SourceS
Ok...

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  i: Integer;
  CursorPos: TPoint;
  Index: Integer;
begin
  CursorPos := Point(X, Y);   // position du curseur
  Index := ListBox1.ItemAtPos(CursorPos, True);
  for i := TListBox(Source).Items.Count - 1 downto 0 do
  begin
    if TListBox(Source).Selected[i] then
    begin
      TListBox(Sender).Items.Insert(Index, TListBox(Source).Items[i]);
      TListBox(Source).Items.Delete(i);
    end;
  end;
end;


En rose, je trouve que c'est plus raffiné

1 2

Cette discussion est classée dans : listbox, drag, drop, multiple


Répondre à ce message

Sujets en rapport avec ce message

listbox (playlist) drag and drop [ par morinxav2 ] Bonsoir,Toutes les solutions que j'ai trouvé de drag and drop dans une listbox fonctionnent très bien pour le string mais pas pour le N° d'index, ce q Drag and drop/Listbox [ par Dejoul ] Bonjour,Je souhaite faire un drag and drop à partir du dossier ma musique. Je fais glisser ma musique vers une listbox de mon lecteur mp3.Comment dois drag drop [ par nraloux ] salut, je voudrais bien de l'aide sur comment effectuer un drag and drop sur une stringrid venant d'une listBox. le veritable problème n'est pas le dr Drag'n'Drop de mail Outlook dans Delphi [ par Mojach67 ] Bonjour à tous,Je suis a la recherche d'une solution permettant de faire du drag'n'drop de mail de Outlook vers une application Delphi, que l'ont pour Comment faire un drag and drop sur une application quand elle est dans le systray? [ par mighty_warrior ] Bonjours,Voilà le probléme: Comment faire un drag and drop sur une application quand elle est dans le systray? Si quelqu'un à une idée.merci. Drag and drop dans TGRID annule ma selection [ par toonytoun ] Bonjour,j'utilise plusieurs TGRid dans mon application, et j'arrive a faire un drag and drop entre ces TGrid car j'ai mis la propriété DragMode a dmAu drag and drop entre treeview [ par gilore ] bonjour,dans mon appli, j'utilise deux treeview ... le premier treeview est une base de donnée, le second est l'extrait de la base de donnée que je vo Drag'n Drop et disparition de compo derrière un autre. [ par Caribensila ] Bonjour à tous,     Voilà mon blème:  J'ai une fiche avec qq TImages supportant le glisser-déplacer. Mais je voudrais que, quelque soit le TImage dépl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,841 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales