Newsgroup: it.comp.lang.delphi
Titolo: panel che si spostano!

Ciao a tutti.
Ho un problema col ridimensionamento dei panel.
La situazione è questa:
Ho 3 panel affiancati che voglio ridimensionare runtime per fare in
modo che il centrale sia sempre al centro.
Questi tre sono contenuti all'interno di un altro panel.
Per fare questo ho messo i primi 2 con l'allineamento alLeft, il terzo
alclient.
Tramite poi l' onResize del Panel contenitore, vado a modificare
opportunamente la Width del primo panel.
Dal punto di vista dei dimensionamenti funziona tutto, il problema è
che il panel centrale mi si sposta a sinistra.
Sicuramente il problema è dovuto al fatto che i primi due sono alLeft
e quindi delphi decide di sua iniziativa quale è quello più a
sinistra.
Come faccio a controllare questo funzionamento, per fare in modo di
mettere i panel dove voglio io???
(Spero di essere stato sufficentemente chiaro!)
Grazie a tutti
Matteo

 ha scritto nel messaggio 
news:248d1c3d-dac8-4aa3...@t54g2000hsg.googlegroups.com...
Ciao a tutti.
Ho un problema col ridimensionamento dei panel.
La situazione č questa:
Ho 3 panel affiancati che voglio ridimensionare runtime per fare in
modo che il centrale sia sempre al centro.
Questi tre sono contenuti all'interno di un altro panel.
Per fare questo ho messo i primi 2 con l'allineamento alLeft, il terzo
alclient.
Tramite poi l' onResize del Panel contenitore, vado a modificare
opportunamente la Width del primo panel.
Dal punto di vista dei dimensionamenti funziona tutto, il problema č
che il panel centrale mi si sposta a sinistra.
Sicuramente il problema č dovuto al fatto che i primi due sono alLeft
e quindi delphi decide di sua iniziativa quale č quello piů a
sinistra.
Come faccio a controllare questo funzionamento, per fare in modo di
mettere i panel dove voglio io???
(Spero di essere stato sufficentemente chiaro!)
Grazie a tutti
Matteo
Io mettere il panel di sinistra allineato a sinistra
il panel di destra allineato a destra
il panel di centro allineato al client
senza dover fare il resize a mano
C. 

 C.
Il problema è che il panel centrale è l'unico che non deve
ridimensionarsi, si devono ridimensionare gli altri due e nello stesso
modo, per mantenere la simmetria...
Matteo


Ho fatto questa prova:
Panel1 = Contenitore, Allineamento alClient
Panel2 = Sinistro,    Allineamento alLeft
Panel3 = Centrale,    Allineamento alLeft
Panel4 = Destro,      Allineamento alRight
procedure TForm1.Panel1Resize(Sender: TObject);
begin
  Panel2.Width:= (Panel1.Width - Panel3.Width) div 2;
end;
Tutto funziona, ridimensionando la form si ridimensionano i TPanel e il 
TPanel centrale rimane al suo posto.
Evidentemente riposizioni l'origine di Panel2 (Left), infatti se 
aggiungi alla procedura Resaize questa riga: 'Panel2.Left:= 20' Quando 
Panel3.Left < 20 il TPanel centrale si sposta a sinistra.
--- posted by geoForum on 
http://www.delphiedintorni.it


Ho provato anche io e:
1. anche a me fa la stessa cosa su un progetto nuovo, tranne quando
riduci talmente la form che il panel di sinistra (e quindi anche di
destra) spariscono, ingrandendo nuovamente la form, il panel centrale
si posiziona a sinistra.
2. Sul mio progetto originale il comportamento è invece diverso, forse
per qualche motivo riconducibile al caso 1...
Carino, vero?!?
A questo punto la domanda sorge spontanea:
con che criterio vengono "disegnati" i panel da delphi (o forse da
win?) ovvero con due panel allineati a sinistra, esiste un criterio
per dirgli di disegnare prima l'uno o l'altro?
Ciao,
Matteo