Drag and drop StringGrid

papyvore
Messages postés
223
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
16 décembre 2021
- Modifié le 9 sept. 2020 à 17:13
papyvore
Messages postés
223
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
16 décembre 2021
- 10 sept. 2020 à 18:50
Bonjour,
Je fais un drag d' Explorer vers StringGrid tout ce passe bien, mais depuis un téléphone
StringGrid refuse le drag
ci-dessous le code que j'utilise.
procedure TFormBackUp.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(StringGrid1.Handle, True);
  Application.OnMessage := TraiteMessage;
  // c'est la procédure TraiteMessage qui va traiter les messages
end;

procedure TFormBackUp.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

      StringGrid1.RowCount := StringGrid1.RowCount + 1;
      StringGrid1.Cells[0, StringGrid1.RowCount - 1] :=
        ExtractFileDrive(NomDuFichierStr);
      StringGrid1.Cells[1, StringGrid1.RowCount - 1] :=
        ExtractFilePath(NomDuFichierStr);
      StringGrid1.Cells[2, StringGrid1.RowCount - 1] :=
        ExtractFileName(NomDuFichierStr);
      if not FileExists(NomDuFichierStr) then
         StringGrid1.Cells[3, StringGrid1.RowCount - 1] :=
           floattostrf(TailleDossier(NomDuFichierStr,'*.*',faAnyFile) div 1024, ffNumber, 7,0)+' kb'
      else
         StringGrid1.Cells[3, i] :=
                      floattostrf(TailleFichierr(NomDuFichierStr) div 1024, ffNumber, 7,0)+' kb';
    end;
  end;

Jusque là je n'ai pas trouvé ni sur le site ni avec google
connaissez vous une solution ???
merci.

5 réponses

pprem
Messages postés
30
Date d'inscription
samedi 5 septembre 2020
Statut
Membre
Dernière intervention
22 octobre 2020
1
5 sept. 2020 à 12:37
Bonjour
Quel type de téléphone ?
0
papyvore
Messages postés
223
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
16 décembre 2021
15
9 sept. 2020 à 12:52
Android
0
pprem
Messages postés
30
Date d'inscription
samedi 5 septembre 2020
Statut
Membre
Dernière intervention
22 octobre 2020
1
10 sept. 2020 à 09:30
Suis étonné que ce code se compile avec FMX. La gestion des messages est différentes, les codes de messages de Windows n'y sont pas gérés.

Par défaut les plateformes iOS / Android ne gèrent pas le Drag&Drop dans FMX. Il faut redévelopper une partie pour le gérer en interne au programme.

Paul Toth avait écrit un article là-dessus :
http://lookinside.free.fr/delphi.php?FMXBasedDragDrop

Si c'est pour associer une extension de fichier à une application, il faut en revanche utiliser les API de l'OS. Sur Android ça consiste à ajouter des déclarations dans le manifest et gérer un événement au niveau de l'application.
0
papyvore
Messages postés
223
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
16 décembre 2021
15
10 sept. 2020 à 13:03
je me suis mal exprimé.
c'est pas du fmx.
c'est simplement un drag vcl du téléphone (branché usb)vers ma stringgrid.
0
pprem
Messages postés
30
Date d'inscription
samedi 5 septembre 2020
Statut
Membre
Dernière intervention
22 octobre 2020
1 > papyvore
Messages postés
223
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
16 décembre 2021

10 sept. 2020 à 15:54
ok, je comprends mieux

il est possible que le système de fichiers ne gère pas le partage du disque d'appareils extérieurs comme il le fait pour des fichiers locaux

est-ce que le message est déclenché ou même pas ?
0
papyvore
Messages postés
223
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
16 décembre 2021
15
10 sept. 2020 à 17:47
non aucun message , simplement l'icone du drag refusé
0
pprem
Messages postés
30
Date d'inscription
samedi 5 septembre 2020
Statut
Membre
Dernière intervention
22 octobre 2020
1
10 sept. 2020 à 18:29
Donc ça doit être ça : Windows ne déclenche pas le vrai drag&drop et ne le gère que pour lui.
Est-ce que le drag&drop d'une photo depuis le smartphone peut s'ouvrir dans un logiciel de dessin qui accepterait cette opération depuis l'explorateur de fichiers ? Si c'est KO, faut partir du principe que ce n'est pas géré par le driver du téléphone, si c'est OK, il faudrait espionner le système pour voir quels messages transitent.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papyvore
Messages postés
223
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
16 décembre 2021
15
10 sept. 2020 à 18:50
je viens d'essayer avec XnView qui accepte les drag depuis windows ça marche.
mais depuis le telephone j'ai exactement la même erreur.
bon merci je vais voir comment intercepter le message et la, c'est pas gagné ,merci de t'être intéressé à cette question.
0