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 :

Le refresh d'une cellule StringGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut Le refresh d'une cellule StringGrid
    Bonjour à tous,

    J'expose ma problématique.

    J'ai créer un StringGrid avec en autre l'evenement Draw si dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TFormPrincipal.StringGridSemaineDrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    Begin
     
      With Sender As TStringGrid Do With Canvas Do
      Begin
        if (Arow=1) And (ACol = 0) And (Cote=2) then
        Begin
          DrawText(Handle, PChar(TitreModifDirecte) , -1, Rect, DT_CENTER or DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE);
        end;
      end;
    end;
    J'ai pas mis toutes la structure de l'evenement cela n'a pas d'interet.

    Je créer des composants dynamiquement et je gere sur ces composants plusieur evenements voici celui qui me pause probleme.
    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
    procedure TFormPrincipal.PanelMouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    Var
      xHeure, xColonne: Integer;
    begin
      if (Sender is TPanel) then
      Begin
        TPanel(Sender).Cursor:=CrDefault;
        If (X >= TPanel(Sender).Width-3) And (ssCtrl in Shift) then TPanel(Sender).Cursor:=CrHsplit;
        if (Cote = 2) then
        Begin
          if (X > 4) and (X mod 5 = 0) and (X + TPanel(Sender).Left <= MaxXModifDirecte) then
          Begin
            xColonne:= ((TPanel(Sender).Width + TPanel(Sender).left - (StringGridSemaine.ColWidths[0] + 5))
                      div StringGridSemaine.DefaultColWidth);
            xHeure:= ((StringGridSemaine.DefaultColWidth * NumDateDebutNumItem)
                    +(TPanel(Sender).Width-(StringGridSemaine.DefaultColWidth * xColonne)))
                      div 5;
            TitreModifDirecte := 'au '+ JModifDirecte.Strings[NumDateFinNumItem] + ' à '+ HModifDirecte.Strings[NumHeureFinNumItem];
    
    
            StringGridSemaine.Cells[0,1] := TitreModifDirecte;
            StringGridSemaine.Refresh;
    
    
            TPanel(Sender).Width := X;
          end;
        end;
      end;
      Shift := [];
    end;
    Comme on le voix si je clique Droite+CTRL et que je bouge je me trouve dans cet évenement. Je mets en place un text qui devrait !! mettre à jour la cellule 0,1 mets cela ne le fais qu'une seule fois.

    Mon objectif :
    Lorsque je bouge mon coposant par cette eveenement je veux donnee a l'utilisateur l'information de son déplacement (xheure, xcolonne).
    Lorsque je mets cela dans un Label plutot que sur une cellule du StringGrid cela fonctionnement parfaitement, sauf que ce n'est vraiment pas esthetique.
    Alors comment une cellule Stringrid peut changer seloin un mouvement de souris réalisé sur un coposant ?

    Merci de vos idées.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    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
     
    procedure TFormPrincipal.PanelMouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    Var
      GC : TGridCoord;
     
    begin
         if (Sender is TPanel) then
      Begin
        TPanel(Sender).Cursor:=CrDefault;
        GC := StringGridSemaine.MouseCoord(X, Y);
        // on transforme les coordonne en colonnes et lignes
       ....
          TitreModifDirecte := 'au '+ JModifDirecte.Strings[NumDateFinNumItem] + ' à '+ HModifDirecte.Strings[NumHeureFinNumItem];
    ...
                      StringGridSemaine.Cells[0, GC.Y] := TitreModifDirecte;
                      StringGridSemaine.Invalidate; 
    ...
    end;
    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/03/2007, 16h09
  2. Réponses: 7
    Dernier message: 25/01/2007, 14h08
  3. formatage d'un text dans une cellule stringgrid en float
    Par iam dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/04/2006, 15h05
  4. changer de couleur dans une cellule stringgrid
    Par popy1970 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/04/2006, 20h21
  5. Bord de couleur pr une cellule StringGrid ou AdvStringGrid
    Par gazier20 dans le forum Composants VCL
    Réponses: 12
    Dernier message: 05/02/2006, 03h00

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