Form Kullanımı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Form Kullanımı
Merhaba arkadaşlar
Proje içerisinde farklı yerlerde sürekli ihtiyaç duyduğum ekranlar oluyor. Bu ekranları tek bir form üzerinde PageControl üzerindeki sayfalara ekleyerek kullanıyorum. Bu formu proje create edildiğinde oluşturuyorum ve istediğimde hangi sayfadaki ekran lazım ise kullanıyorum. Fakat page üzerindeki sayfa sayısı gittikçe artıyor. Performan açısından bu şekilde kullanmak doğrumudur? (Formu her çağırdığımda sadece ilgili tablolar açılıyor, çıkışta kapatılıyor). Diğer seçenek ise her pagedeki elemanlar için bir form tasarlamak ve ihtiyaç duyulduğunda bu formu çağırmak.
Performans açısından sizin fikrinizi almak isterim.
Kolay gelsin
Proje içerisinde farklı yerlerde sürekli ihtiyaç duyduğum ekranlar oluyor. Bu ekranları tek bir form üzerinde PageControl üzerindeki sayfalara ekleyerek kullanıyorum. Bu formu proje create edildiğinde oluşturuyorum ve istediğimde hangi sayfadaki ekran lazım ise kullanıyorum. Fakat page üzerindeki sayfa sayısı gittikçe artıyor. Performan açısından bu şekilde kullanmak doğrumudur? (Formu her çağırdığımda sadece ilgili tablolar açılıyor, çıkışta kapatılıyor). Diğer seçenek ise her pagedeki elemanlar için bir form tasarlamak ve ihtiyaç duyulduğunda bu formu çağırmak.
Performans açısından sizin fikrinizi almak isterim.
Kolay gelsin
Re: Form Kullanımı
Merhabalar;
Ben ihtiyac anında unitlerden create edip kulanıyorum performansa etkisi pek gözle görülür derecede yok
Tavsiye ederim hocam .
Ben ihtiyac anında unitlerden create edip kulanıyorum performansa etkisi pek gözle görülür derecede yok
Tavsiye ederim hocam .
gideceği limanı bilmeyen gemiye hiçbir rüzgar yardım edemez...
Kod: Tümünü seç
Delete from hayat where cins="çıkarcılar"
Re: Form Kullanımı
Kod: Tümünü seç
Application.CreateForm(TFormYardimciPencere, FormYardimciPencere);
dpr dosyası içinden bu satır silerek otomatik create edilmesini iptal edeceksin. Proje açılırken form otomatik olarak yaratılmayacak.
Kod: Tümünü seç
TFormYardimciPencere.Create(Application).Show;
PostgreSQL - Delphi - Linux
Re: Form Kullanımı
selam,
Her defasında PageControl deki sayfaları visible false true yapmak yerine, üşenmeyin bence her birine form oluşturun, gerektiğinde create edip release yaparsınız, hem daha kolay anlaşılabilir olur projeniz bence. Her zaman kullandığım yöntem budur benimde.m_ekici yazdı:Merhaba arkadaşlar
Proje içerisinde farklı yerlerde sürekli ihtiyaç duyduğum ekranlar oluyor. Bu ekranları tek bir form üzerinde PageControl üzerindeki sayfalara ekleyerek kullanıyorum. Bu formu proje create edildiğinde oluşturuyorum ve istediğimde hangi sayfadaki ekran lazım ise kullanıyorum. Fakat page üzerindeki sayfa sayısı gittikçe artıyor. Performan açısından bu şekilde kullanmak doğrumudur? (Formu her çağırdığımda sadece ilgili tablolar açılıyor, çıkışta kapatılıyor). Diğer seçenek ise her pagedeki elemanlar için bir form tasarlamak ve ihtiyaç duyulduğunda bu formu çağırmak.
Performans açısından sizin fikrinizi almak isterim.
Kolay gelsin
Re: Form Kullanımı
Kod: Tümünü seç
for I:= 0 to cxPageControl1.PageCount - 1 do
begin
if I=SAYFA then cxPageControl1.Pages[I].TabVisible := true else
cxpageControl1.Pages[I].TabVisible := false;
end;
cxPageControl1.ActivePageIndex := SAYFA;
Re: Form Kullanımı
Her Input penceren ve Output penceren ayrı olursa formların kodları daha sade ve anlaşılır olur. Düzenleme yaparkende ilerde birşey eklemek değiştirmek istediğinizde de çok kolaylık sağlar.
Kullanım anında Create ve Free etmenizde performans açısından sadece kullanacağız zaman bellek kullanımı olacağı için. Bu şekilde kullanmak mantıklı. Diğer türlü proje ilk açılırken bütün formları veya ne kadar bilgi varsa hepsini create ederek belleğe dolduruyor böylece kullandığınız veya kullanmadığınız bütün bilgiler belleğe alınmış oluyor. Gereksiz gereksiz iş yükü.
Kullanım anında Create ve Free etmenizde performans açısından sadece kullanacağız zaman bellek kullanımı olacağı için. Bu şekilde kullanmak mantıklı. Diğer türlü proje ilk açılırken bütün formları veya ne kadar bilgi varsa hepsini create ederek belleğe dolduruyor böylece kullandığınız veya kullanmadığınız bütün bilgiler belleğe alınmış oluyor. Gereksiz gereksiz iş yükü.
PostgreSQL - Delphi - Linux
Re: Form Kullanımı
Form kullanımı ile alakalı tartışmanıza ben de küçük bir eklenti ile renk katmak isterim. Arkadaşların da bahsettiği üzere; uygulamanızda kullanacağınız form'ları sadece ihtiyacınız olduğunda Create edip işiniz bittiğinde Free etmeniz uygulama performansı açısından ideal bir davranış olur. Böylece uygulamanız daha az virtual memory kaplayacak ve virtual memory commit işlemleri daha hızlı olabilecektir.
Ekstra olarak; kendi uyguladığım bir sistemi sizlere de önerebilirim. Uygulamalarımda, ortak kullanım sahasına sahip olacağına inandığım formlarım var ise bu formları XForm adında taban bir formdan türetiyorum. Bu sayede, form'larım için bir ara katmanım oluyor. Uygulamamdaki tüm formları etkileyebilecek bazı güncellemeler gerektiğinde; gereken değişikliği XForm üzerinde yapıyor ve onlarca formda güncelleme yapmaktan kurtuluyorum. Aynı zamanda XForm'unuz için bir de ileride kullanılabilme ihtimaline karşı; bir interface tanımlayıp XFormumuzu bu interface'i implemente eder hale getirmemiz de faydalı olacaktır. Örneğin;
gibi.
Ekstra olarak; kendi uyguladığım bir sistemi sizlere de önerebilirim. Uygulamalarımda, ortak kullanım sahasına sahip olacağına inandığım formlarım var ise bu formları XForm adında taban bir formdan türetiyorum. Bu sayede, form'larım için bir ara katmanım oluyor. Uygulamamdaki tüm formları etkileyebilecek bazı güncellemeler gerektiğinde; gereken değişikliği XForm üzerinde yapıyor ve onlarca formda güncelleme yapmaktan kurtuluyorum. Aynı zamanda XForm'unuz için bir de ileride kullanılabilme ihtimaline karşı; bir interface tanımlayıp XFormumuzu bu interface'i implemente eder hale getirmemiz de faydalı olacaktır. Örneğin;
Kod: Tümünü seç
type
IFormInterface = interface
// Ctrl+Shift+G'ye basınız
end;
TXForm = class(TForm, IFormInterface)
protected
procedure LoadData; virtual; // Bu form'dan türeyecek formların veritabanlarından bilgi yükleyecekleri metod.
procedure SaveData; virtual; // Bu formdan türeyecek formların veritabanına kayıt yapacakları metod.
end;
Re: Gömülü (Embedded) Form Kullanımı
Formu uygulamanın başlangıcında bir kez oluşturup daha sonra hep aynı formu kullanmak bence iyi bir fikir değil. Mantıksal yapı olarak programın her birimi mümkün olduğunca diğer birimlerden bağımsız olmalıdır. Bu durumda her bir formun içerisindeki gömülü olan form da kendine ait olmalıdır. Hız sorununa çözüm olarak ise her şeyi form create edildiğinde oluşturmak yerine sadece o sekme (tab) tıklandığında gerekli formu oluşturdum. Böylece sekmek tıklandığında bir kez form oluşturuluyor. Sonraki işlemlerde ise sadece güncelleme yapılıyor. Bu sistem özellikle çok fazla sekmen varsa daha da yararlı olur.
Kod: Tümünü seç
unit Form1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QueryF, DB, ADODB, Menus, ImgList, ActnList, ComCtrls, DetaylarG;
type
TForm1 = class(TForm)
PageControl1: TcxPageControl;
TabSheetDetay: TcxTabSheet;
private
FormDetaylarG1: TFormDetaylarG;
public
end;
implementation
uses DataM;
procedure TForm1.FormCreate(Sender: TObject);
begin
FormDetaylarG1 := nil;
end;
procedure TForm1.PageControl1Change(Sender: TObject);
begin
inherited;
if PageControl1.ActivePage = TabSheetDetay then
begin
if FormDetaylarG1= nil then
begin
EmbedForm(Self, TFormDetaylarG, FormDetaylarG1, TabSheetGecmis);
end;
FormDetaylarG1.ADOQuery1.Close;
FormDetaylarG1.ADOQuery1.Parameters.ParamByName('MASTER_REFERANS').Value := ADOQuery1.FieldByName('REFERANS').AsInteger;
FormDetaylarG1.ADOQuery1.Open;
end;
end;
procedure TForm1.EmbedForm(AOwner: TForm; InstanceClass: TComponentClass; var Reference; AParent: TWinControl);
var
Instance: TComponent;
begin
Instance := TComponent(InstanceClass.NewInstance);
TComponent(Reference) := Instance;
try
Instance.Create(AOwner);
TForm(Instance).BorderStyle := bsNone;
TForm(Instance).Parent := AParent;
TForm(Instance).Align := alClient;
TForm(Instance).Constraints.MaxHeight := 0;
TForm(Instance).Constraints.MinHeight := 0;
TForm(Instance).Constraints.MaxWidth := 0;
TForm(Instance).Constraints.MinWidth := 0;
TForm(Instance).Show;
except
TComponent(Reference) := nil;
raise;
end;
end;
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
csunguray at netbilisim.kom
Net Bilişim Hizmetleri
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)