begin process at 2013 05 20 14:29:49
  Trouver un code source :
 
dans
 

691 commentaire(s) de Delphiprog sur des sources sur tout CodeS-SourceS

Déposé sur Déplacer les items d'une tlistview par drag and drop

Très bon code, clair et limpide.

A la place d'un TList dans ListView1DragDrop, j'ai utilisé un TObjectList, ce qui permet d'alléger le code au moment de libérer les objets de la liste de manière automatique :
  List := TObjectList.Create(true);
  try
    //le reste identique
  finally
    //Libération automatique des objets possédés
    List.Free;
  end;

En indiquant true lors de l'appel du constructeur de TObjectList, on le rend responsable de la libération des objets qu'il détient.
NB : ne pas oublier d'ajouter Contnrs dans la liste des uses pour pouvoir utiliser TObjectlist.
Posté le : 23/02/2008 12:07:40

Déposé sur Déplacer les items d'une tlistview par drag and drop

ATTENTION : le fichier source du projet possède encore le nom PROJECT1 et, de ce fait, il n'est pas possible de compiler ce code source sans avoir modifié en :
program ListViewDragAndDrop;
Posté le : 23/02/2008 11:55:20

Déposé sur Utiliser les messages windows pour gerer le nombre d'instances

Nous aussi on accepte les commentaires...mais dans le code :o)
Un peu d'explications ne nuit jamais.
Posté le : 03/02/2008 00:01:30

Déposé sur Téléchargeur vidéo daily motion ou you tube

Travail un peu brouillon. Ce n'est pas parce qu'on met un niveau débutant que l'on peut tout se permettre.
Aux remarques de Nethacker, j'ajoute :
- RE-NO-MMER les composants utilisés dans le code. Cela permet de lire le source et de comprendre le fonctionnement sans avoir à charger le projet dans Delphi pour comprendre le rôle présumé de tel ou tel composant.

Essaie aussi de mieux expliquer à quoi sert ton code, ce qui le distingue des autres, quel est le point essentiel que tu veux mettre en avant, etc.

Toujours les mêmes remarques. C'est à croire qu'on prêche dans le désert ici...
Posté le : 02/02/2008 23:58:26

Déposé sur Shutdown / réveil style dos

Avant de poster un code quel qu'il soit, il serait bon de voir si on ne peut pas faire mieux. En l'occurrence, transformer des temps en chaine puis de chaine en entier, il y a surement plus efficace comme méthode pour incrémenter une structure date/heure.
Beaucoup de lourdeurs et de répétitions dans le code finissent de le rendre indigeste.
On zappe !
Posté le : 02/02/2008 23:48:14

Déposé sur Service: pause/arrêt/fenêtres/tray icon avec popmenu

Les codes sur les services avec Delphi ne courent pas les rues. C'est avec grand intérêt que je vais me pencher sur celui-ci.
Merci Mauricio.
Posté le : 16/01/2008 21:08:28

Déposé sur Date en arabe

Tout comme Sky7rip, je pencherais pour affecter result directement au lieu de passer par une variable intermédiaire. Mais c'est sans importance sur les performances ici.
En revanche, là où je ne suis pas d'accord avec lui, c'est sur le fait de fusionner les trois fonctions en une seule. En effet, on peut avoir besoin d'une, de deux ou des trois fonctions à un moment ou à un autre au cours de l'exécution.
Le code est clair et bien traduit (:)).

Suggestion : pour que le code soit encore plus facilement réutilisable, je pense que serait une bonne idée de pouvoir transmettre une date quelconque à la fonction DateEnArabe au lieu de toujours renvoyer la date courante.
Posté le : 16/01/2008 21:03:22

Déposé sur Mails avec indy10 : contenttype/contentid/parentpart

Bonsoir les amis,

Encore un bon code [Made by Mauricio].

Mais, qu'est-ce que signifie donc : "Não usamos este tipo porque mandamos sempre o mail em formato texto ..." ?

J'avoue que j'ai la flemme de (faire) traduire cette phrase :(

Posté le : 10/01/2008 22:05:51

Déposé sur Deplacer les items d'une listbox vers une autre par drag and ...

Code sympa et toujours bien expliqué, c'est du Made in Japee !

Comme il me semblait bien avoir déjà publié un code de même nature (http://www.delphifr.com/codes/DRAG-DROP-ENTRE-CONTROLES-MEME-NATURE_12296.aspx) en janvier 2003, je propose les quelques modifications suivantes :

1/ Eviter de comparer des chaines telles que le nom des composants mais plutôt leur référence. Le code produit est bien plus rapide :
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Source is TListBox) and
  (cbAutoDD.Checked or (Source <> Sender));
end;

2/ Pour la gestion des objets liés aux chaines visibles dans le contrôle, l'emploi de AddObject et de InsertObject s'impose :
{Gestionnaire partagé, noter le pluriel}
procedure TForm1.ListBoxesDragDrop(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
      { récupération des items sélectionnés dans l'ordre croissant }
      for i := 0 to Items.Count - 1 do
        if Selected[i] then
          List.AddObject(Items[i], Items.Objects[i]);
      { suppression des items sélectionnés }
      DeleteSelected; {<<< allège sérieusement le code !}
    end;
    CursorPos := Point(X, Y); { position du curseur }
    with TListBox(Sender) do { ListBox destinataire }
    begin
      { index de l'item désigné par le curseur }
      Index := ItemAtPos(CursorPos, True);
      for i := List.Count - 1 downto 0 do
        if Index > -1 then { ListBox non vide, permet l'insertion }
          Items.InsertObject(Index, List[i], List.Objects[i])
        else { ListBox vide, insertion impossible }
          Items.AddObject(List[List.Count - 1 - i], List.Objects[List.Count - 1 - i]);
    end;
  finally
    List.Free;
  end;
end;

Pour tester et vérifier, j'ai créé une classe basique :
  //Déclaration d'une classe pour tester
  TIntObject = class
  private
    FInt: integer;
  public
    constructor Create(AInt: integer);
    property Int: integer read FInt;
  end;
{ TIntObject }

constructor TIntObject.Create(AInt: integer);
begin
  inherited Create;
  FInt := AInt;
end;

et ajouté un label sur la fiche qui doit indiquer la valeur stockée dans la ligne sur laquelle on a clické :
procedure TForm1.ListBoxesClick(Sender: TObject);
var
  index: integer;
begin
  //Gestionnaire partagé par les TListBox
  index := TListBox(Sender).ItemIndex;
  if (index <> -1) and (TListBox(Sender).Items.Objects[index] <> nil) then
    ValueSelected.Caption :=
      IntToStr(TIntObject(TListBox(Sender).Items.Objects[index]).Int)
  else
    ValueSelected.Caption := 'Nul';
end;

Bien entendu, il faudra aménager la procédure InitializeMemo :
Mem1.AddObject(Format('ListBox1.Items[%d]', [i]), TIntObject.Create(i));
    Mem2.AddObject(Format('ListBox2.Items[%d]', [i]), TIntObject.Create(i));

Joyeuses Pâques. Ben quoi ? J'ai raté le joyeux Noel, alors je me mets en avance au cas où...;o)
Posté le : 08/01/2008 23:23:33

Déposé sur Dessine-moi une etoile

cé tré zoli !
Ben sinon, même remarques que les autres (note bien le "s" pour distinguer le pluriel du singulier, lol).
Posté le : 28/12/2007 18:59:51



Nos sponsors


Sondage...

CalendriCode

Photothèque

A découvrir



 
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,201 sec (3)

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