Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : ListBox Drag&Drop Multiple [ Divers / Aide et documentation ] (morinxav2)

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
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é 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 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 drag and drop [ par l0sth34d ] Bonjour!J'aimerais savoir comment on fait pour pouvoir utiliser le drag and drop entre 2 composants TListview différents qui on plusieurs colonnes (en drag and drop d'une image d'une page web lancée depuis un webbroswer [ par chrisledeveloppeur ] Bonjour, comme le titre l'indique, je recherche une solution possible quand à un drag and drop d'une image contenue dans une page web  lancée dans un DBGrid et Drag&Drop [ par katharos ] Bonjour à tous, J'ai une petite question sur laquelle je n'arrive pas à trouver de réponse. Sur une Form j'ai 2 DBGrid et 1 StringGrid. Je peut déplac déplacer un dossier ou fichier par drag and drop [ par mighty_warrior ] Bonjour,Je dispose de 2 shellListView et je voudrai arriver a déplacer un fichier en faisant un drag and drop du 1er shellListView au second shellList


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.