Oranlamak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Laz61
Üye
Mesajlar: 135
Kayıt: 03 Eki 2007 11:51
Konum: Almanya

Oranlamak

Mesaj gönderen Laz61 »

Arkadaslar merhaba

Formun orta yerine bir kare seklinde 20 tane paneli yerlestirmek istiyorum. Sorun panellerin daima formun tam ortasinda olmasi ve formun boyutlari degistiginde, degisen orana görede panellerin kendilerini oranlayarak degistirmelerini istiyorum. Fakat 20 tane panel bir dikdörtgen seklinde hep formun ortasinda yanyana alt alta pozisyonlarini degistirmeden sabitlenmeliler.
Tavsiyelerinizi bekliyorum

Tsk ederim
Hayat tüm olumsuzluklara rağmen yaşamaya değer.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Oranlamak

Mesaj gönderen Battosai »

Bu 20 tane paneli bir panel içine alıp...formun onresize olayında bu kapsayıcı paneli ortalasınız olmaz mı ?
Laz61
Üye
Mesajlar: 135
Kayıt: 03 Eki 2007 11:51
Konum: Almanya

Re: Oranlamak

Mesaj gönderen Laz61 »

Arkadaslar merhaba

Tsk ederim. Aslinda ben 20 tane panelin formun tam ortasinda, kapladiklari alan icerisinde görülmelerini istiyordum. For büyüdükce dogal olarak büyümelerini ama hep formun ortasinda kalmalarini istiyordum. Söyle bir cözüm buldum: Ikinci bir formu modal olarak ve basliksiz (formstyl) gösterecegim ve 20 tane paneli formun üzerine yerlestirecegim. Ve formu ana formun üzerine ortayalacagim.
Buda benim maksadim icin yeterli

Tsk ederim
Hayat tüm olumsuzluklara rağmen yaşamaya değer.
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Oranlamak

Mesaj gönderen orhancc »

ekrana 20 tane paneli koy veya dinamik olarak kod ile oluştur ve hepsinin anchor ayarlarını yap sorunun çözülür.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Oranlamak

Mesaj gönderen mrmarman »

:idea: Çözüm bulmuşsunuz ama yaklaşım konusunda alternatif oluşması adına bir temrin hazırladım, denenmiştir.
Forma 20 tane panel koyun. Dinamik create edebilir ve/veya dağınık dahi koysanız olur. Tümü kendiliğinden düzene girecektir. Forma ortalamak dediğiniz için sabit kısmından marjin değerleri girmenizi sağladım. Form başlığını hesaplatabilirsiniz ama ben aşağıda göreceğiniz şekilde 30 height yüksekliğinde varsaydım ve peşin peşin çıkardım.

Örnek kod şu şekilde...

Kod: Tümünü seç

procedure TForm1.FormResize(Sender: TObject);
Const
 SolMarj = 100;
 UstMarj = 100;
 SagMarj = 100;
 AltMarj = 100;
Var
  i : Integer;
begin
  for i := 0 to TForm(Sender).ComponentCount - 1 do
  begin
    if TForm(Sender).Components[i] is TPanel then
    begin
      // Satırda 5 Panel ve 4 satırdan oluşuyor = 20 panel
      TPanel(TForm(Sender).Components[i]).Height := (TForm(Sender).Height-30-UstMarj-AltMarj) div 4;
      TPanel(TForm(Sender).Components[i]).Width  := (TForm(Sender).Width -SolMarj-SagMarj)    div 5;
      TPanel(TForm(Sender).Components[i]).Top    := UstMarj + ( (i div 5) * TPanel(TForm(Sender).Components[i]).Height );
      TPanel(TForm(Sender).Components[i]).Left   := SolMarj + ( (i mod 5) * TPanel(TForm(Sender).Components[i]).Width  );
    end;
  end;
end;
başarılar.
Resim
Resim ....Resim
Laz61
Üye
Mesajlar: 135
Kayıt: 03 Eki 2007 11:51
Konum: Almanya

Re: Oranlamak

Mesaj gönderen Laz61 »

Arkadaslar merhaba

kod maksadim icin kismen dogru. Eline saglik.

Tsk. ederim
Hayat tüm olumsuzluklara rağmen yaşamaya değer.
Cevapla