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 :

Effet visuel désagréable dans une TStringGrid


Sujet :

Lazarus Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  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.

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