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

Lazarus Pascal Discussion :

[0.9.26.2] StringGrid : bloquer l'étirement horizontal d'une colonne [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Invité
    Invité(e)
    Par défaut [0.9.26.2] StringGrid : bloquer l'étirement horizontal d'une colonne
    Bonjour,

    Dans une StringGrid avec goColSizing à True , je voudrais bloquer l'étirement (horizontal) à la souris d'une seule colonne de manière ergonomique... (les autres restant redimensionnables).

    Ce code placé dans le onHeaderSize n'interdit pas l'étirement de la colonne mais remet le ColWidth[x] à sa valeur d'origine lorsqu'on relache le bouton gauche de la souris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    begin
     GetCursorPos(P);
     P := StringGrid1.ScreenToClient(P);
     StringGrid1.MouseToCell(P.X,P.Y,ACol,ARow);
     if ARow = 0 then
      if Acol = 2 then
       StringGrid1.ColWidths[Acol-1] := 64; //taille d'origine
    end;
    Je préfèrerais intercepter l'évènement qui correspond au déplacement de la souris dans la Row gsFixed (ie Cells[0,y]) de la StringGrid avec bouton [ssLeft] de la souris enfoncé. J'ai essayé dans onMouseMove du StringGrid. C'est mieux (la colonne ne se redimensionne plus) mais un effet très désagréable de scintillement apparaît dans les barres de scroll...

    Existe-t-il une méthode meilleure ?

    Merci de votre aide. Cordialement. Gilles
    Dernière modification par Invité ; 14/08/2009 à 17h01.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est résolu... à défaut de ne pouvoir utiliser les Columns[x].Visible. C'est un bidouillage de plus mais l'ensemble semble efficace et je n'ai plus d'effet de scintillement sur les barres de scroll.

    Cordialement. Gilles

  3. #3
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    Bonjour Gilles,

    1- Quel solution as tu mise en place pour ta colonne ?

    2- Je souhaite reprendre le développement de la LZDbGrid commencé il y a 1 an () et je cherche des volontaires pour jouer avec moi.
    Le svn est crée....

    Cordialement,
    Chris

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'utilise les 2 évènements OnMousemove et OnMouseDown de la StringGrid. L'évènement OnHeaderSize est inutilisable car son traitement s'effectue après le redimensionnement des colonnes.

    Dans le onMouseMove, les fonctions du genre StringGrid1.MouseToCell(X,Y,ACol,ARow); sont inutilisables car quand on passe de la colonne 1 à la 3 (la 2 étant width:=0), jamais aCol-->2 (justement par le fait que Width=0). On passe donc de 1 à 3 directement. J'ai d'abord observé le déclenchement du ACursor= crHSplit lors du passage de la souris sur les traits verticaux séparant les colonnes. Ensuite, si le crHSplit est dans une zone critique (ie un sandwich col visible-colwidth=0-col visible [la zone droite du trait d'épaisseur StringGrid1.GridLineWidth+1], je repositionne la souris à la gauche du trait de séparation suffisamment pour déclencher l'agrandissement de la col visible. Le mouvement est imperceptible. La difficulté reste lorsque la dernière colonne del la StringGrid est invisible. Il faut un traitement spécifique.

    Puis lorsqu'on clique sur le bouton gauche de la souris OnMouseDown appelle le OnMouseMove.

    Tu vois c'est original mais c'est un contournement. Si on commence à écrire une StringGrid avec de pareils bouts de ficelles cela n'ira pas loin...

    Je t'enverrai le code en message privé dès que j'aurai un peu de temps. Le forum cela prend du temps .

    Cordialement. Gilles

  5. #5
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    ouais je vois ca beau travail de recherche...

    Il faut recréer un évènement spécifique pour la stringgrid mais ont en reparlera plus tard car cet évènement existe dans la DBgrid

    @+

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chris37 Voir le message
    2- Je souhaite reprendre le développement de la LZDbGrid commencé il y a 1 an () et je cherche des volontaires pour jouer avec moi.
    Le svn est crée....

    Cordialement,
    Chris
    j'ai plusieurs bouts de DBgrid perso modifiés pour ZEOS mais l'integration n'est pas au top
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    He he ! garde ca au chaud, on ouvre le bal en septembre

    On fera une belle doc pour gilles

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

Discussions similaires

  1. [VBA-EXCEL]bloquer la saisie utilisateur sur une colonne
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/06/2006, 15h37
  2. Bloquer la touche [ENTREE] dans une form
    Par systemofaxav dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 09/06/2006, 15h59
  3. [StringGrid] Resize d'une colonne sur double-clique
    Par MiJack dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/03/2006, 18h35
  4. [D7] StringGrid afficher une colonne comme 1e colonne visibl
    Par raoulmania dans le forum Composants VCL
    Réponses: 2
    Dernier message: 15/12/2005, 15h23
  5. Réponses: 5
    Dernier message: 25/03/2005, 17h19

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