Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre Expert

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    893
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 893
    Points : 1 084
    Points
    1 084

    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 :
    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 :
     aMemo.Left := SG1.Width +1;
    Bof....

    J'ai réglé le problème autrement pour l'instant :
    Code :
    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

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

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

    Informations forums :
    Inscription : mars 2005
    Messages : 2 054
    Points : 4 543
    Points
    4 543

    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 et Code Typhon 4.41 sous Win 7 64 bits - Code Typhon 4.50 sous Ubuntu 12.04 64 bits (VM)

  3. #3
    Membre Expert

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    893
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 893
    Points : 1 084
    Points
    1 084

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •