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 FMX Delphi Discussion :

Event Onmousedown sur grid


Sujet :

Composants FMX Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2024
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2024
    Messages : 42
    Par défaut Event Onmousedown sur grid
    Bonjour,
    Je cherche à permettre à l'utilisateur de déplacer les colonnes d'une stringgrid.
    J'y arrive en mettant un évènement OnMouseDown et OnMouseUp sur la Stringrid.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Stringgrid1.OnMouseDown := Stringgrid1MouseDown;
      Stringgrid1.OnMouseUp := Stringgrid1Mouseup;
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
     
    begin
      memo1.lines.add('GridDown' + (floattostr(Y)));
    end;
     
    procedure TForm1.StringGrid1Mouseup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
     
    begin
      memo1.lines.add('Gridup' + (floattostr(Y)));
    end;
    Ensuite, le traitement me permet les déplacements.
    Mais j'ai besoin de rajouter un Header et dans ce cas, les OnMouseDown et OnMouseUp ne sont pas déclenchés.
    C'est la même chose si je mets les éléments OnMouseDown et OnMouseUp sur les Column au lieu de Stringgrid
    C'est pour une appli sous android, mais le phénomène est identique sur Windows.
    Auriez-vous une solution

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 800
    Billets dans le blog
    65
    Par défaut
    Bon, déjà, je n'ai jamais mis de grille dans une application Android, je suis plus adepte de la TListView pour cette cible donc je ne sais pas si un glisser de colonne peut se faire.
    Mais, sous windows, bien vérifier que ColumnMove est dans les options permet de déplacer les dites colonnes , en gardant la souris appuyée sur le Header et en glissant la dite colonne. Et cela ne nécessite aucun code.

    Mais j'ai besoin de rajouter un Header et dans ce cas, les OnMouseDown et OnMouseUp ne sont pas déclenchés.
    ce qui voudrait dire qu'il n'y en avait pas ?
    Sous Android, j'ai un doute sur les évènements OnMouse.
    A mon avis, quelque soit le cas s'il y a header, il faut trouver le Header pour lui affecter les évènements. Je pense que je vais faire un test

    NB. Il y a eu des changement avec la version 12, on accède au header (à lire ce que j'ai pu faire sur les grilles https://www.developpez.net/forums/d2...itre-colonnes/, )

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 800
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Je pense que je vais faire un test
    Voilà en zip ce que je propose. Je n'ai pas pu tester sous Android car impossible de déployer

    Cela fonctionne sous windows, reste quand même à ajouter et montrer la sélection de la colonne peut-être en s'inspirant de ceci https://github.com/Serge-Girard/StringGrid2Clipboard
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2024
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2024
    Messages : 42
    Par défaut
    J'ai essayé ton programme.
    Pour windows c'est OK
    Pour Android, lors de la construction j'ai l'erreur :
    [PAClient Erreur] Erreur : E7688 Impossible d'exécuter '"C:\Program Files\Eclipse Adoptium\jdk-11.0.15.10-hotspot\bin\java.exe" -cp "c:\program files (x86)\embarcadero\studio\22.0\bin\Android\r8-3.3.28.jar" com.android.tools.r8.D8 --release --min-api 23 --output "C:\projectgrid\Android\Debug\ProjectGrid.classes" @"C:\projectgrid\Android\Debug\dex_list.txt"' (erreur 1)

    Mais j'ai regardé ton programme et j'ai incorporé les mêmes éléments que toi.
    Sous Windows, les colonnes se déplacent bien et j'obtiens bien dans le StringGrid1ColumnMoved les informations du déplacement.
    Sous Android, les colonnes ne se déplacent pas et naturellemnt rien dans le StringGrid1ColumnMoved
    Je suis en version 11CE. Peut-être faudrait-il que je passe en 12 CE. Est-ce que ça passe facilement ?

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 800
    Billets dans le blog
    65
    Par défaut
    Je n'utilise pas Eclipse mais, moi aussi, j'ai un problème de déploiement (voir forum EDI) pourtant, l'année dernière, je n'avais aucun problème pour mes tests

    Oui, j'ai fait le programme en D12 (D12.2 Entreprise pour être exact) la version Community correspond à la version D12.1 il me semble.

    Je suis en version 11CE.
    c'est pour cela que j'aime bien que soit indiqué la version dans le post de départ et que "par défaut" j'essaye avec la version la plus proche de la Community (pour avoir la 12.1 je serai obligé de passer par une VM mais j'ai écrasé la version pour mettre la version Beta 12.3)
    Passer de D11 à D12 ne devrait pas poser de difficulté

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 800
    Billets dans le blog
    65
    Par défaut
    La bonne nouvelle, j'ai réussi à reconfigurer mon SDK Android
    Nom : Capture.png
Affichages : 143
Taille : 114,7 Ko
    Avec les boutons, ça fonctionne sur Android

    avec les mouvements ... mon code doit certainement avoir encore quelques soucis (c'est pour cela que je ne le fourni pas)
    Oui, il y a des améliorations :
    J'ai ajouté une colonne supplémentaire
    j'ai ajouté de la couleur pour la colonne sélectionnée il faut que je colorie aussi le Header tant qu'à faire
    je "mémorise" la colonne sélectionnée (donc c'est plus facile à déplacer en plusieurs fois

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2024
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2024
    Messages : 42
    Par défaut
    Dans mon programme, avec les onmousedown et onmouseup sur stringgrid, j'ai bien les évènements et je décale les colonnes.
    J'ai fait une version avec un traitement sur le onStringGrid1DrawColumnCell, et j'aarrive bien à déplaacer mes colonnes,
    C'est parce que ma grille devient trop grande pour que la row soit toujours vu quand on est sur la ligne du bas que j'essaie d'utiliser les header (J'ai également besoin de saisir des nombres dans les cellules)
    Merci pour tes essais

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2024
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2024
    Messages : 42
    Par défaut
    Je voulais dire que je ne vois plus la row 0

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 800
    Billets dans le blog
    65
    Par défaut
    Voilà mes derniers essais

    Nom : Capture.png
Affichages : 141
Taille : 126,5 Ko

    Tout fonctionne au doigt et à l'oeil si j'ose dire, sauf le déplacement au doigt de la colonne 1 vers la colonne 2

    [Edit] une erreur de ma part, la partie barrée à la ligne 20 j'avais mis -2 au lieu de -1 , j'en ai profité pour utiliser des gestes en chevrons. ZIP NON ENCORE MODIFIE
    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
    28
    29
    30
    31
    32
    procedure TMain.StringGrid1Gesture(Sender: TObject;
      const EventInfo: TGestureEventInfo; var Handled: Boolean);
    var
      c: integer;
    begin
      if Switch1.IsChecked then
      begin
        c := Selectedcol;
        case EventInfo.GestureID of
          sgiChevronLeft:
            begin
              if c > 0 then
               begin
                TColumn(StringGrid1.Columns[c]).index := c - 1;
                selectedcol:=c-1;
               end;
            end;
          sgichevronRight:
            begin
              if c < StringGrid1.ColumnCount - 2 1 then
                begin
                  selectedcol:=c+1;
                  TColumn(StringGrid1.Columns[c]).index := c + 1;
                end;
            end;
        end;
        Stringgrid1.col:=Selectedcol; // garde la sélection de colonne
        Label1.Text:=selectedcol.tostring;
      end
      else
        Handled := false;
    end;
    pour répondre à ton dernier message, pas de onmousedown et onmouseup et comme les headers sont définis, ils restent en place. (nb, l'image montre le base de la liste)
    Si, dans ta grille, il ne s'agit pas de Header mais de la row 0 que tu considères comme tel c'est que tu as dû décocher la case header des options ?

    Todo : gérer le switch de façon à désactiver (sous android) les gestes ; tester ces onmouse events sous android
    Fichiers attachés Fichiers attachés

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2024
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2024
    Messages : 42
    Par défaut
    En reprenant un projet vide, puis en remettant tout tes objets et tout ton code, ça compile et on a bien les évènements headerclick.
    Je voulais pouvoir le déplacer et ne relever le doigt que sur le nouvel emplacement.

    Je vais revoir ma manière de procéder

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 800
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par MarcG34 Voir le message
    Je voulais pouvoir le déplacer et ne relever le doigt que sur le nouvel emplacement.
    j'avoue, je ne sais pas faire. Je n'ai toujours pas tester les évènement souris sous Android non plus

  12. #12
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2024
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2024
    Messages : 42
    Par défaut
    J'ai résolu mon problème avec l'évènement onHeaderclick.
    L'opérateur click sur un header et je lui demande de clicker à nouveau sur le header de la colonne qui précedera la colonne sélectionné.

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

Discussions similaires

  1. [Dojo] event onchange sur les cellule dojox.grid.datagrid
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 14/09/2010, 12h52
  2. Event.observe sur IE
    Par moumoune65 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/07/2007, 12h45
  3. Events "OnBeforeLoad()" sur le body
    Par NikoBe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/10/2006, 17h00
  4. [FLASH 8] Probleme onMouseDown sur occurence
    Par luta dans le forum Flash
    Réponses: 1
    Dernier message: 20/09/2006, 01h21
  5. [Event] ChangeListener sur JSpinner
    Par tomburn dans le forum Général Java
    Réponses: 2
    Dernier message: 01/04/2005, 17h45

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