Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ScrollBox hk
#11
(26-03-2018, Saat: 12:01)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBu tam istediğim gibi forma göre kendisi diziyor elemanları fakat,  Maalesef bununda scrool özelliği yok

Hocam, birkaç tiyo daha verseniz yapmak istediğinizle alakalı eminin birşeyler çıkacak   Rolleyes
Cevapla
#12
(26-03-2018, Saat: 12:07)Cyber Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(26-03-2018, Saat: 12:01)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBu tam istediğim gibi forma göre kendisi diziyor elemanları fakat,  Maalesef bununda scrool özelliği yok

Hocam, birkaç tiyo daha verseniz yapmak istediğinizle alakalı eminin birşeyler çıkacak   Rolleyes

Şimdi yükledim henüz çözünürlük bozuk olabilir, istediğim şey bu ama ekran küçülünce aşağıdaki elemanlara erişebilmek için bir scroolbox kutusu içerisinde yapmaya çalıştım.



Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#13
Şöyle basitinden bir örnek hazırladım sana. Yanlış anlamamışsam istediğin bu olduğunu değerlendiriyorum.


//Uses ExtCtrls; // veya Delphi XE için     vcl.ExtCtrls; 

Var
  ServerPanelleri : Array of TPanel;

procedure TForm1.PanelleriDuzenle();
Const
  iPad = 4;
Var
  aLeft, aTop : Integer;
  i : Integer;
begin
  aLeft := iPad;
  aTop  := iPad;
  for i := low(ServerPanelleri) to high(ServerPanelleri) do
  begin
    TPanel(ServerPanelleri[i]).Left := aLeft;
    TPanel(ServerPanelleri[i]).Top  := aTop;

    // Bir sonraki Panel için yer bakalım.
    Inc( aLeft, TPanel(ServerPanelleri[i]).Width + iPad );
    if (aLeft + TPanel(ServerPanelleri[i]).Width) > ScrollBox1.Width
    then begin
      aLeft := iPad;
      aTop  := aTop + TPanel(ServerPanelleri[i]).Height + iPad;
    end;
  end;
end;

procedure TForm1.YeniPanelEkle;
Var
  i      : Integer;
  SPanel : TPanel;
begin
  i := High( ServerPanelleri );
  // Yeni server için Array genişletmece...
  if i < 0 // hiç server tanımlı değil
    then i := 1
    else i := High( ServerPanelleri ) - Low( ServerPanelleri ) +2;

  SetLength( ServerPanelleri, i );
  TPanel(ServerPanelleri[i-1]) := TPanel.Create(self);
  With TPanel(ServerPanelleri[i-1]) do begin
    Parent := ScrollBox1;

    Width  := 100;
    Height := 50;
    Color  := clMaroon;
    ParentBackground := False;

  end;

  PanelleriDuzenle();
end;

procedure TForm1.ScrollBox1Resize(Sender: TObject);
begin
  PanelleriDuzenle();
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  YeniPanelEkle();
end;


mry4y1eevuk1crhlyiwf.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#14
Evet Muharrem abi tam olarak istediğim buydu, Teşekkür ederim.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#15
(26-03-2018, Saat: 17:15)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlŞöyle basitinden bir örnek hazırladım sana. Yanlış anlamamışsam istediğin bu olduğunu değerlendiriyorum.


//Uses ExtCtrls; // veya Delphi XE için     vcl.ExtCtrls; 

Var
  ServerPanelleri : Array of TPanel;

procedure TForm1.PanelleriDuzenle();
Const
  iPad = 4;
Var
  aLeft, aTop : Integer;
  i : Integer;
begin
  aLeft := iPad;
  aTop  := iPad;
  for i := low(ServerPanelleri) to high(ServerPanelleri) do
  begin
    TPanel(ServerPanelleri[i]).Left := aLeft;
    TPanel(ServerPanelleri[i]).Top  := aTop;

    // Bir sonraki Panel için yer bakalım.
    Inc( aLeft, TPanel(ServerPanelleri[i]).Width + iPad );
    if (aLeft + TPanel(ServerPanelleri[i]).Width) > ScrollBox1.Width
    then begin
      aLeft := iPad;
      aTop  := aTop + TPanel(ServerPanelleri[i]).Height + iPad;
    end;
  end;
end;

procedure TForm1.YeniPanelEkle;
Var
  i      : Integer;
  SPanel : TPanel;
begin
  i := High( ServerPanelleri );
  // Yeni server için Array genişletmece...
  if i < 0 // hiç server tanımlı değil
    then i := 1
    else i := High( ServerPanelleri ) - Low( ServerPanelleri ) +2;

  SetLength( ServerPanelleri, i );
  TPanel(ServerPanelleri[i-1]) := TPanel.Create(self);
  With TPanel(ServerPanelleri[i-1]) do begin
    Parent := ScrollBox1;

    Width  := 100;
    Height := 50;
    Color  := clMaroon;
    ParentBackground := False;

  end;

  PanelleriDuzenle();
end;

procedure TForm1.ScrollBox1Resize(Sender: TObject);
begin
  PanelleriDuzenle();
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  YeniPanelEkle();
end;


mry4y1eevuk1crhlyiwf.gif

Elinize saglik.Çok teşekkürler.
Cevapla
#16
(26-03-2018, Saat: 17:15)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlŞöyle basitinden bir örnek hazırladım sana. Yanlış anlamamışsam istediğin bu olduğunu değerlendiriyorum.


//Uses ExtCtrls; // veya Delphi XE için     vcl.ExtCtrls; 

Var
  ServerPanelleri : Array of TPanel;

procedure TForm1.PanelleriDuzenle();
Const
  iPad = 4;
Var
  aLeft, aTop : Integer;
  i : Integer;
begin
  aLeft := iPad;
  aTop  := iPad;
  for i := low(ServerPanelleri) to high(ServerPanelleri) do
  begin
    TPanel(ServerPanelleri[i]).Left := aLeft;
    TPanel(ServerPanelleri[i]).Top  := aTop;

    // Bir sonraki Panel için yer bakalım.
    Inc( aLeft, TPanel(ServerPanelleri[i]).Width + iPad );
    if (aLeft + TPanel(ServerPanelleri[i]).Width) > ScrollBox1.Width
    then begin
      aLeft := iPad;
      aTop  := aTop + TPanel(ServerPanelleri[i]).Height + iPad;
    end;
  end;
end;

procedure TForm1.YeniPanelEkle;
Var
  i      : Integer;
  SPanel : TPanel;
begin
  i := High( ServerPanelleri );
  // Yeni server için Array genişletmece...
  if i < 0 // hiç server tanımlı değil
    then i := 1
    else i := High( ServerPanelleri ) - Low( ServerPanelleri ) +2;

  SetLength( ServerPanelleri, i );
  TPanel(ServerPanelleri[i-1]) := TPanel.Create(self);
  With TPanel(ServerPanelleri[i-1]) do begin
    Parent := ScrollBox1;

    Width  := 100;
    Height := 50;
    Color  := clMaroon;
    ParentBackground := False;

  end;

  PanelleriDuzenle();
end;

procedure TForm1.ScrollBox1Resize(Sender: TObject);
begin
  PanelleriDuzenle();
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  YeniPanelEkle();
end;


mry4y1eevuk1crhlyiwf.gif



Elinize sağlık.
Cevapla
#17
Muharrem bey, tek tek panelleri eklemek yerine 200-300 tane paneli aynı anda eklemek için döngüye sokuyorum. Panelleri oluşturduktan sonrada "panelleriduzenle" procedure çağırıyorum. Aslında çok bir yavaşlama yok ama yine de panellerin tek tek eklenişi ekranda belli oluyor.(parlama efekti oluşturuyor)

Bunu hissettirmeden yapmanın yolu var midir?
Cevapla
#18
Cevap basit.
(1) Çoklu işlem sırasında Panelleri NİHAYETİNDE düzenlesin, vakit kaybetmesin diye YeniPanelEkle olayındaki  PanelleriDuzenle'Nin başına // remark koyalım.
(2) ScrollBox'un Visible özelliğini FALSE yapalım.
(3) Forma ekleyeceğimiz bir tane ProgressBar ile işlem akışını gösterelim
(4) İş bitince de ScrollBox'un Visible özelliğini yeniden TRUE ile eski haline getirelim.

Boş panel oluşu vb hesaba katarak butona basmak ile progressbar'ın yok olması için işlem tam (1) saniye dahi sürmüyor ( benim dizüstü bilgisayarda )

Bu işlemi Panelleri oluşturma aşamasında kullandık, benzerini panellerin yerleşimini değiştirirken de kullanabilirsiniz.


...
...
...
    Height := 50;
    Color  := clMaroon;
    ParentBackground := False;
  end;

//  PanelleriDuzenle();
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  i : Integer;
begin
  ScrollBox1.Visible := False;
  ProgressBar1.Min := 0;
  ProgressBar1.Max := 300;
  ProgressBar1.Visible := True;

  for i := 0 to 300 do
  begin
    ProgressBar1.Position := i;
    YeniPanelEkle();
  end;
  PanelleriDuzenle();
  ScrollBox1.Visible := True;
  ProgressBar1.Visible := False;
end;


Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#19
(03-04-2018, Saat: 13:44)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlCevap basit.
(1) Çoklu işlem sırasında Panelleri NİHAYETİNDE düzenlesin, vakit kaybetmesin diye YeniPanelEkle olayındaki  PanelleriDuzenle'Nin başına // remark koyalım.
(2) ScrollBox'un Visible özelliğini FALSE yapalım.
(3) Forma ekleyeceğimiz bir tane ProgressBar ile işlem akışını gösterelim
(4) İş bitince de ScrollBox'un Visible özelliğini yeniden TRUE ile eski haline getirelim.

Boş panel oluşu vb hesaba katarak butona basmak ile progressbar'ın yok olması için işlem tam (1) saniye dahi sürmüyor ( benim dizüstü bilgisayarda )

Bu işlemi Panelleri oluşturma aşamasında kullandık, benzerini panellerin yerleşimini değiştirirken de kullanabilirsiniz.


...
...
...
    Height := 50;
    Color  := clMaroon;
    ParentBackground := False;
  end;

//  PanelleriDuzenle();
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  i : Integer;
begin
  ScrollBox1.Visible := False;
  ProgressBar1.Min := 0;
  ProgressBar1.Max := 300;
  ProgressBar1.Visible := True;

  for i := 0 to 300 do
  begin
    ProgressBar1.Position := i;
    YeniPanelEkle();
  end;
  PanelleriDuzenle();
  ScrollBox1.Visible := True;
  ProgressBar1.Visible := False;
end;



Cevabınız için teşekkür ederim. 
ScrollBox1 gizleme özelliğini düşünmemiştim. Diğerlerini yapmıştım.
not: Benim bilgisayar emektar olunca 200 panel bende 3 sayiyeye yaklaşıyor Smile
Cevapla
#20
(26-03-2018, Saat: 17:15)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlŞöyle basitinden bir örnek hazırladım sana. Yanlış anlamamışsam istediğin bu olduğunu değerlendiriyorum.


//Uses ExtCtrls; // veya Delphi XE için     vcl.ExtCtrls; 

Var
  ServerPanelleri : Array of TPanel;

procedure TForm1.PanelleriDuzenle();
Const
  iPad = 4;
Var
  aLeft, aTop : Integer;
  i : Integer;
begin
  aLeft := iPad;
  aTop  := iPad;
  for i := low(ServerPanelleri) to high(ServerPanelleri) do
  begin
    TPanel(ServerPanelleri[i]).Left := aLeft;
    TPanel(ServerPanelleri[i]).Top  := aTop;

    // Bir sonraki Panel için yer bakalım.
    Inc( aLeft, TPanel(ServerPanelleri[i]).Width + iPad );
    if (aLeft + TPanel(ServerPanelleri[i]).Width) > ScrollBox1.Width
    then begin
      aLeft := iPad;
      aTop  := aTop + TPanel(ServerPanelleri[i]).Height + iPad;
    end;
  end;
end;

procedure TForm1.YeniPanelEkle;
Var
  i      : Integer;
  SPanel : TPanel;
begin
  i := High( ServerPanelleri );
  // Yeni server için Array genişletmece...
  if i < 0 // hiç server tanımlı değil
    then i := 1
    else i := High( ServerPanelleri ) - Low( ServerPanelleri ) +2;

  SetLength( ServerPanelleri, i );
  TPanel(ServerPanelleri[i-1]) := TPanel.Create(self);
  With TPanel(ServerPanelleri[i-1]) do begin
    Parent := ScrollBox1;

    Width  := 100;
    Height := 50;
    Color  := clMaroon;
    ParentBackground := False;

  end;

  PanelleriDuzenle();
end;

procedure TForm1.ScrollBox1Resize(Sender: TObject);
begin
  PanelleriDuzenle();
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  YeniPanelEkle();
end;


mry4y1eevuk1crhlyiwf.gif

Sayfayı kapatmadan Panelleri yok etmek istersen nasıl yapacaz? Yani stok listesi veya masa listesi var yenilemek gerekiyor yada tekrar listelemek.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  scrollbox'ta alfabetik sıralama arsl01 7 360 31-07-2018, Saat: 18:48
Son Yorum: arsl01



Konuyu Okuyanlar: 1 Ziyaretçi