2010-02-19 6 views
4

J'ai une question sur la mise en page avec TPanels et TcxSplitter de DevExpress. panellayout http://pp.kpnet.fi/bengtsson/temp/layout.pngDisposition des panneaux avec séparateurs

La forme principale a quelques panneaux A à G. A - F est recueillie dans un panneau ABCDEF. ABCDEF contient 3 panneaux: AB, CDE et F. Panel CDE contient un CD de panneau.

Entre toutes les limites entre les panneaux, il y a un TcxSplitter de DevExpress. Le problème est que l'utilisateur peut prendre le séparateur entre ABCDEF et G et le déplacer vers la gauche pour qu'il atteigne le panneau AB et le panneau de couverture CDE. Je ne veux pas permettre ça.

Au lieu de cela, je veux que le panneau CDE ait une largeur minimale de disons 5 pixels. Ensuite, la largeur du panneau AB devrait être réduite. Espérons que j'ai expliqué assez bien :) J'ai essayé de définir une contrainte.minwidth = 5 sur le panneau CDE mais le panneau peut encore être caché. Peut-être que Devexpress a une bonne solution pour ça?

Cordialement

+0

Wow. Je suis juste étonné que tu sois arrivé si loin avec ce séparateur. Le composant séparateur peut être le composant le moins 'réalisable' dans le vcl. Je suggère que vous jetez un coup d'oeil aux composants de raize splitterpanel à la place. Je trouve cela beaucoup plus facile de travailler avec. – Vegar

+0

Ceci est juste un pépin agaçant et dans l'ensemble, je suis satisfait de la suite de composants Devexpress. L'application les utilise principalement pour les grilles. –

+0

Je pensais que dxSplitter était juste une version plus jolie du splitter vcl inclus. Le dxSplitter fonctionne-t-il différemment du séparateur vcl standard? – Vegar

Répondre

2

cxSplitter a la propriété MinSize, de ce que je vois dans une application de test, il est respecté lors du redimensionnement. Comme il n'y a qu'une seule propriété MinSize, il est vérifié pour les panneaux de chaque côté du séparateur, donc vous ne pouvez pas spécifier, disons, 50 pixels minimum pour un côté et 100 pour le panneau de l'autre côté du séparateur. Assurez-vous que la propriété AutoSnap est fausse cependant.

Mais il existe également un événement OnCanResize sur le séparateur, ce qui vous permet également d'empêcher le redimensionnement.

En outre, puisque vous utilisez Devex, je vous suggère d'utiliser soit dockSite/dockPanel ou LayoutControl v2 au lieu du simple Delphi TPanel.

+0

J'utilise l'événement OnCanResize et empêche le redimensionnement au-delà de la limite. Merci! –

1

Essayez cette propriété

cxSplitter1.ResizeUpdate:=True; 
Questions connexes