Delphiphi
Messages postés12Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention25 novembre 2008 25 sept. 2008 à 11:39
J'ai m... pendant 2-3 heures avant de tomber sur ton code.
Bravo ! Excellent ! C'est exactement ce dont j'avais besoin ;-)
Juste une petite chose : serait-il possible une fois qu'un item a été déplacé de ListBox1 vers ListBox2 de la laisser visible dans la ListBox1 mais en grisé pour montrer qu'on ne peut plus d'envoyer vers la ListBox2
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 14 janv. 2008 à 08:29
amiga68 > lol !
J'avais même pas fait gaffe.
Comme quoi, quand on est pris par la programmation, on ne pense plus qu'à ça... ^^
amiga68
Messages postés54Date d'inscriptiondimanche 23 février 2003StatutMembreDernière intervention21 décembre 2009 14 janv. 2008 à 06:20
:) Japee
Merci pour le code !!! Me servira çui-là !
Ps Evite de mettre des phrases telles que "Ça marche très bien avec des objets, mais également si l'on ne manipule que des strings.", si mon épouse passe j'aurai l'aire con à lui expliquer que c'est de la programmation !
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 9 janv. 2008 à 00:16
Hello Delphiprog,
J'avais pourtant lancé une recherche pour être sûr de ne pas poster en double... et je n'avais pas vu ton code.
Je vais étudier tout ça tranquillement, car là (Bruni^^) j'étais passé à autre chose et il faut que je me replonge dans le sujet.
Je note au passage le "DeleteSelected". Diantre, je veux que ça allège le code, je ne sais pas comment je suis passé à côté...
Joyeuses Pâques à toi aussi ^^
Ouais, et un 31 décembre siouplait !
Juste un truc, pourquoi TObject et pas TCustomListBox ??
Tiens, j'en profite pour rebondir là-dessus: "ça permet de créer des librairies perso bien plus performantes que celles fournies par Borland (je déconne)"
=> ça m'est arrivé de créer des procédures plus rapides que les APIs de Windows (avec le TOptimisedBitmap notamment).
Et, si tu veux, on se fait un VCL perso avec que des composants utiles et pratiques (pcq ya des trucs dont je ne me sers jamais) qui serait de plus thread-safe, performante et jolie. Ben quoi, on peut rêver, non ?
Joyeuses fêtes à toi aussi et à tous ceux qui passeront par ici.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 31 déc. 2007 à 18:21
Tiens, Florenth, c'est rien que pour toi :
procedure ListBoxToListBoxDragDrop(const Sender, Source: TObject; X, Y: Integer);
var
i: Integer;
CursorPos: TPoint;
Index: Integer;
List: TStringList;
begin
List := TStringList.Create;
try
with TListBox(Source) do
begin
for i := 0 to Items.Count - 1 do
if Selected[i] then
List.AddObject(Items[i], Items.Objects[i]);
for i := Items.Count - 1 downto 0 do
if Selected[i] then
Items.Delete(i);
end;
CursorPos := Point(X, Y);
with TListBox(Sender) do
begin
Index := ItemAtPos(CursorPos, True);
for i := List.Count - 1 downto 0 do
if Index > -1 then
Items.InsertObject(Index, List[i], List.Objects[i])
else
Items.AddObject(List[List.Count - 1 - i], List.Objects[List.Count - 1 - i]);
end;
finally
List.Free;
end;
end;
J'ai passé les ListBox en const bien que ça ne soit pas indispensable.
Ça marche très bien avec des objets, mais également si l'on ne manipule que des strings.
Bonnes fêtes de fin d'année à tous.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 30 déc. 2007 à 22:35
@Florenth
S'il y avait tout dans la VCL, qu'est-ce qu'on s'ennuierait... ^^
Et puis ça permet de créer des librairies perso bien plus performantes que celles fournies par Borland (je déconne).
C'est vrai, j'ai négligé les objets, mais ce n'était pas mon propos au départ. Je vais néanmoins réfléchir à ta suggestion.
Pareil pour une procedure : j'ai voulu rester concret et simple, en pensant plus particulièrement aux débutants (le drag & drop n'a plus de secrets pour les autres).
C'est vrai qu'on pourrait penser la réalisation plus complexe par rapport à l'objectif fixé.
@Caribensila
Ce qui est moderne aujourd'hui sera désuet demain. J'ai décidé que Delphi 4 Entreprise était la version la plus aboutie jamais sortie par Borland/CodeGear... à moins que quelqu'un ne m'offre une version plus récente, auquel cas j'assouplirai peut-être mon point de vue. ^^
Sérieusement, je vérifie toujours la compatibilité avec les versions ultérieures, il n'y a jamais de problème, ce n'est hélas pas toujours le cas dans l'autre sens.
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 30 déc. 2007 à 21:57
« Il faudrait pouvoir les soumettre à CodeGear [] (remarque, les possesseurs de D4 ne seraient pas contents) »
Ca en déciderait peut-être au moins un à se moderniser...
Très sympa comme idée.
La réalisation est plus courte que ce que j'aurais pensé. Mais... il manque les objets ! Tu pourrais peut-être nous prévoir un petit truc pour eux, non ?
Et sinon, pourquoi ne pas en faire une procédure du genre:
procedure MoveListboxItems(Source, Destination: TListBox);
Après ça, ce sera parfait.
C'est quand même des trucs qui manquent à la VCL je trouve, il faudrait pouvoir les soumettre à CodeGear et qu'il soient intégrés dans des mises à jours (remarque, les possesseurs de D4 ne seraient pas contents !)
25 sept. 2008 à 11:39
Bravo ! Excellent ! C'est exactement ce dont j'avais besoin ;-)
Juste une petite chose : serait-il possible une fois qu'un item a été déplacé de ListBox1 vers ListBox2 de la laisser visible dans la ListBox1 mais en grisé pour montrer qu'on ne peut plus d'envoyer vers la ListBox2
14 janv. 2008 à 08:29
J'avais même pas fait gaffe.
Comme quoi, quand on est pris par la programmation, on ne pense plus qu'à ça... ^^
14 janv. 2008 à 06:20
Merci pour le code !!! Me servira çui-là !
Ps Evite de mettre des phrases telles que "Ça marche très bien avec des objets, mais également si l'on ne manipule que des strings.", si mon épouse passe j'aurai l'aire con à lui expliquer que c'est de la programmation !
9 janv. 2008 à 00:16
J'avais pourtant lancé une recherche pour être sûr de ne pas poster en double... et je n'avais pas vu ton code.
Je vais étudier tout ça tranquillement, car là (Bruni^^) j'étais passé à autre chose et il faut que je me replonge dans le sujet.
Je note au passage le "DeleteSelected". Diantre, je veux que ça allège le code, je ne sais pas comment je suis passé à côté...
Joyeuses Pâques à toi aussi ^^
A +
31 déc. 2007 à 20:39
Juste un truc, pourquoi TObject et pas TCustomListBox ??
Tiens, j'en profite pour rebondir là-dessus: "ça permet de créer des librairies perso bien plus performantes que celles fournies par Borland (je déconne)"
=> ça m'est arrivé de créer des procédures plus rapides que les APIs de Windows (avec le TOptimisedBitmap notamment).
Et, si tu veux, on se fait un VCL perso avec que des composants utiles et pratiques (pcq ya des trucs dont je ne me sers jamais) qui serait de plus thread-safe, performante et jolie. Ben quoi, on peut rêver, non ?
Joyeuses fêtes à toi aussi et à tous ceux qui passeront par ici.
31 déc. 2007 à 18:21
procedure ListBoxToListBoxDragDrop(const Sender, Source: TObject; X, Y: Integer);
var
i: Integer;
CursorPos: TPoint;
Index: Integer;
List: TStringList;
begin
List := TStringList.Create;
try
with TListBox(Source) do
begin
for i := 0 to Items.Count - 1 do
if Selected[i] then
List.AddObject(Items[i], Items.Objects[i]);
for i := Items.Count - 1 downto 0 do
if Selected[i] then
Items.Delete(i);
end;
CursorPos := Point(X, Y);
with TListBox(Sender) do
begin
Index := ItemAtPos(CursorPos, True);
for i := List.Count - 1 downto 0 do
if Index > -1 then
Items.InsertObject(Index, List[i], List.Objects[i])
else
Items.AddObject(List[List.Count - 1 - i], List.Objects[List.Count - 1 - i]);
end;
finally
List.Free;
end;
end;
J'ai passé les ListBox en const bien que ça ne soit pas indispensable.
Ça marche très bien avec des objets, mais également si l'on ne manipule que des strings.
Bonnes fêtes de fin d'année à tous.
30 déc. 2007 à 22:35
S'il y avait tout dans la VCL, qu'est-ce qu'on s'ennuierait... ^^
Et puis ça permet de créer des librairies perso bien plus performantes que celles fournies par Borland (je déconne).
C'est vrai, j'ai négligé les objets, mais ce n'était pas mon propos au départ. Je vais néanmoins réfléchir à ta suggestion.
Pareil pour une procedure : j'ai voulu rester concret et simple, en pensant plus particulièrement aux débutants (le drag & drop n'a plus de secrets pour les autres).
C'est vrai qu'on pourrait penser la réalisation plus complexe par rapport à l'objectif fixé.
@Caribensila
Ce qui est moderne aujourd'hui sera désuet demain. J'ai décidé que Delphi 4 Entreprise était la version la plus aboutie jamais sortie par Borland/CodeGear... à moins que quelqu'un ne m'offre une version plus récente, auquel cas j'assouplirai peut-être mon point de vue. ^^
Sérieusement, je vérifie toujours la compatibilité avec les versions ultérieures, il n'y a jamais de problème, ce n'est hélas pas toujours le cas dans l'autre sens.
30 déc. 2007 à 21:57
Ca en déciderait peut-être au moins un à se moderniser...
30 déc. 2007 à 20:45
La réalisation est plus courte que ce que j'aurais pensé. Mais... il manque les objets ! Tu pourrais peut-être nous prévoir un petit truc pour eux, non ?
Et sinon, pourquoi ne pas en faire une procédure du genre:
procedure MoveListboxItems(Source, Destination: TListBox);
Après ça, ce sera parfait.
C'est quand même des trucs qui manquent à la VCL je trouve, il faudrait pouvoir les soumettre à CodeGear et qu'il soient intégrés dans des mises à jours (remarque, les possesseurs de D4 ne seraient pas contents !)