Merhaba arkadaşlar yardımlarınız için önceden teşekkür ederim.
Sorum : Bir form oluşturduğumuz zaman ve bu program çalıştırıldığında diyelimki kodlamayla bir button eklettik
Örnek : Program açıldı Yeni Ekle buttonuna bastık ve bir button eklendi. Bu bottunun adını vs vs diğer özelliklerini nasıl kaydedebilirim. Ve program kapanıp açıldığında aynı şekilde son halinde geri gelmesini nasıl sağlayabilirim. Bazı durumlar için SaveToFile kullanıyordum ama bu hepsi için olmuyor ne gibi bir yol ve komut türü izlemeliyim.
Form içeriği kaydedilebilirmi ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Form içeriği kaydedilebilirmi ?
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
-
- Üye
- Mesajlar: 163
- Kayıt: 11 Eki 2005 10:44
- İletişim:
Re: Form içeriği kaydedilebilirmi ?
Merhaba
TMemoryStream sınıfının WriteComponent ve ReadComponent metotlarını inceleyebilirsin.
Delphi yardımda örnek kodlar var.
TMemoryStream sınıfının WriteComponent ve ReadComponent metotlarını inceleyebilirsin.
Delphi yardımda örnek kodlar var.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Form içeriği kaydedilebilirmi ?
İstersen buradaki makaleye bir göz at -> viewtopic.php?f=19&t=18415
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Form içeriği kaydedilebilirmi ?
Makaleyi okudum güzel bir makale ve ışık tutucak bir kod örneği.sabanakman yazdı:İstersen buradaki makaleye bir göz at -> viewtopic.php?f=19&t=18415
Anladığım kadarıyla (makaleden yola çıkıyorum sorum için) save ve load yad write ve read için dfm dosyası kullanılması daha iyi olucak. Peki makaledeki örneğide inceledim lakin kafamda şu soru gelirdi yapmak istediğim için.
1 - Örnekteki real zamanda değişiklik yapmaya ve yüklemeye izin veriyor.
Create komutu ile forum üzerinde eklenen bir kontrol eklendikten sonra dfm dosyasına yazılıyormu ? (Exe bağımsız olduğu için dfm dosyası olmadanda bu metot çalıştığından yazmadığını düşünüyorum)
2 - Değişikliği yaptıktan sonra OcClose gibi yada OnExit gibi bir metotla Form kapatılırken foruma eklenmiş olan kontroller (Create komutu ile eklenen) dmf dosyasına yazdırabilirmiyiz.
3 - ikinci sorum eğer evetse ozaman açılan form'u (exe olarak açılan) dfm dosyasından load yaptırarak açabilirmiyiz.
Eğer yukarıdakiler olumlu ise save metoduyla dfm dosyasına değişiklikler kaydedilir ve load metoduyla açılışta dfm dosyası yüklenirse problem kalmaz. ?
Makale ComponentSaveToFile metodu ve bunun Load metodu bu işi yapabilirmi. ?
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Form içeriği kaydedilebilirmi ?
1-Örnekteki amaç ta zaten budur. Nasıl ki delphi formuna tasarımda eklenen bileşenler kayıt edildiğinde tekrar yüklenebiliyorsa aynı durum çalışma zamanında da geçerlidir. Yani bileşenler eklendikten sonra kayıt edilirse o kayda yeni eklenen bileşenler de gelecektir.
2-Bu konu sanırım dikkatinden kaçmış, makalede geçen ComponentSaveToFile (binary format) veya ComponentToString(text format) fonksiyonları bu iş için hazırlanmış kodlardır. ComponentToString ile elde edilen tasarımın kaydını Memo içerisine alabilir, oradan da bu bilgileri kayıt edebilirsiniz.
3-Haliyle ComponentLoadFromFile (binary format) veya StringToComponent kodları da bu durumu tersine çevirerek kayıtlı dosyada bulunan tasarımı formda oluşturacaktır.
Burada dikkat edilmesi gereken nokta bileşenlerin çalışma mantığına da hakim olmak ve dikkat etmek gerekmektedir. Ayrıca bu gibi durumlarda benim önerim, form üzerine ScrollBox gibi bir bileşeni tasarım amaçlı kullanmanız ve tüm tasarım bileşenlerinin sahibi olarak bu ScrollBox bileşenini kullanmanızdır (TLabel.Create(ScrollBox1); gibi). zaten TDesigner sınıfı da bunu sağlamak için değişik özellikler eklenmiş olan SrollBox'tan başka bir şey değildir. Makaleyi hazırladığım dönemde forum sitemizin dosya yükleme özelliği olmadığı için konu sadece anlatımla kaldı ama bulduğum bir boşlukta bir örnek hazırlayıp makaleye eklemeyi düşünüyorum. Sizin bu örneği beklemenize gerek yok, bizde işler hiç bitmez ama konu üzerine kafa yorarsanız ve değişik çalışmalar yaparak konu zamanla oturacaktır diye tahmin ediyorum. İyi çalışmalar.
2-Bu konu sanırım dikkatinden kaçmış, makalede geçen ComponentSaveToFile (binary format) veya ComponentToString(text format) fonksiyonları bu iş için hazırlanmış kodlardır. ComponentToString ile elde edilen tasarımın kaydını Memo içerisine alabilir, oradan da bu bilgileri kayıt edebilirsiniz.
3-Haliyle ComponentLoadFromFile (binary format) veya StringToComponent kodları da bu durumu tersine çevirerek kayıtlı dosyada bulunan tasarımı formda oluşturacaktır.
Burada dikkat edilmesi gereken nokta bileşenlerin çalışma mantığına da hakim olmak ve dikkat etmek gerekmektedir. Ayrıca bu gibi durumlarda benim önerim, form üzerine ScrollBox gibi bir bileşeni tasarım amaçlı kullanmanız ve tüm tasarım bileşenlerinin sahibi olarak bu ScrollBox bileşenini kullanmanızdır (TLabel.Create(ScrollBox1); gibi). zaten TDesigner sınıfı da bunu sağlamak için değişik özellikler eklenmiş olan SrollBox'tan başka bir şey değildir. Makaleyi hazırladığım dönemde forum sitemizin dosya yükleme özelliği olmadığı için konu sadece anlatımla kaldı ama bulduğum bir boşlukta bir örnek hazırlayıp makaleye eklemeyi düşünüyorum. Sizin bu örneği beklemenize gerek yok, bizde işler hiç bitmez ama konu üzerine kafa yorarsanız ve değişik çalışmalar yaparak konu zamanla oturacaktır diye tahmin ediyorum. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Form içeriği kaydedilebilirmi ?
@sabanakman
Bilgileriniz ve yardımınızdan dolayı teşekkür ederim. Makaledeki kodları yükleyip form olarak test ettim ilk aşamada. Kafamda direk sorduğum sorular belirdi çünkü memo'ya yüklenen dfm kodlarında Scrollbox'taki label1'in etiketini oradan değiştirdiğimde buttona bastığımda değişiyordu burayakadar çok güzel son buttonla bunları yükleyebiliyorum ama kaptıp açtığımda dfm kodlarıda formda aynı halde olmuyor sıfır ilk etaptaki gibi oluyordu bu yüzden bu soruları sorma gereksinimi duydum eksiklik olarak gördüm tekrar tekrar inceleyerek örnekler çkartıp olaya hakim olup kodları kavramaya çalışıcam. Gerçektente teşekkür ederim.
Son bir soru sormak istiyorum bu konu hakkında. Tasarımı içerisinde client oluşturabilicek bir formda yaptık. Yani bir studio yada generator diyebiliriz. Bununla olşturduğumuz kısımları client sade forma load etmek gerekiyor. Sorucağım kısım Seçilmiş Destroyer'leri kontrolleri kaydedip load edebilirmiyiz.
Bilgileriniz ve yardımınızdan dolayı teşekkür ederim. Makaledeki kodları yükleyip form olarak test ettim ilk aşamada. Kafamda direk sorduğum sorular belirdi çünkü memo'ya yüklenen dfm kodlarında Scrollbox'taki label1'in etiketini oradan değiştirdiğimde buttona bastığımda değişiyordu burayakadar çok güzel son buttonla bunları yükleyebiliyorum ama kaptıp açtığımda dfm kodlarıda formda aynı halde olmuyor sıfır ilk etaptaki gibi oluyordu bu yüzden bu soruları sorma gereksinimi duydum eksiklik olarak gördüm tekrar tekrar inceleyerek örnekler çkartıp olaya hakim olup kodları kavramaya çalışıcam. Gerçektente teşekkür ederim.
Son bir soru sormak istiyorum bu konu hakkında. Tasarımı içerisinde client oluşturabilicek bir formda yaptık. Yani bir studio yada generator diyebiliriz. Bununla olşturduğumuz kısımları client sade forma load etmek gerekiyor. Sorucağım kısım Seçilmiş Destroyer'leri kontrolleri kaydedip load edebilirmiyiz.
·•· Bilgi Güçtür ! Bu Gücü Hisset ! ·•·