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

Langage Delphi Discussion :

Synchro DateEdit et StringGrid


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut Synchro DateEdit et StringGrid

    Bonjour à tous et bonne année

    Voila mon probleme :

    J'ai une stringGrid dans laquelle dans chaque cellule j'inscris une date :

    par exemple la cellule 1 = 01/01/2010, la cellule 2 =02/01/2010 etc...

    PAr conséquent, le numéro de cellule correspond au numéro du jour dans l'année (quantieme).

    J'ai aussi un dateedit. Je reussi, aprés selection d'une cellule, à scroller vers la droite ou la gauche tout en mettant à jour le DAteEdit avec la date contenu dans la cellule selectionnée.

    Par contre, je n'arrive pas à atteindre la cellule correspondante lorsque je change la date dans le dateedit.

    Cela fait un bout de temp que je galère avec les propriété col, leftcol du stringgrid, alors si quelqu'un a une idée ,voir une solution, je suis preneur.

    A+

    windows 10 / DEBIAN 7.9 / Etc...

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 738
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 738
    Points : 13 278
    Points
    13 278
    Par défaut
    Pourtant avec Col, ça fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses DateUtils;
     
    procedure TForm6.DateTimePicker1Change(Sender: TObject);
    begin
      StringGrid1.Col := DayOfTheYear(DateTimePicker1.Date);
    end;

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut


    Oui cela marche, je l'ai utilisé! Par contre comment fais tu pour mettre à jour ton datetimepiker lorsque tu cliques sur la barre de scroll horizontal?


    A+

    windows 10 / DEBIAN 7.9 / Etc...

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 738
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 738
    Points : 13 278
    Points
    13 278
    Par défaut
    Rien puisque le scroll ne modifie pas la sélection

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut


    ET si je désire que le scroll modifie la selection ?

    windows 10 / DEBIAN 7.9 / Etc...

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 738
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 738
    Points : 13 278
    Points
    13 278
    Par défaut
    Là, il faut surcharger TopLeftChanged de TStringGrid:

    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
    type
      TStringGrid = class(Grids.TStringGrid)
      protected
        procedure TopLeftChanged; override;
      end;
     
    implementation
     
    procedure TStringGrid.TopLeftChanged;
    begin
      inherited;
     
      if Col < LeftCol
      then Col := LeftCol
      else if Col > LeftCol +VisibleColCount -1
           then Col := LeftCol +VisibleColCount -1;
    end;

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut

    ok,

    désolé de répondre si tard, je vois ce que cela donne, et viendrais poster plus tard
    a+

    windows 10 / DEBIAN 7.9 / Etc...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut Cela peut interresser du monde


    Tout d'abord, un grand merci à AndNoTor.



    J'utilise un grid que j'ai trouvé en fouillant sur le NET, que je recommande à ceux qui sont désireux d'utiliser différents éditeurs pour chaque cellule.
    L'appli que je développe (du moins que j'essaie de développer) consiste à une gestion de planning de personnel.
    Pour cela, j'utilise FIREBIRD 2.1, les compo d'accés données FIBPLUS D4 et DELPHI 4 STANDARD. Et oui j'utilise encore cette version, qui à l'époque ne m'avait pas couté trop cher (il y a environ 15ans).

    J'uitlise aussi les o_fonctions pour la mamipulations des dates.

    Filename: XStringGrid.pas
    Version: v2.0
    Authors: Michael Dürig (md) Purpose: XStringgrid is an extended version of the stringgrid which offers
    a lot more flexibility. It's possible to apply different colours
    and fonts to each column and it's header and align the content
    of the cells. In addition it offers different inplace editors
    which can be assigned to columns to edit their cells. So far
    there are edit, combo, maskedit and spincontrol inplace editors
    implemented.
    J'ai rajoué quelque ligne à ton code permettant :
    Lors du click sur barre de scroll horizontal, de garder la cellule selectionnée
    tout en incémentant sa date et celle du dateTimePicker

    Nota béné : IdScroll=1 : Scroll vers la droite, IdScroll=0 scroll vers la gauche, sinon idScroll contient la valeur de scroll (utilisation curseur de la barre de scroll horizontale)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Planning: TStringGrid;
    
    procedure TFormPlanning.DatePlanningChange(Sender: TObject);
    begin
       Planning.col:=3+o_NumDay(DAtePlanning.date);
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //DAns le OnActivate de la form du stringGrid
    procedure TFormPlanning.FormActivate(Sender: TObject);
    Begin
     ....
     DateTimePicker.date:=now;
     Planning.Tag:=1;
    // Planning.fixedCol:=4;
     Planning.leftCol:=3+o_NumDay(DAtePlanning.date);
     ....
    End
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    type
      TStringGrid = class(Grids.TStringGrid)
      protected
        procedure TopLeftChanged; override;
        procedure WMHScroll(var Msg: TWMHScroll); message WM_HSCROLL;
        procedure WMVSCROLL(var Msg: TWMvScroll); message WM_VSCROLL;
      end;
    
    public
      IdScroll:integer; 
    
    implementation
    
    procedure TStringGrid.WMHScroll(var Msg: TWMHScroll);
    begin
     IdScroll:=Msg.scrollCode; inherited;
     Invalidate;
    end;
    
    procedure TStringGrid.WMVSCROLL(var Msg: TWMvScroll);
    begin
     IdScroll:=Msg.scrollCode;
     inherited;
     Invalidate;
    end; 
    
    procedure TStringGrid.TopLeftChanged;
    begin
      inherited;
      if Col < LeftCol
      then Col := LeftCol
      else if Col > LeftCol +VisibleColCount -1
           then Col := LeftCol +VisibleColCount -1;
      else
      // SCROLL AVEC fleche droite barre scroll
      if (Col>LeftCol) and (Self.tag<>0) and (Self.IdScroll=1) 
      then Col:=LeftCol+(Col-LeftCol+1)
      else 
         // SCROLL AVEC fleche gauche barre scroll
         if (Col>LeftCol) and (Self.tag<>0) and (Self.IdScroll=0) 
         then Col:=leftCol+(Col-LeftCol-1)
         else
         // SCROLL AVEC CURSEUR BARRE HORIZONTALE 
         Col:=LeftCol+IdScroll;
    end;
    Voilà, qu'en pensez vous

    windows 10 / DEBIAN 7.9 / Etc...

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

Discussions similaires

  1. StringGrid sort
    Par clovis dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/10/2004, 21h46
  2. StringGrid, multiligne et word wrap
    Par Dajon dans le forum C++Builder
    Réponses: 7
    Dernier message: 17/09/2003, 17h15
  3. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 00h57
  4. Multi lignes dans un StringGrids ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 23h15
  5. StringGrid et colonnes
    Par Delph dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/08/2002, 11h35

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