Çok panelli tasarımların yönetimi nasıldır?

Başlatan z, 07 Aralık 2015, 13:10:38

z

#15
Panellerle çalışmaya devam etmeye karar verdim. Yalnız hala şu sorunu çözebilmiş değilim.

Forum üzerine iki ayrı yere panel koyalım.

Sonra penllerden birisini kısmen diğerinin üstüne taşıyalım.

Tasarım aşamasında mouse ile panellerden birisini tıklayıp sağ click yapıp control kısmında bring to front ya da send to back yapabiliyoruz.

Aynı işlemi runtime aşamasında nasıl yapıyoruz.

Panellerin visible özelliğine dokunmak istemiyorum hepsi visible olacak. Panelleri mili milime aynı ve üstü üste yerleştirip ekranda göstermek istediğimi en tepeye çıkartacağım.

Bunu nasıl yaparım?

EDIT

Boşu boşuna dert etmişim.

        panel1.BringToFront;
        panel2.SendToBack;

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

OG

#16
Panel dediğiniz nedir ben bilemedim,
VB de, buton, textbox gibi nesnelerden birden fazla sayıda nesneye "sınır koyan" Frame var.
Frame i sağa sola cekince içindeki nesneler de beraberce gider, yani frame e tabidir.
O frame  X-Y koordinat (Top-Left) başlangıçlarını ana forumun boyutunun dışına uçuracak değerler girebilirsiniz. İçindeki bütün nesneler alan dışına cıkacağından görünmez olur, ancak o olaydan önce aktif olan buton falan kalmamalı, enter deyince onu tıklar. Ayrıca tabstop u da kapatmak gerek.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

muhittin_kaplan

Guzel program yazmak ve hizli olmasini saglamak icin bu kotu bir yontem z hocam bilgin olsun. Sen panel frame vb kontrolleri sadece gorunmez yapiyorsun. Ama onlar hafizada hala duruyor. Mdi, child form yapisi kullanarak, her bir panel yerine bir form kullanarak istenilen yapilir. Mdi form uzerine konulacak bir menu ile istenilen child form acilir islem yapilir ve kapatilir.

z

#18
Programı yazıp bitirmem lazım.

Panel yerine birden fazla form ile de çalıştım ama ortalıkta birden fazla özellikle de sürüklenip gezebilen form istemiyorum.
Mesela ana form açıkken bir butona tıklayınca ortaya çıkan yeni bir form işime gelmiyor. Ama formlar birbirine kenetlenecek ve ortada tek form görünecekse olur.

Bir de şöyle bir sıkıntı var.

Panellerden birisindeki veri değiştimi tüm panellerdeki nesnelerin veri değerleri bu değişen veriden etkilenmek zorunda. Bu yüzden panellerin visible değeri ile de oynayamıyorum çünkü bazı nesneler görünmez iken sistem değer atamaya vs kızıyor. Şimdilik panelleri üstü üste yerleştirip aktif olanı en tepeye almakta buldum çareyi.

Gerçi çözümü vardır da neyse.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Bu panelleri üst üste dizmesi iyi de tasarım aşamasında altlardaki bir paneli en üste getirmek çok zahmetli.

Diyelimki altlardaki panele bir komponent ekleyip çıkaracağız.Ancak üstteki panelleri sağa sola itip istediğim panele ulaşabiliyorum.

Yok mu bunun basit bir  yolu.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

#20
Soldaki object inspector üzerinden panelin adı tıklanır. Forma baktığımızda Altta kalan panelin etrafında bir çerçeve olduğu görünecektir. bu çerçeve  ile panelin yerini anlarız. inspector üzerinden  panelin +sı tıklanır içindeki nesneleri seçebiliriz. Altta klan panelin çerçevesi  görünüyor.  fakat seçilen nesneler görünmüyor. ama nesnelerin olayları ve propertyleri object insepctor üzerinden ulaşılabilir.

bu kadarı işle yarar mı ki? Tasarım esnasında bu panelleri basamak gibi sıralamalı. program çalışırken orijinal konumlarına gelmesi için kod yazmalı.

boreas

@z hocam istersen müsait olduğunda teamviewer'dan bağlanıp sana delphi6'da page control'u göstereyim işini çözebilecek yegane bileşen o. Rahat rahat tasarımını yaparsın.

z

Delphi vs herşey proje makinemde ve o makine internete çıkmıyor hocam.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

Z hocam sana ilginç bir şey anlatayım mı? muhtemelen şaşarsın. Tasarım aşamasında yukarıdan bir nesne alıp form üzerine yerleştiriyoruz. O da ne? nesne kımıl kımıl kımıldıyor.  hareket bile edebilir icabında. bu durum tasarım aşamasında oluyor.   

ne işe yarar? orası ayrı konu. belki bu nesneyi ekleyince kendisi 1500 tane başka nesne ekleyebilir. öyle kallavi bir nesne yani :)

ByTEK

Hocam Ben tabcontrol kullanıyorum. lazarus ile örnek aşağıda. Butonlarla istediğim sayfayı etkin yapıyorum. bazı projelerde çalışma esnasında sekmeleri gizli yapıp butonlarla geçiş yapıyorum.

http://www.sercanca.com/wp-content/uploads/2015/12/pagecontrol.rar


------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
  pagecontrol1.ActivePage := tabsheet1;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
   pagecontrol1.ActivePage := tabsheet2;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
   pagecontrol1.ActivePage := tabsheet3;
end;
------------------------------------------------------------------


engerex

@z eğer invisible yaptığınızda hata alıyorsan ve back front yapıyorsan gizldikletini kullanımını disable yapman veya TAB controlünü kapatman gerekebilir. Klavyeden TABla gizlediğin bir bileşene ulaşılabilir.
Eğer mümkünse formları tasarım esnasında görebileceğin şekilde yan yana diz, FormCreate olayına hepsinin Left Right aynı noktaya çekersin ve formu boyutlandırırsın.

boreas

form create oalyında hata alır objeler henüz create olmamış durumdadır. Show ya da paint daha uygun. Ama esas sıkıntı anladığım kadarıyla tasarım anında pek çok panelle uğraşmak. Sağa sola çekip durmak onunda dediğim gibi ya farklı formlarda tasarımı yapıp ana formdan çağıracak ya da notebook, page control bileşeni gibi birşey kullanacak.

Yuunus


tunayk

Hocam işin asıl çözümü sizin her bir panel içinde yaptıklarınızı panel olarak değil de User Control olarak tasarlamanızdır.  Evet tab control de bir çözüm ancak tasarım zamanında her bir sayfanız ayrı bir form gibi görünür. Uygulama çalıştığında formda ilk olarak o User Controlu, formun controllerine eklerseniz ve pozisyonunu kod içinde ayarlarsınız.  Başka sayfaya gideceğiniz zaman mevcut kontrolü formdan çıkarıp yenisini eklerseniz. Bu şekilde özetlenebilir.  Arka planda hangi kontrolün gösterildiğini bildiğiniz için ona göre işlem yaparsınız.

engerex

edit1.visible := false yapıp içeriğini değiştirdiğimde bir hata almıyorum.
FormCreate Panel1 konumunu değiştirdiğimde bir hata almıyorum.