Profili Göster

Director MX 2004 ile Not Defteri Uygulaması

Murat Çorlu Tarih: 7/11/2005 Yorum: 0 adet

Okunma : 359 Tutanlar: Bu yazıyı 0 kişi tuttu.

Kullanıcılarına birşeyler üretme şansı verdiğiniz her uygulamanızda üretilen şeyin kaydedilebilmesi adeta bir esas olmuştur. Zira kaydedilemeyen uğraşlar kullanıcıyı uygulamadan soğutacaktır. En basitinden bir Not tutma aracı yaptığımızda kullanıcıya "Notunu burada yaz, sonra yazdığını not defterine kopyala, orada kaydet" gibi bir çözüm üretmekden bir programcı olarak utanç duymalıyız.

Tamam, kullanıcımızın uğraşını bir dosyaya kaydettik. Ama bir de şu kaydettiğimiz dosyayı çift tıklayarak uygulamamızda açtırabilsek hiç de fena olmazdı. Gelin kullanıcılarımızı bu dertten de kurtaracak bir çözüm üretelim…

Ne Lazım?

Bu çalışmada Director MX 2004 ve registry düzenlemek için BuddyAPI Xtra kullanacağız. Bu Xtra 2 fonksiyon kullanımına kadar ücretsiz. http://www.mods.com.au adresinden temin edebilirsiniz.

Önce Birkaç Teorik Bilgi

Windows’ta exe ve com uzantılı dosyalar hariç tüm dosyalar bir exe veya com uzantılı dosyayla ilişkilendirilerek çalışırlar. Örneğin doc uzantılı Word dosyalarımız, Word.exe uygulaması sayesinde çalışır. Biz günlüğüm.doc adlı bir Word dokümanımıza çift tıkladığımızda sistem word.exe uygulamasına çift tıkladığımız dokümanın tam yolunu göndererek çalıştırır. Yani çalıştırılacak dosya şöyle yazılmış olur: Word.exe d:\Belgelerim\gunlüğüm.doc Çalıştırılacak uygulama dosyasının adından sonraki bölüm (burada d:\Belgelerim\gunlüğüm.doc) komut satırı (commandline) olarak geçer. Word uygulaması çalıştığında komut satırını kontrol eder ve bir şey gönderilmişse onu çözümleyip dosyayı açar. Eğer biz de Director ile yaptığımız projektöre gönderilen bir komut satırı verisini okursak biz de bu yöntemi kullanabiliriz.

Ama bir dakika! Daha önce aklımıza takılacak bir sorun var; Windows doc uzantılı bir dosyaya çift tıklandığında Word uygulamasının açılacağını nereden biliyor? Bu bilgiler Windows’ta registry editor’de tutulur. Registry Editor Windows’un adeta kalbi gibidir. Registry konusuna çok detaylı girmeyeceğim, zira hem konumuz değil hem de sadece bu konudan onlarca ders çıkar. İşimizle ilgili bölümüne bakacak olursak, bütün dosya ilişkilendirmeleri Registry’de HKEYCLASSESROOT bölümünde tutulur. İsterseniz Başlat -> Çalıştır ‘a basıp çıkan pencereye regedit yazarak Registry Editor’ü inceleyebilir, HKEYCLASSESROOT’daki ilişkilendirmeye göz gezdirebilirsiniz. Ama hiçbirşeyi değiştirmemeniz konusunda sizi uyarıyorum.

Az Laf, Çok İş. İcraata Başlayalım

Amacımız basit bir not tutma aracı yapmak olsun. Boş bir Director uygulaması açalım. Ve ilk sprite’ımıza adı "MetinKutusu" olan bir field member’ı koyalım. Kutunun altına yazılarımızı kaydetmek için bir Kaydet butonu, son karenin FrameScript’ine de filmimizi orada bekletecek olan aşağıdaki kodu yazalım:

on exitFrame me
   go the frame
end

mmistanbul.com

mmistanbul.com

Öncelikle Kaydet düğmesinin kodunu oluşturalım. FileIO Xtra’sı (Director’un mevcut xtralarındandır) ile MetinKutusu’ndaki metni bir dosyaya kaydedecek kodumuz şöyle olacaktır:

on mouseUp me
   str = member("MetinKutusu").text
   fio = new(xtra "fileIO")
   fio.setFilterMask("Bizim Not Defteri,*.bnd")
   fn = fio.displaySave("Metni Kaydet...","not.bnd")

   if fn<>"" then
      fio.createFile(fn)
      fio.openFile(fn, 2)
      fio.writeString(str)
      fio.closeFile()
      fio = 0
   end if
end

Kodumuzu satır satır şu şekilde okuyabiliriz:

  • Bana tıklandığında… (Aslında mouse’un sol düğmesi benim üzerimdeyken basılıp bırakıldığında…)
  • MetinKutusu adlı elemanımızın içindeki metni str adlı değişkenimize ata
  • fio değişkenimizi bir FileIO nesnesi yap.
  • Bu satırda Kaydet penceresindeki varsayılan dosya formatını belirliyoruz. Ben bnd diye bir dosya uzantısı uydurdum. İstediğiniz uzantıyı Dosya Tanımı, *.uzantı şeklinde yazabilirsiniz.
  • Kaydet penceresini göster. Sonucunu fn değişkenine ata. Bu pencereden ya kaydedilecek dosyanın yeri ve adı ya da boş bir metin gelir. Boş gelmesi İptale basıldığı manasına gelir.
  • Eğer İptal’e basılmamışsa…
  • Pencerede verilen konum ve isimdeki dosyayı oluştur.
  • Aynı dosyayı aç.
  • Dosya içine str değişkenimizdeki metni yaz.
  • fio nesnesini kapat.
  • fio değişkenini nesne olmaktan çıkar.

Filmimizi çalıştırıp istediğimiz metni bnd uzantılı dosyalar olarak kaydedebiliriz. İlk aşama tamam, ancak Windows bizim bnd uzantımızı tanımadı doğal olarak. Dosyamız da aşağıdaki gibi görünüyor:

mmistanbul.com

Şimdi bnd uzantısını projemizle ilişkilendirecek kodu yazalım. Bir Movie Scipt oluşturup içine aşağıdaki kodu yazalım:


on prepareMovie()
   EditWindowsRegistry()
end prepareMovie

on EditWindowsRegistry()
   UygulamaYolu = the applicationPath & the applicationName & " %1"
   Yaz = baWriteRegString(".bnd", "", "BizimNotDefteri", "HKEY_CLASSES_ROOT")
   Yaz = baWriteRegString("BizimNotDefterishellopencommand", "",
   UygulamaYolu, "HKEY_CLASSES_ROOT")
end EditWindowsRegistry

Burada prepareMovie olayı yani filmin çalışmaya hazırlandığı an ve EditWindowsRegistry fonksiyonu var. Film çalışmaya hazırlanırken ilişkilendirmeyi yapmak için EditWindowsRegistry fonksiyonunu çalıştırıyoruz. Bu fonksiyonun kodunu şu şekilde okuyabiliriz:

  • UygulamaYolu değişkenine uygulamamızın bulunduğu klasör – Uygulamamızın adı ve " %1" metnini atıyoruz. Burada %1 Windows’un buraya çift tıklanan dosyanın yolu ve adını yazması için verilen bir komut.
  • BuddyApi Xtra’sının WriteReString fonksiyonu sayesinde, Registry’de "HKEYCLASSESROOT" bölümüne bnd uzantımız için BizimNotDefteri adlı bir dosya formatı oluşturuyoruz.
  • Yine WriteReString fonksiyonu sayesinde, BizimNotDefteri formatımızın aç komutuna UygulamaYolu değişkenimizdeki içeriği veriyoruz.

Uygulamamızı Projektör yapıp çalıştırırsanız, bnd uzantılı dosyalarımızın artık projektörümüzün ikonuyla göründüğünü ve çift tıklandığında uygulamamızın çalıştığını görürsünüz. Tabi çift tıklandığında komut satırındaki bilgiyi okuyan bir kod yazmadığımız için sadece uygulama çalışıyor şimdilik. Hadi sizi sıkmayayım da şu kodu da yazıp meseleyi mutlu sona erdirelim. Bu kodu da bir Movie Script olarak yazacağız. Yeni bir Movie Script oluşturarak içine aşağıdaki kodu yazınız:


on startMovie me
   if length(the commandLine) > 0 then
      fio = new(xtra "fileio")
      openFile(fio, the commandLine, 1)
      oku = readFile(fio)
      put oku into field "MetinKutusu"
      closeFile(fio)
      fio = 0
   end if
end

Kodumuzu satır satır okuyalım:

  • Filmimiz başladığında…
  • Eğer komut satırının uzunluğu 0 karakterden fazlaysa. Yani komut satırında bir değer varsa, yani bir dosya çift tıklanarak çalışmışsak… Komut satırındaki metni gördüğünüz gibi the commandLine ile alıyoruz.
  • Dosyayı aç.
  • Dosyayı oku ve içeriğini oku değişkenine ata.
  • oku değişkeninin içeriğini MetinKutusu field elemanının içine yaz.
  • Dosya bağlantısını kapat.
  • fio değişkenini nesne olmaktan çıkar.

Bitti Mi, Bitmedi

Sanırım mantığı çözdük. Aynı mantıkla uygulamalarımız tarafından oluşturulan dosyalarımıza güzel özellikler ekleyebiliriz. Şimdi dersin en önemli kısmındayız; "Ben bu bilgiyi işlerimde nasıl kullanırım?" sorusunun cevabını bulma aşaması…

Herkese kolay gelsin.

Kaynak Dosyaları:

Uygulama Kaynak Dosyası (.rar, 8 Kb)

Yazar Hakkında http://www.muratcorlu.com

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.


MMIstanbul Adobe UG MMIstanbul Adobe UG

adobe user group

ColdFusion, Flex, AIR, Flash, PDF, Dreamweaver, Fireworks, Photoshop, Illustrator, iNdesign, Premiere, Soundbooth, Lightroom, InCopy, JRun, LiveCycle, Acrobat, AfterEffects, Resmi Adobe Kullanıcı Grubu.

yeni üyelik | şifremi unuttum

aç-kapa Fuar CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT 2008 Bilişim Eurasia 7 - 12 Ekim 2008' de

CeBIT Bilişim Eurasia bu yıl 7 – 12 Ekim tarihlerinde düzenleniyor Adını dünyanın en büyük on fuarı arasına yazdırarak, İstanbul’u Avrasy...
Kategori: Fuar

aç-kapa Yarışma Altın SIM Kart Ödülleri

Altın SIM Kart Ödülleri

Altın SIM Kart Ödüllerinin bu yıl birincisi düzenleniyor. Üç ana kategorideki toplam 20 alt kategoride 200 adayın yarışacağı organizasyonun oylaması h...
Kategori: Yarışma

aç-kapa Fuar TBDGENC- GEEKZONE ETKİNLİGİ CeBIT DE

TBDGENC- GEEKZONE ETKİNLİGİ CeBIT DE

Türkiye Bilişim Derneği İstanbul TBDGENÇ Çalışma Grubu, bu yıl 07-12 Ekim tarihlerinde gerçekleşecek olan CeBIT Bilişim Eurasia Fuarın’da yer a...
Kategori: Fuar

aç-kapa Sempozyum Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008)

Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008)

Yazılım Kalitesi ve Yazılım Geliştirme Araçları Sempozyumu 2008 (YKGS 2008), yazılım mühendisliği alanında; kalite deneyimlerini, çözümlerini, yazılım...
Kategori: Sempozyum

aç-kapa Fuar Contemporary İstanbul Sanat Fuarı

Contemporary İstanbul Sanat Fuarı

Contemporary İstanbul Sanat Fuarı, 16-19 Ekim tarihleri arasında sanatseverlerle buluşacak. Bu yıl üçüncüsü düzenlenen fuar, İstanbul Lütfi Kırdar Ulu...
Kategori: Fuar

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 305 (2 kayıtlı, 303 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

coldfusion mysql ubuntu
 
sponsor adobe istanbul