Jak rozumiem chcesz, żeby wraz ze zmieniającym sie rozmiarem formularza zmieniały się rozmiary obiektów typu TPanel, ale tak by ich proporcje zostały zachowane. Powinieneś jednak podać więcej założeń, czy na formularzu maja pojawić się paski przewijania, jeżeli rozmiar formularza nie będzie się dzielił na cztery kwadraty, czy też ma ma między kwadratami pojawić się pusta przestrzeń.
Jeżeli rozmiar formularza ma wymiary 1024 x 768 pikseli, to niestety nie podzieli się na 4 części tak by te kwadraty w całości wypełniały przestrzeń formularza.
Wszystko czego potrzebujesz to algorytmu, który będzie przeliczał rozmiar Paneli w oparciu o rozmiar formularza, musi też określać ich położenie. Całość zadania można zrealizować w zdarzeniu OnResize formularza. Jako rozmiar wyjściowy trzeba przyjąć właściwość ClientHeight formularza podzieloną przez 2.
- Kod: Zaznacz cały
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
int size;
if(this->Width > this->Height) size = this->ClientHeight/2;
else size = this->ClientWidth/2;
Panel1->SetBounds(0, 0, size, size);
Panel2->SetBounds(0, size, size, size);
Panel3->SetBounds(size, 0, size, size);
Panel4->SetBounds(size, size, size, size);
}
//---------------------------------------------------------------------------
Przykład w załączniku.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.