IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Drag and Drop vers plusieurs Edit


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 118
    Points : 57
    Points
    57
    Par défaut Drag and Drop vers plusieurs Edit
    Hello,

    J'ai fait un ptit test de drag 'n drop pour insérer le nom d'un fichier depuis l'explorateur vers un Edit, et y'a un truc qu'il me manque : comment savoir sur quel Edit on lache le fichier.

    J'ai 2 Edit, un pour le fichier source, un autre pour le fichier destination. Le deuxième étant enabled que lorsqu'on a un fichier source.

    Pour le drag 'n drop du fichier source, pas de problème, mais pour le deuxième, comment savoir qu'on lache le fichier dans le Edit2 ?

    voilà ce que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     DragAcceptFiles(Edit1.handle,true);
     DragAcceptFiles(Edit2.handle,true);
     Application.OnMessage := TraiteMessage;
    end;
     
    procedure TForm1.TraiteMessage(var Msg: TMsg; var Handled: Boolean);
    var
      NombreDeFichiers,size,i:integer;
      NomDuFichierStr:string;
      NomDuFichier:array[0..255] of char;
     
    begin
      if Msg.message=WM_DROPFILES then
      begin
        NombreDeFichiers:= DragQueryFile( Msg.wParam, $FFFFFFFF, NomDuFichier, sizeof(NomDuFichier));// récupération du nombre de fichiers
        for i:=0 to NombreDeFichiers-1 do
        begin
          size:= DragQueryFile( Msg.wParam, i, NomDuFichier, sizeof(NomDuFichier) );// récupération du nom du fichier
          NomDuFichierStr:=NomDuFichier; // tansformation du tableau de char en STRING
          If Edit1.Text='Fichier source...'
           then Edit1.Text:=NomDuFichierStr
           else Edit2.Text:=NomDuFichierStr;
        end;
      end;
    end;
    J'ai fait un test pour voir si le Edit1 était encore à son état d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Edit1.Text='Fichier source...'
           then Edit1.Text:=NomDuFichierStr
           else Edit2.Text:=NomDuFichierStr;
    si non, c'est qu'on a déjà un fichier source, donc on place le fichier dans le Edit2.

    Seulement si on veut changer de fichier source, on ne sait plus, on est obligé de réinitialiser les Edit.
    De plus si, après avoir poser le fichier source, on repose un fichier dans le Edit1, le nom s'affichera dans le Edit2 car le Edit1 est déjà rempli!!

    est-ce clair?
    merci,

    greg

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Tu peux obtenir le compo sous la souris avec ControlAtPos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Var
      control: TControl;
    Begin
      control := ControlAtPos(ScreenToClient(Mouse.CursorPos), False, True);
      If (Assigned(control)) Then Label1.Caption := control.Name
      Else  Label1.Caption := '';
    End;
    Dans cet exemple, j'affiche le nom du controle pointé, mais on peut très bien l'utiliser directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If (control Is TEdit) Then TEdit(control).Text := control.Name;
    De retour parmis vous après 10 ans!!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 118
    Points : 57
    Points
    57
    Par défaut
    ok, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD14] Drag and drop vers Explorateur windows
    Par whypyd dans le forum WinDev
    Réponses: 1
    Dernier message: 15/03/2012, 08h13
  2. Drag and Drop vers un éditeur
    Par legentil dans le forum Eclipse Platform
    Réponses: 9
    Dernier message: 30/07/2010, 14h19
  3. drag and drop avec plusieurs éléments
    Par yohan0262 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/09/2008, 12h57
  4. Réponses: 10
    Dernier message: 27/05/2008, 15h09
  5. Drag and drop vers Explorateur
    Par JustMe dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 04/12/2007, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo