2013-11-01 16 views
6

Ho questo tipo di situazione (vedi immagine), ora quando mi muovo Splitter1 in fase di esecuzione, cresce l'altezza Panel2 e cresce anche l'altezza Form1.La dimensione della forma indesiderata cresce sullo spostamento TSplitter quando Panel1.Constraints.MinHeight è impostato

ma ho bisogno di conoscere e bloccare questo tipo di evento, quando Splitter1 non può essere spostato a causa di Panel1.Constraints.MinHeight viene raggiunto, in modo Panel2 non può essere modificato della sua altezza e Form1 troppo.

Grazie per qualsiasi aiuto.

preview

- Modifica-
Panel1.Align: = alLeft;
Splitter1.Align: = alBottom;
Panel2.Align: = alBottom;

risposta

6

È possibile controllare e negare l'ulteriore dimensionamento dell'evento CanResize dello splitter.

procedure TForm1.Splitter1CanResize(Sender: TObject; var NewSize: Integer; 
    var Accept: Boolean); 
begin 
    Accept := ClientHeight - (NewSize + Splitter1.Height) >= Panel1.Constraints.MinHeight; 
end; 
+0

Grazie, questo funziona benissimo per me. La soluzione più semplice è la migliore. – NevTon

+0

@NevTon, prego! –

1

Imposta la proprietà Splitter AutoSnap su false e la relativa proprietà MinSize su MinHeight of Panel1.

+0

Ho impostato 'AutoSnap' su False e' ResizeStyle' impostato su rsUpdate. Mi dispiace non averlo menzionato fino ad ora. – NevTon

+0

Quindi sembra che tu abbia perso l'impostazione di MinSize dello Splitter su MinHeight of Panel1. Senza di ciò la mia soluzione non funzionerà. Comunque, Sertac ha mostrato un altro approccio valido. –

+0

No, non mi manca la proprietà 'Splitter1.MinSize'. È impostato su 84, questa sarà la dimensione minima di 'Panel2' quando si sposta' Splitter1' verso il basso. – NevTon