Strona 1 z 1

Jak to zrobić ?? Cały czas kwadrat

Nowy postNapisane: wtorek, 8 grudnia 2009, 23:10
przez Corvis
Witam,

Mam formatkę o jakiś rozmiarach, potrzebuję wstawić tam 4 panele w taki sposób aby każdy z nich był kwadratem bez względu na rozmiar formatki. Próbowałem robić to GridPanelem ale efekt jakis mizerny ( załącznik ) Ma ktoś na to jakiś pomysł ??

Pozdrawiam,

Re: Jak to zrobić ?? Cały czas kwadrat

Nowy postNapisane: środa, 9 grudnia 2009, 10:21
przez Cyfrowy Baron
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.

Re: Jak to zrobić ?? Cały czas kwadrat

Nowy postNapisane: środa, 9 grudnia 2009, 10:41
przez Corvis
O to mi dokładnie chodziło. Wielkie dzięki Baronie !!!!!!!!!!

Po południu wrzuce ten algorytm w program i dam znać jak wyszło !!!