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

  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
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 299
    Points
    11 299
    Billets dans le blog
    6
    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 - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  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