programda aynı kodlara sahip bir kaç değişikliği olan formlarım var. bunlardan bir tane yapıp kopyalamak istiyorum. satış faturası,alış faturası gibi. formlar. kopyalama yapıp adlarını ve içindeki unitlerde adlarını değiştirdiğimde hata veriyor. kendi içinde kopyaladığım zaman ise kodlar yerine inherited geliyor. ben kodlarında olmasını istiyorum. bunun için ne yapabilirim.
iyi çalışmalar.
form kopyalama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: form kopyalama
Bir kaç şekilde yapabilirsin.
Rename yöntemi:
unsatis.pas ve unsatis.dfm dosyalarımız var.
unalisfat.pas olarak farklı kaydet diyoruz. Dfm de farklı kaydedilmiş oluyor. Eski dosyamız silinmez, ama ikisini aynı formda kullanamayız, çünkü formların name leri aynı, o nedenle farklı kaydet dedikten sonra, unalisfat daki formun isnini fmAlis olarak degistiriyoruz.
unsatis.pas dosyasi yine aynı yerde duruyor, ama project listesinde görünmeyecektir. Project listesindeyken add i tıklayıp, bu formu ekleyebiliriz. Dosya isimleri ve form name leri farklı oldugundan sorun çıkarmadan derlenecektir.
Parametre ile belirleme:
Tek bir formumuz vardır, forma bir tane boolean alan ekleriz. Bu alanı kontrol ederek, formun özelliklerini belirleriz.
Bu yöntem biraz daha ugraştırır görünse de aslında birinci yönteme göre daha avantajlıdır. Formlara yeni özellik katmak istersen veya hata düzeltmen gerekirse, tek yerde çalışırsın. İki tarafta da sürekli bu düzenlemeleri yapmak zorunda kalmazsın.
Son yöntem nesneye yönelik tasarımın nimetlerinde yararlanmadır. İskelet bir form hazırlarsın. Kayıt girişi, listelenemesi vs herşeyi bu formda tanımlarsın. Sadece formun dosya açarken ve bazı ayarları düzenlerken kullanılacak fonksiyonları virtual olarak tanımlarsın, bunları override edersin, ilgili formlarda sadece bu override ettigin kısımlarda degişiklik yaparsın. Yeni bir özellik eklediğinde her iki forma da eklenecektir. Nesneye yönelik tasarım yapmak zaman alır, ama hataları aza indirger ve çok daha saglıklı formlar hazırlamayı sağlar.
Rename yöntemi:
unsatis.pas ve unsatis.dfm dosyalarımız var.
unalisfat.pas olarak farklı kaydet diyoruz. Dfm de farklı kaydedilmiş oluyor. Eski dosyamız silinmez, ama ikisini aynı formda kullanamayız, çünkü formların name leri aynı, o nedenle farklı kaydet dedikten sonra, unalisfat daki formun isnini fmAlis olarak degistiriyoruz.
unsatis.pas dosyasi yine aynı yerde duruyor, ama project listesinde görünmeyecektir. Project listesindeyken add i tıklayıp, bu formu ekleyebiliriz. Dosya isimleri ve form name leri farklı oldugundan sorun çıkarmadan derlenecektir.
Parametre ile belirleme:
Tek bir formumuz vardır, forma bir tane boolean alan ekleriz. Bu alanı kontrol ederek, formun özelliklerini belirleriz.
Kod: Tümünü seç
TAlSatForm = class(TForm)
private
FAlsat : boolean;
procedure setAlsat(value:boolean);
....
property alismi : boolean read FAlismi write SetAlSat ;
end;
....
procedure TAlSatForm.SetAlsat(value: boolean);
begin
if FAlsat<> value then
begin
FAlsat:=value;
AlsatFormAyarlari;
end;
end;
procedure TAlsatForm.AlsatFormAyarlari;
begin
if FAlsat then // alis formu
begin
Caption:='Alış Formu ';
ibquery1:=' select * from alsat where tur = 1';
end else
begin
Captiıon:='Satış Formu';
ibquery1:=' select * from alsat where tur = 2';
end;
end;
Son yöntem nesneye yönelik tasarımın nimetlerinde yararlanmadır. İskelet bir form hazırlarsın. Kayıt girişi, listelenemesi vs herşeyi bu formda tanımlarsın. Sadece formun dosya açarken ve bazı ayarları düzenlerken kullanılacak fonksiyonları virtual olarak tanımlarsın, bunları override edersin, ilgili formlarda sadece bu override ettigin kısımlarda degişiklik yaparsın. Yeni bir özellik eklediğinde her iki forma da eklenecektir. Nesneye yönelik tasarım yapmak zaman alır, ama hataları aza indirger ve çok daha saglıklı formlar hazırlamayı sağlar.
Re: form kopyalama
Merhabalar ,
@emin_as' ın yöntemlerine ek olarak benimde benzer formlar için sıkça kullandığım bir diğer yöntem "Depoya Ekleme" yöntemidir,
Tasarım anında şablon olarak kaydetmek istediğiniz formunuzun her hangi bir yerinde sağ tıklayıp "Add to Repository" komudunu verin, formunuz vereceğiniz isimle birlikte delphi form şablonlarına eklenecektir, herhangi bir projenizde kullanmak için, New-->Other seçeneğini verip (Genelde) Forms sekmesinde yer alan depolanmış formları görebilir ve dilediğiniz kadar ekleyebilirsiniz. Örneğin "frmSablon" olarak depoya attığınız formdan projenize yeni bir tane eklediğinizde projenize "frmSablon1" olarak eklenecektir.
İyi çalışmalar.
@emin_as' ın yöntemlerine ek olarak benimde benzer formlar için sıkça kullandığım bir diğer yöntem "Depoya Ekleme" yöntemidir,
Tasarım anında şablon olarak kaydetmek istediğiniz formunuzun her hangi bir yerinde sağ tıklayıp "Add to Repository" komudunu verin, formunuz vereceğiniz isimle birlikte delphi form şablonlarına eklenecektir, herhangi bir projenizde kullanmak için, New-->Other seçeneğini verip (Genelde) Forms sekmesinde yer alan depolanmış formları görebilir ve dilediğiniz kadar ekleyebilirsiniz. Örneğin "frmSablon" olarak depoya attığınız formdan projenize yeni bir tane eklediğinizde projenize "frmSablon1" olarak eklenecektir.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr