Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Lazarus
Lazarus Forum d'entraide sur Lazarus, l'EDI RAD multiplateforme basé sur Free Pascal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/01/2013, 11h48   #1
selzig
Membre émérite
 
Homme Gilles
Enseignant
Inscription : novembre 2006
Messages : 812
Détails du profil
Informations personnelles :
Nom : Homme Gilles
Âge : 54
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2006
Messages : 812
Points : 972
Points : 972
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
selzig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 20h50   #2
tourlourou
Modérateur
 
Avatar de tourlourou
 
Homme Yves Lemaire
Biologiste ; Progr(amateur)
Inscription : mars 2005
Messages : 1 721
Détails du profil
Informations personnelles :
Nom : Homme Yves Lemaire
Âge : 50
Localisation : France, Yvelines (Île de France)

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

Informations forums :
Inscription : mars 2005
Messages : 1 721
Points : 3 329
Points : 3 329
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 2.80 sous Win 7 64 bits - Code Typhon 2.70 / Ubuntu 12.04 64 bits
tourlourou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2013, 12h15   #3
selzig
Membre émérite
 
Homme Gilles
Enseignant
Inscription : novembre 2006
Messages : 812
Détails du profil
Informations personnelles :
Nom : Homme Gilles
Âge : 54
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2006
Messages : 812
Points : 972
Points : 972
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
selzig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h13.


 
 
 
 
Partenaires

Hébergement Web