CategoryPanelGroup sırasını değiştirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

CategoryPanelGroup sırasını değiştirme

Mesaj gönderen ertank »

Merhaba,

Formumda TCategoryPanelGroup var. İçinde 7 tane TControlPanel yerleştirilmiş durumda. Bu TCategoryPanel'lerin istediğim bir tanesini diğerlerinin sıralamasını bozmadan en yukarı taşımak istiyorum.

Baya uğraştım ama henüz başaramadım. Mevcut kod aşağıdaki gibidir. Yardımlar için şimdiden teşekkür ederim.

Kod: Tümünü seç

procedure TForm3.SpeedButton4Click(Sender: TObject);
var
  i:Integer;
  cp: TCategoryPanel;
begin
  cpgTesis.CollapseAll; // Sıralanması gereken TCategoryPanelGroup

  for I := cpgTesis.Panels.Count-1 downto 0 do begin
    cp         := cpgTesis.Panels[i];
    cp.Visible := False; // Top değeri TCategoryPanel görünür iken değişmiyor. Değiştirsek bile alTop şeklinde TCategoryPanelGroup içinde olduğu için Top değeri eski değerine geri dönüyor.
    cp.Top     := i * 60; // Kapalı yükseklik değeri 30. Ben her birini bir o kadar artırıyorum ki E yukarı taşımak istediğim için yer açılsın.
  end;

  cp     := cpgTesis.Panels[SpinEdit1.Value];
  cp.Top := -1; // İstenilen TCategoryPanel'i en üste taşı

  for I := cpgTesis.Panels.Count-1 downto 0 do begin
    cp         := cpgTesis.Panels[i];
    cp.Visible := True;
  end;
end;
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: CategoryPanelGroup sırasını değiştirme

Mesaj gönderen SimaWB »

Denediğimde Top değerini 0 yaptığım TCategoryPanel en üstte gidiyor.
Sadece şöyle bir gariplik var: ilk defasında sıralama tersten işliyor nedense. Yani, örneğin CategoryPanelGroup1.Panels[2] 'yi en üstte taşımak istediğimde baştan 3.nün yerinin değişmesini beklerim ama sonran 3.nün yeri değişiyor. Nedense sonrakilerde hep beklendiği gibi davranıyor. Fazla vaktim olmadığı için araştırma şansım yok ama en azından belki bu bilgi işinize yarayabilir diye düşündüm.
There's no place like 127.0.0.1
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: CategoryPanelGroup sırasını değiştirme

Mesaj gönderen ertank »

Aşağıdaki şekilde sorun çözüldü:

Kod: Tümünü seç

procedure TfrmMain.SpeedButton4Click(Sender: TObject);
var
  cp: TCategoryPanel;
  i: Integer;
begin
  for I := 0 to cpgTesis.Panels.Count-1 do begin
    cp := cpgTesis.Panels[i];
    if cp.Tag = SpinEdit1.Value then begin
      cp.Top := -1;
      Break;
    end;
  end;
end;
Teşekkürler.
Cevapla