Delphi 7 Proje Birleştirme ve Başa Dönme

Bu konuyu okuyanlar

webrettin

Müdavim
Katılım
16 Mart 2009
Mesajlar
1,676
Reaksiyon puanı
49
Puanları
48
Öncelikle tüm arkadaşlara merhaba. Sorunum yaptığım proje çok fazla form içeriyor ve aynısını yazıp ikisini birarada yazmak oldukça zor benim için ( 40 adet form ve yüzlerce label ve her formda onlarca image olduğunu düşünürsek hak verirsiniz :) ). Yaptığım projenin aynısı yine kendisiyle birleştirip ikincisinde küçük değişikliler yapmam ikisini tek proje gibi derlemem gerekli sizce bu mümkün mü?

2. olarak yazılım çalıştırılıp ilerlediğinde ilk çalışma değerlerinden oldukça uzaklaşmış oluyor ve başa dönmem gerektiğinde korku filmi gibi bir kod yumağı karşıma çıkıyor. Projemi başlangıç değerlerine getirmenin bir yolu var mı acaba?
 

evowinds

Müdavim
Emektar
Katılım
2 Kasım 2008
Mesajlar
9,100
Reaksiyon puanı
174
Puanları
63
1.Soruna cevap vereyim eğer yanlış anlamadıysam:
yaptığın projenin unitlerini kopyala ve takip edebileceğin şekilde kaydet. Daha sonra Projeye ekleme kısmından
bu unitleri seçersin ve onlarda tekrar projeye dahil olurlar ve istediğin değişiklikleri yapmış olursun.

2. sorun ise biraz karmaşık, ne demek istediğini anlayamadım. Biraz daha detaylı doneler verir misin?
 

webrettin

Müdavim
Katılım
16 Mart 2009
Mesajlar
1,676
Reaksiyon puanı
49
Puanları
48
1.Soruna cevap vereyim eğer yanlış anlamadıysam:
yaptığın projenin unitlerini kopyala ve takip edebileceğin şekilde kaydet. Daha sonra Projeye ekleme kısmından
bu unitleri seçersin ve onlarda tekrar projeye dahil olurlar ve istediğin değişiklikleri yapmış olursun.

2. sorun ise biraz karmaşık, ne demek istediğini anlayamadım. Biraz daha detaylı doneler verir misin?

ilginiz için teşekkürler.
1. cevabınızda unitlerin isimleri aynı olması sorun teşkil etmez değil mi?

2. ise örneğin tüm formlarda bulunan image nesneleri visible değerleri labellar projeyle çalışıldığında başlangıç anında ki durumundan uzaklaşıyor. Tekrar ilk ana gelebilmem için ya projeyi yeniden baştan başlatmam gerekecek ya hepsini yazmam ya da alternatif bir çözüm gerekli.
 

evowinds

Müdavim
Emektar
Katılım
2 Kasım 2008
Mesajlar
9,100
Reaksiyon puanı
174
Puanları
63
unitlerin ismi farklı olsun. takip edemezsin ve yanlış unit de değişiklik yapabilirsin. parametrik isimlendirme yap.

mesela unitaccount, uaccount, gibi. değiştirdiğin unit de unitaccountnew, uaccountnew, vs. değerler verebilirsin.

bunlar farazidir. ama hangisinin eski ve ilk hangisinin yeni ve sonradan gelen olduğunu karıştırmamak için önemli.

ikinci soruna gelirse, bir reset proceduru yaz. her nesnenin ilk hal özelliklerini ya cache de tut ya da bir ini
dosyasına kaydet veya registry'e.

reset butonu veya tetikleyici ne yaparsan bastığında bu procedure çalışır ve her nesnen veya istediğin şeyler ilk
halini alır. inşallah doğru anlamışımdır.
 

webrettin

Müdavim
Katılım
16 Mart 2009
Mesajlar
1,676
Reaksiyon puanı
49
Puanları
48
unitlerin ismi farklı olsun. takip edemezsin ve yanlış unit de değişiklik yapabilirsin. parametrik isimlendirme yap.

mesela unitaccount, uaccount, gibi. değiştirdiğin unit de unitaccountnew, uaccountnew, vs. değerler verebilirsin.

bunlar farazidir. ama hangisinin eski ve ilk hangisinin yeni ve sonradan gelen olduğunu karıştırmamak için önemli.

ikinci soruna gelirse, bir reset proceduru yaz. her nesnenin ilk hal özelliklerini ya cache de tut ya da bir ini
dosyasına kaydet veya registry'e.

reset butonu veya tetikleyici ne yaparsan bastığında bu procedure çalışır ve her nesnen veya istediğin şeyler ilk
halini alır. inşallah doğru anlamışımdır.

Teşekkürler bahsettğiniz çözümler işime yarayacak ama her nesneyi tekrar yazacak gibi görünüyor kaçarım yok :). programa kendisini bellekten atıp yeniden başlatmasını sağlatamaz mıyım?
 

evowinds

Müdavim
Emektar
Katılım
2 Kasım 2008
Mesajlar
9,100
Reaksiyon puanı
174
Puanları
63
nesneleri tekrar yazmana gerek yok, dfm dosyaları formların ve nesnelerin özelliklerini tutuyor zaten.

programı kapatıp tekrar başlatabilirsin. veri kaybı olabilir tabi projen ne ile alakalı bilmiyorum. onclose query ve onclose olaylarına gerekli konutları winexec fonksiyonuyla yazabilirsin. ama burada da programın hangi dizinde olduğunu bilmen gerekir.
 

_F_19o7_B_

Öğrenci
Katılım
10 Mart 2009
Mesajlar
32
Reaksiyon puanı
2
Puanları
0
Formları dinamik oluşturabilirsin.

Oluşturuken "TForm1.Create(Self);" Yöntemi,

Kapatırkende "Action := caFree;" diyerek her açtığında form yeniden oluşacağından bi problem çıkmayacaktır.
 

webrettin

Müdavim
Katılım
16 Mart 2009
Mesajlar
1,676
Reaksiyon puanı
49
Puanları
48
Teşekkürler arkadaşlar. Yardımlarınızdan gerçekten memnun oldum :)
 

_F_19o7_B_

Öğrenci
Katılım
10 Mart 2009
Mesajlar
32
Reaksiyon puanı
2
Puanları
0
Hatta bunu bi örnekle göstermek gerekirse

87512404.jpg
97710244.jpg
97710244.jpg
97710244.jpg
87512404.jpg


97710244.jpg



11890409.jpg



1.resim
Öncelikle Project > Options menüsünden kendinin oluşturacağı formları Avaible Forms: bölümüne taşıyosun

2.resim
procedure TForm1.Button1Click(Sender: TObject);
var
F : TForm3;
begin
F := TForm3.Create(Self);
F.DateTimePicker1.Date := now;
F.Edit2.Text := FormatDateTime('hh:nn',time);
F.ShowModal;
end;


Sayfayı oluşturma kodları. Oluşturacağın formdaki label'e ulaşmak için F.Label1.Caption komutunu kullanıyosun. Yani Oluşturulan-formun.labeli olarak açıklayabiliriz.

3.resim
Oluşturulan formun Close olayına Action := caFree; komutunu yazarak formumuzu sonlandırıyoruz.

Umarım anlaşılır olmuştur. Kolay gelsin.
 
Üst