Question

J'ai un problème, je suis incapable de résoudre, même si je passe beaucoup de temps à essayer de le faire.

J'utilise habituellement GridPanels pour aligner les contrôles sur les formulaires. Il a, cependant, un bug gênant. Lorsque le mode d'alignement de GridPanel est alClient et je maximiser sa fenêtre parent, le GridPanel ajuste à la nouvelle taille de cette fenêtre, cependant, les contrôles de pose sur la grille ne le font pas. Ils restent dans la même position qu'ils étaient avant Redimensionner la fenêtre. Il arrive qu'à la maximisation de la première fenêtre. Si la fenêtre est d'abord redimensionnée manuellement, everyting est OK. Je pense que la grille ajuste ses contrôles enfants après le deuxième événement resize (??).

Que faire faire le travail de GridPanel correctement si elle vient à ce bug? Il pourrait être suffisant pour envoyer un message à (mais quel est le message?), Je ne sais pas. J'ai essayé d'utiliser réaligner, actualisez etc., mais ils n'a pas aidé.

Merci pour votre aide à l'avance,

Mariusz.

Était-ce utile?

La solution

Ah, j'ai eu des problèmes similaires aussi bien. Il pourrait être lié à un problème de redimensionnement dans le VCL. Vous pouvez essayer le correctif par Andreas Hausladen . Il semble fonctionner pour moi dans la plupart des cas.

Autres conseils

J'ai trouvé un truc.

en cas de OnResize parent de GridPanel, changer la largeur de 1 pixel par GridPanel.

alors GridPanel remarquerez taille est modifiée, réarranger les sous-contrôles GridPanel ..

échantillon est inférieure ..

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.Width := GridPanel1.Width - 1;  // subtract 1
  GridPanel1.Width := GridPanel1.Width + 1;  // recover width by adding 1
end; 

Modification de la largeur / invalidant le contrôle ne fonctionne pas pour moi (quelque chose a changé avec les versions récentes de RAD Studio?).

De toute façon une solution similaire, simple le long de cette ligne est:

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.ControlCollection.BeginUpdate;
  GridPanel1.ControlCollection.EndUpdate;
end; 

J'ai eu cette erreur aussi sur plusieurs projets. Je ne sais pas comment je résolu ce problème (il était sur des projets pour mon employeur précédent, je n'ai pas accès à ce code source plus). Je pense que je l'avais te redessiner / rafraîchir que cadre parent ou formulaire sur lequel a été placé le GridPanel.

sur le redimensionnement de l'appel propriétaire GridPanel.Invalidate. Je ne l'ai pas tester. J'espère que ce travail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top