Çalışma zamanı formda yapılan değişiklikleri kaydetmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Mustafa YILMAZ
Üye
Mesajlar: 14
Kayıt: 02 Oca 2008 04:55
Konum: İstanbul

Çalışma zamanı formda yapılan değişiklikleri kaydetmek

Mesaj gönderen Mustafa YILMAZ »

Bir form tasarladınız ve üzerinde edit, combobox, stringgrid, richedit vb. bileşenler olsun. Kullanıcı bu formda yer alan bilgileri doldurduktan sonra , daha sonra açmak üzere formu bu bilgilerle nasıl kaydedebilir. Buradaki bilgileri bir text dosyasına yazmak değil de, örneğin programın logosu ve forma verdiğiniz adla birlikte, bir exe dosyası gibi kaydetme işlemi nasıl yapılır (yani kullanıcı programa girip sonra kaydettiği yerden dosya bilgilerini çağırmak yerine, kaydettiği formu tıkladığında form kaydedilen veriler ile birlikte açılsın). İlgilenen herkese şimdiden teşekkürler.
kaank
Üye
Mesajlar: 31
Kayıt: 01 Oca 2008 10:58

Mesaj gönderen kaank »

(*.RES) resource kullanarak yapabilirsin detaylar için exe'ye data gömmek gibi konuları araştırırmısın txt veya data yapar gömersin
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Burada dinamik olarak yapılan bir tasarım söz konusu olduğundan tasarımı .exe ye kayıt etmemek gerekir. Zaten programcı tasarımları da .exe içine kayıt edilmektedir. Nasıl bir tasarım nasıl bir program ve kayıt yapısı söz konusu bilmem ama şu makaleye bir göz atılmasında fayda var diye düşünüyorum.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Kastettiğin eğer normal kayıt sistemi ise bunu veritabanı kullanarak yapabilirsin. Bu konuyu ele alan bir kitabı incelersen çok basit olduğunu görebilirsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

Mesaj gönderen kahraman1285 »

eğer dev express componentlrine sahipseniz.

TcxPropertiesStore diye bir component var istediğim tüm nesnslerin istediğin özelliğini ini dosyası yada registry'e kaydeder.

ardından form create olayında kayıtlı tüm özellikleri ayarlar.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Arkadaş tabloda kayıt tutmayı kastediyor gibime geldi. Basit bir DBEdit, DBCombo operasyonu tüm meseleyi çözecek ama konulara fazla yabancı şu anda. Bunu en iyi bir kitabı kullanarak bu olayı kavraması olacak.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Mustafa YILMAZ
Üye
Mesajlar: 14
Kayıt: 02 Oca 2008 04:55
Konum: İstanbul

Mesaj gönderen Mustafa YILMAZ »

Arkadaşlar, öncelikle gösterdiğiniz ilgiye teşekkür etmek istedim. Yaklaşık 6-7 aydır Delphi ile uğraşıyorum. Çalışma zamanı formu kaydetmekten ne demek istediğimi tam anlatabilmek için somut örnek vermem gerektiğini düşündüm. Örneğin word veya excel dosyası yaptıktan sonra, programdan Save veya Save As şeklinde ve bunlara isim vererek ayrı birer dosya olarak kaydedebiliyoruz. Bunları açmak için tıklandığında ise önce word veya excel açılıyor ve sonra bu bilgiler geri geliyor. Veya başka bir örnek vereyim. Mesela bir form üzerinde Adı-Soyadı, Doğum Tarihi, Mesleği, Yaptığı ödemeler vb. edit, combobox, richedit alanları olduğunu düşünelim. Kullanıcı programı çalıştırdı ve bilgileri girdi. Programda save düğmesine bastı ve bunu bir klasöre Ahmet diye kaydetti. İkinci kayıdı da Mehmet diye kaydetti vb. Bu kayıtlar aynı word, excel'deki veya benzer programlardaki gibi nasıl yapılmalı. Save butonu altındaki ve Load butonu altındaki kod nasıl düşünülmeli. Kaydedilen Ahmet ve Mehmet'i tıklayınca, program kaydedilen veriler ile nasıl açılabilir. Bunu şu şekilde halledebiliriz; verileri bir text veya data dosyasına bir prosedür ile kaydedip okutabiliriz. Ancak okuma işlemi için önce ana programı çalıştırmak, sonra bu program içinden Aç komutu ile dosyanın yerini göstermek vb. işlemler gerekir. Benim istediği kayıtların bulunduğu klasöre giderek kaydettiğim dosyaya tıklayayım ve program bu kayıttaki verilerle açılsın. Belki yanıt çok basittir ama bulamayınca insan deliriyor.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

2 ana aşamada işlem gerçekleştirilebilir.
1.si dosyaya verilerin nasıl yazılacağı
2.si dosyaya belirli bir uzantı verip bu uzantının sizin programınıza ait olduğunun windows a kaydettirilmesi

ben kendime ufak bi müzik çalar programı yapmıştım. müzik listesini aslında ini olan ama uzantısını farklı verdiğim bir dosyaya kaydettim. okuma yazma işlemleri ini yapısıyla kolayca halloluyordu.
bu uzantı için de programımı windowsa kayıt ettirdim. hatta ikon tasarlayıp onu da exe ye gömdüm ve dosya ikonu olarak onu kaydettim windowsa.

özetle dosya belirli bir formatta istenilen uzantıda kaydedilir, uzantı ve program windowsa kayıt edilir.

ini size uygunsa yazıp okuma (save-load) işlemleri için ini ye yazma ve okumaya bakabilirsiniz.
isterseniz text bazlı her satırda bir veri olacak şekilde yazar ona göre okursunuz.yok ben verimin direk olarak görünmesini istemem dersenz (text ve ini uzantısı farklı da olsa ntepadde falan açılacağından) binary yazar okursunuz. seçm size kalmış
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Mesaj gönderen barutali »

Mesela bir form üzerinde Adı-Soyadı, Doğum Tarihi, Mesleği, Yaptığı ödemeler vb. edit, combobox, richedit alanları olduğunu düşünelim. Kullanıcı programı çalıştırdı ve bilgileri girdi.

benim bu cümleden anladığım normal bi veritabanı işlemi @sabanakman hocamın dediği gibi bir kitap alırsan (zirvedeki beyinler hariç) işini görcektir..
yada burda arama kısmını kullanırsan da istediğin bir çok bilgiye ulaşabilirsin ...

Kolay Gelsin ...
amatör küme programcı :D
Mustafa YILMAZ
Üye
Mesajlar: 14
Kayıt: 02 Oca 2008 04:55
Konum: İstanbul

Mesaj gönderen Mustafa YILMAZ »

İşlem veritabanı işlemi değil. Veritabanı ile de bu kolayca yapılabilir ancak benim istediğim bu değil. unicorn64 doğru yöne yönlenmiş. İstediğim sanırım bu, sadece text veya ini dosyasına değil de, içeriği görünmeyecek ve program logosunu gösterecek şekilde olsun istiyorum. Bu şekilde kaydetme ve okum işlemini biraz daha açarsanız ve dosya yükleme okuma procedure veya fonksiyon örnekleri verebilirseniz çok sevinirim. Windows'a kendi programımız nasıl tanıtılır ve unicorn64'ün dediği gibi işlemler nasıl yapılır. Bu konuyla her arkadaşın eninde sonunda uğraşacağını bildiğimden diğer arkadaşlara da çok faydası olur diye düşünüyorum.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

forumda biraz daha arama yaparsan aslında kendinde bulabilirsin.

belirttiğin uzantıyı belirttiğin program için kaydetme:

Kod: Tümünü seç

procedure RegisterExtension(const sExt, sDesc, AppPath: string);
  begin
    with TRegistry.Create do
      try
        RootKey := HKEY_CLASSES_ROOT;
        if OpenKey(sExt, True) then begin
          WriteString('', sDesc);
          CloseKey;
        end;
        if OpenKey('\' + sDesc, True) then begin
          WriteString('', sDesc);
          CloseKey;
        end;
        if OpenKey('DefaultIcon', True) then begin
          WriteString('', AppPath + ',' + IntToStr(0));
          CloseKey;
        end;
        if OpenKey('\' + sDesc + '\Shell\Open\Command', True) then begin
          WriteString('', '"' + AppPath + '" "%1"');
          CloseKey;
        end;
      finally
        Free;
      end;
  end; 
kullanımı

Kod: Tümünü seç

 RegisterExtension('.bmc', 'Boncuk Müzik Çalar, Application.ExeName);
kullanıma dikkat edersen ben direk exe yolunu verdim. bu mesela program files da kurulmuş olan bi program için doğrudur ancak exe yolu değişirse sıkıntı olacktır ona dikkat et.

binary okuma yazmayla ilgili de forumda bi arama yap. şuan biraz yoğunum 5 dk sigara molasında yazıorum bu mesajı da...
Cevapla