p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité
    Invité(e)

    Par défaut Effet visuel désagréable dans une TStringGrid

    Bonjour,
    dans une méthode d'une TStringGrid, je crée un TMemo. La propriété "Visible" du TMemo par défaut a pour valeur True. Elle doit le rester car j'effectue des mesures de tailles sur celui-ci. Or si TMemo est invisible, les mesures sont impossibles.

    Mon premier code a été celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.SG1HeaderSized(Sender: TObject; IsColumn: Boolean; Index: Integer); 
    var
      aMemo : TMemo;
    begin
      aMemo := TMemo.Create(nil);  {ou aMemo := TMemo.Create(Sender as TStringGrid);}
      aMemo.Parent := Sender as TStringGrid ; 
      SG1.BeginUpdate;
      [...]
      SG1.EndUpdate(True);
      aMemo.Free;
    end;
    Après la modification de la taille d'une colonne de la TstringGrid, le code est effectué. Pendant une fraction de seconde, je vois le TMemo en avant plan au dessus de la TStringGrid. Cela produit un effet désagréable.

    Mon premier réflexe a été de "déplacer" l'effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     aMemo.Left := SG1.Width +1;
    Bof....

    J'ai réglé le problème autrement pour l'instant :
    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
    procedure TForm1.SG1HeaderSized(Sender: TObject; IsColumn: Boolean; Index: Integer); 
    var
      aMemo   : TMemo;
      aWctrl  :  TWinControl;
    begin
      aWctrl := TWinControl.Create(Sender as TStringGrid);
      aWctrl.Parent := Sender as TStringGrid;
      aMemo := TMemo.Create(aWctrl );
      aMemo.Parent := aWctrl;
      SG1.BeginUpdate;
      [...]
      SG1.EndUpdate(True);
      aMemo.Free;
      aWctrl.Free;
    end;
    Ce dernier code fonctionne comme attendu : le TMemo a bien sa propriété par défaut Visible := True; et il est invisible lors de son fonctionnement.

    Je me demandais si la première approche pouvait être corrigée sans l'utlilisation d'un TWinControl comme dans la deuxième.
    Cordialement. Gilles
    Dernière modification par Invité ; 04/01/2013 à 12h14.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    mars 2005
    Messages
    2 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : mars 2005
    Messages : 2 461
    Points : 5 933
    Points
    5 933

    Par défaut

    quid de le mettre sous la grille ?
    Parent = Parent de la grille et ajustement de sa position le plaçant sous la grille
    Delphi 5 Pro - CodeTyphon 5.20 sous Win 7 et Ubuntu 14.04

  3. #3
    Invité
    Invité(e)

    Par défaut

    Bonjour,

    Oui mais comme c'est dans un composant, il faut "porter" le aowner jusqu'à la procédure... Sur le principe, cela équivaut à utiliser le TWinControl. Soit on "sort" du composant, soit on y intègre un autre composant pour pouvoir utiliser proprement finalement le TMemo. Sur le principe la question m'intéresse toujours, mais j'abandonne cette piste sans suite sous Linux.

    Bon WE. Cordialement. Gilles

Discussions similaires

  1. Creer un composant non visuel(Timer) dans une DLL
    Par hugobob dans le forum Composants VCL
    Réponses: 1
    Dernier message: 06/06/2006, 16h20
  2. Comment sélectionner une ligne dans une TStringGrid ?
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 11
    Dernier message: 22/08/2005, 12h38
  3. Comment récupérer l'index du curseur dans une TStringGrid ?
    Par Sydaze dans le forum Composants VCL
    Réponses: 2
    Dernier message: 26/04/2005, 09h17
  4. Récupérer les données interbase dans une TStringGrid
    Par Ousse dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 12h51
  5. Centrer le texte dans une TStringGrid
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/06/2004, 11h01

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