[ Previous document | Content Table | Next document ]
Bu belgede mavi olarak yazılan kısımlar tarafımdan ilave edilmiştir. İngilizce olarak bilinmesi faydalı olan terimlerin yanına mavi yazıyla türkçesi yazılmıştır.
OpenOffice.org Basic macro ve Dialoglarını yaratmak ve düzenlemek için destek sunar. Belgenin devamında OpenOffice.org Basic programlama ortamının kullanımını yada kısaca Basic IDE'sini göreceğiz.
Kısım 11.1 OpenOffice.org Basic ve Dialogları - OpenOffice.org Basic ile ilk adımlar OpenOffice.org Basic UNO Programları yazılması için gerekli adımları anlatan bir kılavuzdur..
Kısım 11.2 OpenOffice.org Basic ve Dialogları - OpenOffice.org Basic IDE OpenOffice.org Tümleşik Geliştirme Ortamı (IDE) bir kılavuz bölümüdür. Aşağıdaki konuları açıklar;
Basic and dialog kütüphanelerini düzenlemek için kullanılan dialog kutularını.
Basic IDE penceresininin işlevleri: Basic macro düzenleyici ve debugger (hata tesbit ve giderimi) veDialog düzenleyici .
Olaylara makro atamasının yapılması
Kısım 11.3 OpenOffice.org Basic and Dialoglar - OpenOffice.org Basic Features of OpenOffice.org ile tümleşik Basic programlama dilini tanımlar,
OpenOffice.org Basic genel dil özellikleri hakkında bilgi sunar.
Kısım 3.4.3 Profesyonel UNO - UNO Dili ile bağlanma - OpenOffice.org Basic UNO API'si ve UNO diline nasıl bağlanılabileceği izah edilmiştir
OpenOffice.org Basic'in JAVA gibi başka dillerden önemli farklılıklarını izah eder.
Kısım 11.4 OpenOffice.org Basic and Dialoglar - İleri düzey kütüphane düzenleme Basic kütüphane sisteminin Basic makroları ve dialoglarını nasıl sakladığını ve yönettiğini izah eder. Bu kütüphanelere ve kütüphane elemanlarına kullanıcıların uygun arabirimlerle nasıl ulaşabileceğini açıklar.
Kısım 11.5 OpenOffice.org Basic and Dialoglar - Dialog ve Dialog Kontrolleri ile programlama Dialog düzenleyisinde dialog yaratmak için kullanılan araç takımı kontrollerini açıklar. Bu kısımda çeşitli form kontrolleri ve özellikleri detaylı olarak açıklanmıştır.
Kısım 11.6 OpenOffice.org Basic and Dialoglar - Dialogların çalışma anında yaratılması UNO Dialoglarının çalışma anında dialog düzenleyici kullanmadan nasıl yaratılacağını izah eder. Bu UNO bileşenlerinden nasıl gelişmiş formlar yaratılabileceğini görmek açısından yararlıdır. Kısım 11.5 OpenOffice.org Basic and Dialoglar - Dialog ve Dialog Kontrolleri ile programlama bölümünü geliştirerek araç takımı arabirimini daha anlaşılabilir kılar.
Kısım 11.7 OpenOffice.org Basic and Dialoglar - Kütüphane dosyası yapısı Basic IDE tarafından kullanılan çeşitli dosyaları ele alır.
Kısım 11.8 OpenOffice.org Basic and Dialoglar - Kütüphane yerleşimi Bir lokal yada paylasımlı OpenOffice.org kurulumunda Basic kütüphanelerinin otomatik olarak yerleşimini ele alır.
Bu kısım Basic IDE'sini geliştiricilerin kullanmasını sağlayan bir öğreticidir. Basic IDE'sinde bir program yazmak ve hata gidermek (debug) için gerekli adımları ve bir Basic iletişimi dizaynını açıklar. Bütün araçlar ve seçenekler için tam bir referans 11.2 OpenOffice.org Basic and Dialoglar - OpenOffice.org Basic IDE. kısmında Standart kütüphane içinde bir modül yaratılması bahsinde bulunabilir.
Yeni bir Writer belgesi yaratın ve kaydedin, örneğin, FirstStepsBasic.odt.
Araçlar – Makrolar – Makroları düzenle – OpenOffice.org Basic Tıklayın.
OpenOffice.org Basic Makroları iletişim kutusu görülür. Makrodan listesi makro depolarından gelen makro Basic kodlarını gösterir. Burda daima Makrolarım ve OpenOffice.org Makroları container'ları depoları ve her yüklenmiş olan belge için bir basic kütüphanesi vardır.
Yukarıdaki örnekte sadece FirstStepsBasic.odt belgesi yüklenmiş olduğu görülmektedir. Bu nedenle, Makrolarım, OpenOffice.org Makroları ve FirstStepsBasic.odt Container'ları depoları görülmektedir. Makrolarım ve FirstStepsBasic.odt container depolarının her ikiside Standard olarak adlandırılan bir kütüphane içerir.OpenOffice.org Makroları container deposu openofis kurulumuyla gelen kütüphaneleri içerir ki bunların çoğuda auto pilot'dur. Uygulamanın Standard kütüphaneleri ve tüm açık belgelerin kütüphaneleri daima yüklenirler. İletişim penceresinde seçilebilir durumdadırlar. Diğer kütüphaneler uygulamada kullanılmadan önce yüklenmelidirler.
Kütüphaneler asıl Basic kaynak kodu içeren modüllere sahiptir. Şimdi ikinci adımımızda ise kaynak kodumuz için FirstStepsBasic.odt belgemizin Standard kütüphanesinde yeni bir modül yaratacağız.
Makrodan listesinde FirstStepsBasic.odt gelin.
Belgenin altındaki Standard'ı seçin ve yeni düğmesine basın.
OpenOffice.org Module1 adıyla yeni bir modül yaratmak isteyip istemediğinizi soran bir iletişim kutusu çıkaracaktır.
Kabul etmek için tamama basın.
Basic kaynak düzenleyicisi Main adlı bir Sub (subroutine) içeren bir pencereyle açılır. Subrutin bir program kümesindeki alt programdır işlenmesi bitince ana programa döner .
Basic düzenleyici durum çubuğunda Main sub'ının FirstStepsBasic.Standard.Modul1 bir parçası olduğu görülür. Şayet Basic düzenleyici menüsünde Araçlar – Makrolar – Makroları düzenle – OpenOffice.org Basic'i seçerseniz. FirstStepsBasic.odt belgesinin Standard kütüphanesi altında Module1 adıyla modül yaratılmış olduğunu görürsünüz.
Şayet Makrodan liste kutusunda bir modül seçilirse, Sağdaki listede sub ve fonksiyonlar görülür, su anda Sub main görülmektedir. Bir sub yada yada fonksiyon seçiliyken Düzenle düğmesi tıklanırsa Basic düzenleyici pencereyi açar ve seçilmiş olan sub yada fonksiyon gösterilir.
Aşağıdaki kaynak kodu Basic düzenliyici penceresine girin. Bu örnek kullanıcıya bir grafik dosyasının yerini sorar ve belgemizde imlecin bulunduğu yere ekler. Daha sonra bu örnek grafik ekle auto pilot'u ( Sihirbaz )olarak geliştirilecektir.(BasicAndDialogs/FirstStepsBasic.odt)
Sub Main
' Grafik dosyasını kullanıcıya sor _ işareti satırın devam etmekte olduğunu gösterir
sGraphicUrl = InputBox("Please enter the URL of a graphic file","Import Graphics","file:///")
if sGraphicURL = "" then ' Kullanıcı iptal'e bastı
exit sub
endif
' document modeline ulaşım için
oDoc = ThisComponent
' Dökumanının metin servisine ulaşmak
oText = oDoc.getText()
'Belge servis sağlayıcı grafik nesnesi örneği oluştur.
' create an instance of a graphic object using the document service factory
oGraphicObject = oDoc.createInstance("com.sun.star.text.GraphicObject")
' Grafik URL adresini ayarla
oGraphicObject.GraphicURL = sGraphicURL
' Şu anki imleç konumunu getir ve ondan bir metin imleci yarat
oViewCursor = oDoc.getCurrentController().getViewCursor()
oCursor = oText.createTextCursorByRange(oViewCursor.getStart())
' Şu anki imleç konumuna grafiği ekle
oText.insertTextContent(oCursor.getStart(), oGraphicObject, false)
End Sub
Şayet bir kelime için yardım istiyorsanız metin imleci kelimenin üzerinde iken F1 tuşuna basın. OpenOffice.org online yardımı Basic dili için yardım desteği içerir.
oDoc = ThisComponent ile başlayan satır ile document modeline ulaşılır, ve biz OpenOffice.org Basic UNO tümleşimini kullanırız. ThisComponent Basic kodundan bir Document modeline ulaşım için kullanılan kestirme yoldur. Daha önceden FirstStepsBasic.odt belgesinde module1'i yaratmış olduğumuz için Basic kodu FirstStepsBasic.odt belgesi içine gömülmüştür.Makrolarım deposunda global bir kütüphane değildir, ve dolayısıyla Thiscomponent FirstStepsBasic.odt document modelini temsil eder.
|
|
Document kütüphanelerinin dışında şu anki belgeyi getirmek için ThisComponent veya StarDesktop.CurrentComponent yöntemini kullanın. Şayet açık olan bir belgeye ulaşmak istiyorsanız şu anki belge olmasa dahi StarDesktop.Components üzerinde bileşenleri enumarate yapmalısınız ( sıralamak listelemek )yinelemelisiniz. Bu bileşenlerin URL özelliklerinin kontrolü için aşağıdakine benzer bir kod lazımdır : oComps = StarDesktop.Components oCompsEnum = oComps.createEnumeration()
while oCompsEnum.hasMoreElements() oComp = oCompsEnum.nextElement() ' Sadece URL özelliği olan bileşenler not all desktop components are necessarily models with a URL if HasUnoInterfaces(oComp, "com.sun.star.frame.XModel") then print oComp.getURL() endif wend |
|
Programın debug edilmesi için imleci oDoc = ThisComponent satırına getirin ve makro çubuğunda Breakpoint ikonunu ( Kesme noktası ) tıklayın. | |
|
Makro çalıştır ikonunu yüklü olan modülün ilk sub'ını çalıştırır. ve uygulama ilk breakpoint'de durur. | |
|
Single Step ( İçine bas) ikonu ile program adımlama modu ile yürütülür. | |
|
Makrolar ikonu ile ilk makrodan başka bir makroda yürütülebilir. Bunun için; OpenOffice.org Basic Makrolar iletişiminde isteğiniz modüldeki istenilen makroyu seçtikten sonra çalıştır düğmesine basın . |
Debug sırasında Basic değişkenlerinin değerlerini izlemek için Basic düzenleyici İzle alanında bir değişken ismi girin ve enter tuşuna basın. Ya da fare imleci ile değişkenin üzerine gelindiğinde ipucu olarak o değişkenin değeri görülebilir. Örneğimizde sGraphicUrl and oGraphicObject değişkenlerini izlemeye alıyoruz:
Artık Çalışma anında OpenOffice.org 2.0 Basic debugger ile UNO nesnelerinide incelemek mümkündür.
Bir Makro özelleştirilmiş ikonlarla, menü girişi ile, klavye kısayolları ile resim gibi belge nesneleri ile veya belge olaylarıyla gibi yöntemlerle çalıştıtılabilir.Tüm bu girişlerin ayarlanması Makro iletişimindeki Ata butonuna basarak Özelleştir iletişiminde düzenlenebilir. Ya da Araçlar - Özelleştir menü komutuyla ayarlanabilir.
Main Sub'ına araç çubuğu ikonu atamak için, Araçlar - Özelleştir yoluyla açılan özelleştir iletişiminde Araç çubukları sekmesini açın Araç çubukları sekmesi aşağıdaki görünür:
Araç çubukları sekmesinde Ekle düğmesine basın. Komutekle iletişimi ortaya çıkar Kategori listesinde OpenOffice.org Makrolarını seçerek FirstStepsBasic.odt listesini genişletin. FirstStepsBasic.Standard.Module1 seçildiğinde komullar listesi Sub Main için bir Main girişini gösterir. Ekle düğmesine basarak araç çubuğuna eklersiniz..
Artık belgemizde örnek makromuzu çalıştırabiliriz.
Kısım 11.2.3 OpenOffice.org Basic and Dialoglar - OpenOffice.org Basic IDE - GUI olaylarına makro atanması Kullanıcı arabiriminde makronuzun ulaşılabilir olması için diğer seçenekleri açıklar..
Basic IDE'sinde bir iletişim kutusu yaratmak için, Basic kaynak kodu düzenleyicisinde pencere altında bulunan Module1 sekmesi üzerinde sağ tıklayın ve Ekle - Basic İletişimi 'ni Dialog1 adlı yeni bir pencer açar:
|
Formumuza komut düğmesi, seçenek düğmesi gibi kontrol elemanlarının ilavesi için iletişim dizayn araçlarına ihtiyaç duyarız. Kontrol ekle ikonuna tıklayarak açılır pencerede kontrolleri görüp seçebiliriz. Eğer araç kutusu pencere başlığından tutulup çalışma alanına sürüklenirse pencere daima açık olarak kalır. |
İlk örnekte olduğu gibi sadece basit bir girdi kutusuyla çalışan iletişim yerine iletişimi bir dosyayı seçmek için kullanıcıya daha kullanışlı bir şekle getirebiliriz. Ekstra olarak kullanıcı resim ekledikten sonra resimin nereye sabitleneceğini kontrol edebilir. Bunun için iki adımlı bir sihirbaz iletişimi yaratacağız.
|
Araç kutusu penceresinde Dosya seçimi ikonunu seçin. Form üzerinde sol tıklayıp sürükleyerek dosya seçimi öğesinin yerini ve boyutlarını belirleyin. | |
|
Özellikler ikonu özellikler iletişimini görüntüler böylece kontrolleri düzenleyebilir, ayrıca iletişim sırasında meydana gelen olaylar için gerekli olan kodları yazabiliriz. | |
|
Sonra, << Back ve Next >> Düğmelerini iletişim adımları arasında gezilebilmesi için ekleyin, ve bir Finish ve Cancel düğmesi ekleyin. Düğme ikonunu seçin ve sol fare düğmesini kullanarak düğme boyutunu ayarlayın. Düğmeler CommandButton1 gibi öntanımlı metinlerle etiketlenmiştir. Şayet özellikler iletişim penceresi açılmaz ise yeni oluşturulmuş olan düğmeyi çift tıklayarak açabilirsiniz. yeni etiket alanında düğme etiketlerini girin. İsim alanı kontrolün program tarafından bilinen adıdır ve görüntülenen isim ile alakası yoktur aynı şekilde Back ve next tuşlarını adlandırın. and name the dialog step buttons Back and Next . << Back düğmesi için etkin özelliğini evet olarak ayarlayın. Basic dilinde çalışma zamanında nesne.enabled=false olarak ulaşılır. düğme etiketini değitirmek için CommandButton1.label="Cancel" tekniği kullanılır. | |
|
Etiket aracını kullanarak bir etiket ekleyin.. "Select Graphics File" gibi. |
Şimdi form aşağıdaki örnekteki gibi görünür:
|
Formu Araç kutusunda bulunan Test kip açık/kapalı ikonu ile test edebilirsiniz. Testiniz bittiği zaman Formun kapat düğmesine basarak yada form başlığında kapata basarak kapatabilirsiniz. |
İletişimi düzenlemek için; örneğin etiketi klikleyin kontrolün dış sınırında yeşil tutamaklar oluşur böylece kontrolü taşıyabilir veya etiketini değiştirebilirsiniz. Yeşil tutamaklarla kontrolü yeniden boyutlandırabilirsiniz. Özellikler iletişim penceresi iletişimin başka özelliklerini de ayarlamaya yarar. ileşimi bu buradn boyutlandırabilr. konumlandırabilirsiniz.
Şimdi formu açmak ve düğmelere işlev kazandırmak için gerekli kodları yazacağız. createUnoDialog() nesnesinin execute() metodunu kullanarak bir formun görüntülenmesini sağlarız. Bir form iletişim nesnesi yaratarak formumuzu görüntüleyebiliriz endExecute()metodu ile de formumuzu kapatır ve işleyişine son veriririz.
|
|
Finish ve Cancel düğmesi için düğme türünü Cancel (İptal) olarak ayarlamakla formu kapatmakta mümkündür. Execute metodu Cancel için 0 OK için 1 değeri ile geri döner. |
GUI elemanlarına işlevsellik kazandırmak için Sub'lar geliştirin ve bunları GUI elemanlarına bağlayın. Formumuzdaki düğmele işlev kadandırmak için Basic IDE Penceresi altında bulunan Module1 sekmesine tıklayın. Aşağıdaki sub kodlarını Sub main üstüne kopyalayın. Private değişken oDialog Subların dışında tanımlanmıştır. Formumuzun yüklenmesinden sonra Module1'deki bütün Sub ve fonksiyonlar tarafından erişilebilir olması sağlanmıştır. (BasicAndDialogs/FirstStepsBasic.odt)
Private oDialog as Variant ' private, module-wide variable Variant değişkenler bir nesneyi sayıyı yada metini tutabilir aynı değişkene çeşitli tipler aktaracaksak yararlıdır
Sub RunGraphicsWizard
oDialog = createUnoDialog(DialogLibraries.Standard.Dialog1)
oDialog.execute
End Sub
Sub CancelGraphicsDialog
oDialog.endExecute()
End Sub
Sub FinishGraphicsDialog
Dim sFile as String, sGraphicURL as String
oDialog.endExecute()
sFile = oDialog.Model.FileControl1.Text
' Bir FileControlu sistem yolu içerir ve dosya URL'si haline çevrilmesi gereklidir
' Bu nedenle ConvertToURL Basic fonksiyonu kullanıyoruz
sGraphicURL = ConvertToURL(sFile)
' Grafik ekle
' Document modeline eriş
oDoc = ThisComponent
' Document metin servisine eriş
oText = oDoc.getText()
' Belge servis sağlayıcı grafik nesnesi örneği oluştur (document service factory)
oGraphicObject = oDoc.createInstance("com.sun.star.text.GraphicObject")
' Grafik URL'sini ayarla
oGraphicObject.GraphicURL = sGraphicURL
' GUI'de şuanki imleç pozisyonunu getir ve ondan bir metin imleci yarat
oViewCursor = oDoc.getCurrentController().getViewCursor()
oCursor = oText.createTextCursorByRange(oViewCursor.getStart())
' Grafik nesnesini imleç konumuna ekle
oText.insertTextContent(oCursor.getStart(), oGraphicObject, false)
End Sub
Sub Main
...
End Sub
Cancel düğmesini seçin ve özellikler iletişim penceresinde olaylar sekmesine tıklayın. Başlatırken form alanındaki sağ taraftaki Makro ata iletişiminde (...) düğmesine tıklayın. FirstStepsBasic.odt.Standard.Module1, CancelGraphicsDialog yordamını seçin ve ekle düğmesini tıklatarak düğmemize yordamı bağlayın
Finish düğmesi içinde aynı yöntem kullanılarak FinishGraphicsDialog yordamı ile ilişkilendirin.
Son adımda iki sayfalı küçük bir AutoPilot yaratacağız.. The OpenOffice.org Formları Autopilot sayfaları için basit bir işlem anlayışına sahiptir. Dialogdaki Her form ve her kontrol sayfa kontrolü için Page (Step) Adım özelliğine sahiptir. Normal olarak iletişimler sayfa 0'da olurlar fakat başka bir sayfa olarak ayarlanabilirler, örneğin sayfa1 Sayfa1'deki Tüm kontrolleri sadece sayfa1de görüntülemek için Adım 1 değerine sahip olmalıdr. Aynı şekilde kontollerin sayfa2'de görüntülenmesi için 2 değeri olmalıdır.Şayet Form Sayfa0'da ise tüm kontroller görüntülenir. Bir kontrolün sayfa özelliği 0 olarak ayarlanmışsa tüm form sayfalarında gözükür.
Böylece ikinci bir sayfa yaratılması için kullanılır. Ctrl Tuşuna basılı tutarken Label ve filecontrol elemanlarını klikleyerek ikisini de seçin. Özellikler iletişiminde Page Sayfa(Basamak) özelliği için 1 değerini girin ve enter tuşuna basarak değişimi uygulayın. Form dış çerçevesini tıklatarak özellikler iletişimini açın Page değerini 2 olarak girin ve enterleyin. Label ve filecontrol kaybolur çünkü şimdi sayda2'deyiz. Sadece düğmeler sayfa0 da oldukları için görüntülenir.
Sayfa2'de, "Anchor" adlı label etiket ekleyin ve iki adet option buttons seçenek düğmesi ekleyin"Etiket için "at Paragraph" ve "as Character"belirleyin. "At paragraph" için State Durum alanında toggle etkin olarak belirleyek varsayılan olarak bu seçeneğin seçilmesini sağlayın. Yeni kontroller otomatik olarak Page sayfa 2 özelliğini alırlar. Page2 bittiğinde Dialog'u 1 olarak ayarlayalım. Çünkü uygulamanın başlangıcında 1 numaralı sayfayı istiyoruz.
Aşağıdaki Sub'lar << Back and Next >> düğmeleriyle çalışması gereken yordamlardır. FinishGraphicsDialog yordamı kullanıcı tarafından seçilen yeni grafiği dosyaya eklemek içindir. GUI'de Page (Step) olan özellik. API'de step (BasicAndDialogs/FirstStepsBasic.odt)
Sub BackGraphicsDialog
oDialog.Model.Step = 1
oDialog.Model.Back.Enabled = false
oDialog.Model.Next.Enabled = true
End Sub
Sub NextGraphicsDialog
oDialog.Model.Step = 2
oDialog.Model.Back.Enabled = true
oDialog.Model.Next.Enabled = false
End Sub
Sub FinishGraphicsDialog
Dim sGraphicURL as String, iAnchor as Long
oDialog.endExecute()
sFile = oDialog.Model.FileControl1.Text
' State = Selected corresponds to 1 in the API Seçilmiş ise State = 1 değerine sahiptir
if oDialog.Model.AsCharacter.State = 1 then
iAnchor = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
elseif oDialog.Model.AtParagraph.State = 1 then
iAnchor = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
endif
' Dosya seçimi kontrolü bir sistem yolu ile döner ve onu dosya URL'si ne çevirmeliyiz
' Bunun için MakeFileURL fonksiyonu kullanırız
sGraphicURL = MakeFileURL(sFile)
' Belge modeline erişim temini
oDoc = ThisComponent
' Belge metin servisini al
oText = oDoc.getText()
' Belge servis sağlayıcı grafik nesnesi örneği oluştur (document service factory)
oGraphicObject = oDoc.createInstance("com.sun.star.text.GraphicObject")
' Grafik URL'sini ayarla
oGraphicObject.GraphicURL = sGraphicURL
oGraphicObject.AnchorType = iAnchor
' GUI'de Şu anki imleç pozisyonunu al ve metin imleci yarat.
oViewCursor = oDoc.getCurrentController().getViewCursor()
oCursor = oText.createTextCursorByRange(oViewCursor.getStart())
' Gfafiği matin başına ekle
oText.insertTextContent(oCursor.getStart(), oGraphicObject, false)
End Sub
Bu bölüm OpenOffice.org Basic tümleşik geliştirme ortamının (IDE)bütün özelliklerini açıklar. Basic ve Dialog kütüphanelerinin nasıl yönetileceğini, Basic IDE'sindeki araçlarla Basic makrolarının ve dialoglarının kullanımı anlatılacaktır, ve olaylara Basic makroları atanması için çeşitli yöntemler değerlendirilecektir.
Kütüphane yönetimine kullanıcı ara biriminde ana giriş noktası Araçlar - Makrolar - Makroları düzenle - OpenOffice.org Basic menü elemanıdır. Bu seçenekle OpenOffice.org Basic Makroları dilog kutusunu açarki bu dilogda kullanıcı Basic Ve Dialoglarla ilgili tüm operasyonları yürütebilir.
Aşağıdaki resim örnek bir Makro dialoğunu gösterir. Buradan makroları çalıştırabilir, yaratabilir, çalıştırabilir, silebilir, UI olaylarına makro atayabilir ve Basic Kütüphaneleri,ve modüllerini yönetebilirsiniz..
Makrodan ağaç görünümü kısmı dialoğun açılmış olduğu andaki tüm kütüphane yapısını gösterir. OpenOffice.org Kütüphane organizasyonu (düzenleyici) hakkındaki detaylar için 11.4 OpenOffice.org Basic and Dialogs - Advanced Library Organization kısmına bakın...
Bu dialogda Basic yada Dialog kütüphaneleri arasında ayrım gözetilmezken Kütüphane düzenleme API'sinde farklı olarak uygulanır.
|
|
API kullanarak Sadece Basic yada dialog kütüphaneleri hazırlamak mümkün olmasına rağmen bu kullanım normal değildir. Çünkü grafiksel kulanıcı arabirimi sadece Basic ve Dialog kütüphanelerinin eş zamanlı olarak yaratılmasına izin verir. ( 11.2.1 OpenOffice.org Basic and Dialogs - OpenOffice.org Basic IDE - Basic ve Dialog Kütüphaneleri - Macro Düzenleyici Dialoğu kısmına bakın ) Bununla birlikte, dialog sade Basic veya sade Dialog olarak dağıtılabilir, but they are not marked in any way. |
Makrodan ağacı üç kademeli bir yapı olarak görüntülenmir:
Library container -> library -> library element Kütüphane deposu -> Kütüphane -> Kütüphane elemanı
Üst seviye node'ları düğümler Basic ve dialog kütüphane container'ını temsil eder. ( My Macros and OpenOffice.org Macros Nodes Makrolarım ve Openoffice.org makroları ). Açılmış olan her bir belge için, belgenin Basic and dialog kütüphane container'ı görüntülenir. ( 11.4 OpenOffice.org Basic ve Dialoglar - Gelişmiş kütüphane yönetimi kısmına bakın). Örnekte Description.odt adlı bir metin belgesi ve Calculation.ods adlı Calc belgesi olarak iki belge açılmıştır.
İkinci seviye Node'da her eleman bir kütüphaneyi gösterir. İlkin Standard olarak adlandırılan varsayılan kütüphaneler haricindeki tüm kütüphaneler yüklenmemiş ve gri görünümlüdür. Kütüphaneyi yüklemek için kullanıcı kütüphane ismini çift tıklamalıdır. Yukardaki örnekte Makrolarım kök elemanı Standard kütüphanesini içerir varsayılan olarak yüklenmiştir.
Ağacın üçüncü seviyesinde yüklenmiş kütüphaneler görünür durumdadır. Her node bir kütüphane elemanını temsil ederki bunlar modül yada dialog olabilirler.OpenOffice.org Basic Makroları dialogunda sadece basic modulleri kütüphane elemanı olarak görüntülenir, bu iletişimde dialoglar görünmez. Bir kütüphaneye çift tıklamayla kullanıcı kütüphanenin modüllerini genişletip gizleyebilir. Örnekte Makrolarım/Standard kütüphanesi açılmış olarak görülmektedir. Module1 ve module2 olarak iki modül içermektedir. Description.odt belgesi module1 adlı basic modülü olan standard kütüphanesi bulundurmaktadır. Calculation.ods basic module'u olmayan bir Standard kütüphane içermektedir. Tüm kütüphaneler dialog içerseler bile bu görünümde dilog kütüphaneleri görülemez.
Eğer bir kütüphane şifre korumalı ise ve kullanıcı onu yüklemek için çift tıklatırsa, Şifreyi soran bir iletişim görünecektir. Kütüphane kullanıcı doğru şifreyi girdiğnde yüklenecek ve görüntülenecektir.Bir şifre korumalı kütüphane API kullanılarak yüklenirse, örneğin BasicLibraries.loadLibrary("Library1") çağrısıyla, yüklendiği gibi gösterilir Grileştirilmemiş olarak. Fakat doğru şifre girilene kadar ağaç görünümü açılıp içi görülemez. ( 11.4 OpenOffice.org Basic and Dialogları - Gelişmiş kütüphane yönetimi).
Orta sütun (düzenleme alanı) makrolar hakkında bilgileri görüntülerki bunlar seçilmiş olan modüle ait Sub ve Fonksiyonların listesidir. Makro adı bulunan Düzenleme alanında bir sub veya fonksiyon seçilebilir. Şayet Makrodan iletişim kutusunda herhangi bir modül seçilmemişse düzenleme alanı ve liste boş kalır. İstenilen adı düzenleme alanına yazabilirsiniz.
OpenOffice.org Basic Makrolar dialoğunun sağ tarafında aşağıda listede tanımlanan çeşitli komut düğmeleri vardır:
Run Çalıştır
Makro adı düzenleme alanında gösterilen
Sub yada Fonksiyonu çalıştırır. Makro çalıştırılmadan Makrolar dialoğu
kapatılır.
Close Kapat
OpenOffice.org Basic
Makrolar dialoğunu başka herhangi bir
eylem yapmadan kapatır.
Assign Ata
Araçlar - Özelleştir menüsündende açılabilen
Özelleştir dialoğunu açar. Bu iletişim Opens the Customize dialog that can
also be opened using Tools - Customize. Bu
Dialog olaylara makro atanması için de kullanılabilir.ayrıntılar için
aşağıdaki 11.2.3
OpenOffice.org Basic and Dialoglar - OpenOffice.org Basic IDE - GUI olaylarına
Makro atanması'na bakın.
Edit Düzenle
Basic makro düzenleyiciye seçilmiş olan
Modulü yükler. İmleç seçilmiş olan Makro veya fonksiyonun adının bulunduğu ilk
satıra yerleştirilir. Ayrıntılar için aşağıdaki Kısım 11.2.2
OpenOffice.org Basic and Dialogları - OpenOffice.org Basic IDE - Basic IDE
Penseresi 'ne bakın. şayet hiç bir modül yada yordam seçilmemişse
bu düğme etkin değildir.
Delete Sil
Bu düğme var olan bir Sub yada fonksiyon
makro adı alanında görüntüleniyorsa etkindir ve delete düğmesi burda
görüntülenen Sub yada fonksiyonu siler.
New Yeni
Bu düğme var olan bir Sub yada fonksiyon
makro adı alanında görüntülenmiyorsa etkindir ağaçta seçilmiş olan module
içine yeni bir Sub ekler. Yeni sub şayet makro adı alanında isim
yazıyorsa bu adla boş ise varsayılan olarak Macro1, Macro2 gibi adlarla
otomatik olarak adlandırılır.
Organizer Düzenleyici
Bu komutla Takip eden kısımda
anlatılan OpenOffice.org Basic Makro Düzenleyici dialog kutusu açılır.
Help Yardım
OpenOffice.org yardımını makrolar
başlığı altından başlatır.
Bu dialog OpenOffice.org Basic Makroları iletişiminde düzenleyici düğmesine basılarak açılır.Dialog kutusu Modüller, kütüphaneler ve Dialoglar sekmelerine sahiptir. Basic makroları iletişimi sadece kütüphaneler içindeki modülleri gösterebiliyorken Bu iletişim kutusu kütüphane sistemine module, dialog ve kütüphane seviyesinde ulaşır.
OpenOffice.org Basic Makro Düzenleyici Modüller sekmesi aktif olduğunda tüm modüller görüntülenir.Modül etiketli liste Makro Dialogundaki Makrodan listesi ile benzerdir. Fakat OpenOffice.org uygulama ve belge kütüphanelerinin tam bir hiyerarşisini içerir. Kütüphaneler çift tıklamayla yüklenebilir, açılabilir. ve ağac görünümü kapatılabilir. Şekilde Modul1 ve Module2 modüllerine sahip uygulama kütüphanesi Standard görüntülenmektedir.
|
|
Yukarıdaki sunumda iki belgenin yüklenmiş olduğu görülmektedir. Description.odt belgesinin module1 modülüne sahip bir standard kütüphanesi görülmektedir. Calculation.ods belgesinde modüle sahip olmayan bir başka Standard kütüphanesi de görülmektedir.
Aşağıdaki listede ileişimdeki komut düğmelerinin fonksiyonlarını açıklar:
Edit Düzenle
Ağac görünümünde seçilmiş olan modülü
basic makro düzenleyiciye yükler. Herhangi bir modül seçili değilse düğme
etkin değildir.
Close Kapat
OpenOffice.org Basic Makrolar
dialoğunu başka herhangi bir eylem yapmadan kapatır.
New Module
Yeni Modül
Kullanıcının yeni modül için
modül adı yazabildiği bir iletişim açar. Ad alanı module<sayı> şeklinde
görüntülenir. Örneğin Module1 ve Module2. Tamam düğmesine basarak modül
listesine yeni modülü ilave edebilirsiniz. Seçilmiş olan kütüphane yazma
korumalı ise Yeni modül düğmesi pasiftir.
Delete Sil
Şeçili olan modülü siler.Modül seçilmemişse
ya da modül yazma korumalı bir kütüphanenin ise bu düğme pasiftir.
OpenOffice.org Basic Makro Düzenleyici Dialog ( İletişim Öğeleri )sekmesinin seçilmesiyle Dialog sayfası görüntülenir. Şekilde uygulama Standard kütüphanesinin Dialog1, Dialog2 ve Dialog3 adlı üç diyaloga sahip olduğu görülmektedir.
Şekilde Calculation.ods adlı belgenin Dialog1 adlı bir diyalog içerdiği görülmektedir.Calculation.ods belgesinin herhangi bir diyalog'u olmadığı görülmektedir.
Takip eden listede komut düğmelerinin açıklaması yapılmıştır:
Edit
Düzenle
Ağaçtan seçilmiş olan dialog'u yükler.
Aşağıdaki 11.2.2
Basic and Dialoglar - Basic IDE - Basic IDE Penceresi - Dialog
Düzenleyici kısmında daha detaylı olarak açıklanmıştır. Şayet bir
dialog seçilmemişse düğme etkin değildir.
Close Kapat
OpenOffice.org Basic
Makro düzenleyici iletişimini kapatır
.
New Dialog
Yeni Pencere
Kullanıcının yeni form için
isim verebildiği iletişimi açar. İsim alanında ilk olarak Dialog<Sayı>,
Dialog1 ve Dialog2 gibi bir ad görünür.Tamam düğmesine basılmasıyla dialog
listesinde dialog yaratılır.Seçim yazma korumalı bir kütüphane ise bu düğme
etkin değildir.
Delete Sil
Seçili olan Diyalogu siler.Bu düğme bir
dialog seçili değilse veya yazma korumalı bir kütüphanede bulunan dialog ise
etkin değildir.
OpenOffice.org Basic Makro düzenleyici iletişiminin Kütüphaneler sekmesi seçildiğinde Aşağıdaki resimler görülmektedir. İletişim penceresinde uygulama ve belge kütüphaneleri ayrı olarak listelenmektedir. Kütüphane listesinde sadece konum liste kutusunda seçilmiş olan Kütüphane container'ının kütüphaneleri görüntülemektedir. İkinci resimde My Macros & Dialogs Makrolarım ve pencerelerim OpenOffice.org Macros & Dialogs OpenOffice.org Makrolerı & Dialogları ve şu anda açılmış olan belgelerdeki girişleri görüntülemektedir.
Kütüphaneler aşağıdaki mantıkla listelenir:
Standard kütüphaneler siyah olarak görüntülenir.
Yazma korumalı kütüphaneler grileştirilmiş olarak görüntülenir.
Kütüphanenin Konumu, URL temsilinin(file://, HTTP:// gibi)sonuna kütüphane yolu eklenerek gösterilir. Yukardaki örnekte Standard ve Library1 haricindeki kütüphane yolları sadece okuma modundadır.
Şifre korumalı kütüphaneler adından önce bir anahtar resmi ile temsil edilirler. Örneğimizde sadece Library1 şifre korumalıdır.
Bir kütüphane üzerine iki kez tıklanırsa (çift tıklama değil) kullanıcıya kütüphane ismini değiştirme imkanı sağlanır.
Aşağıdaki liste komut düğmelerini açıklar:
Edit Düzenle
Kütüphane liste kutusunda şeçilmiş olan
kütüphanenin ilk modülünü Basi düzenleyiciye yükler. (Aşağıdaki 11.2.2
Basic and Dialogları - Basic IDE - Basic IDE Penceresi - Basic Kaynak
düzenleyici ve Debugger bölümüne bakın). Şayet kütüphane sadece
dialoglara sahipse Dialog düzenleyici penceresinde ilk Dialog açılır(Aşağıdaki
11.2.2
Basic and Dialogları - Basic IDE - Basic IDE Penceresi - Dialog
Düzenleyici bölümüne bakın). Şayet Basic/Dialog düzenleyici
penceresi açık değilse bu pencere açılır.
Close Kapat
Her hangi bir ekstra işlem yapmaksızın
OpenOffice.org Basic Makro
Düzenleyici dialog'unu kapatır.
Password Şifre
Aşağıdaki şekilde görülen seçilmiş olan
kütüphane için şifre değiştirme iletişimini açar.
Bu iletişim şayet bir kütüphane şifre korumalı ise şifresini değiştirmek için kullanılır. Önce eski şifreyi girip, sonra da yeni şifreyi iki kez girmek gerekir.
Kütüphane şifre korumalı değilse, Eski şifre alanı etkin değildir.Yeni şifre iki kez yazılarak girilebilir. Tamam düğmesine basıldığında iki şifre de aynıysa şifre koruması etkinleşir.
New Yeni
Kullanıcının yeni kütüphane için isim
verebildiği iletişimi açar. İsim alanında ilk olarak Library<Sayı>,
Library1 ve Library2 gibi bir ad görünür.Tamam düğmesine basılmasıyla
kütüphane yaratılır ve kütüphane listesine eklenir. Yeni bir kütüphane daima
Basic ve dialog kütüphanesi olarak yaratılır.
Append Sonuna ekle
Bu düğme ekstra kütüphanelerin
seçilmiş olan kütüphane container'ına getirilmesi için kullanılır. Düğmeye
tıklanması ile açılan dosya iletişiminde kullanıcı getireceği kütüphanenin
yolunu ve ismini seçer. Aşağıdaki listede görülen dosya tipleri
seçilebilir:
Kütüphane container'ı indeks dosyaları (script.xlc veya dialog.xlc)
Kütüphane indeks dosyaları (script.xlb veya dialog.xlb)
OpenOffice.org belgeleri (örneğin *.odt, *.ods,*.sxw, *.sxc, *.sdw, *.sdc)
Star Ofis 5.x ve eski sürüm Basic kütüphane dosyaları (*.sbl)
Bir dosya seçildikten sonra Kütüphane ekle iletişimi görüntülenir. Aşağıdaki şekilde bir kütüphane indeks dosyası olan script.xlb seçildikten sonraki iletişim penceresi görülmektedir. İletişim seçilmiş olan dosyadaki bütün kütüphaneleri listelemektedir. Örneğimizde sadece Euro kütüphanesi görünmektedir, çünkü . script.xlb dosyası sadece bu kütüphaneyi temsil etmektedir.
Seçenekler kısmındaki onay kutusu seçiliyse bir kütüphanenin sadece oku modundaki bir linkle eklendiğine işaret eder. varolan aynı isimli kütüphaneler yeni bir kütüphane ile değiştirilirler.
Devam eden şekilde LibraryImportExample writer belgesi seçildikten sonraki iletişim görüntülenmektedir. Bu belge Standard, Library1, Library2 ve Library3 adlı dört kütüphaneye sahiptir. Library1 ve Library2 eklenmek için seçilmiş durumda gözükmektedirler Insert as reference (read-only) seçeneği pasiftir.çünkü belge içinde bulunan kütüphaneler köprü olarak refere edilemezler. Ayrıca StarOfis 5.x Basic kütüphane dosyaları da bağlanamazlar.
Tamam düğmesine basılarak seçilmiş olan basic ve dialog kütüphaneleri kütüphane container'ına eklenir.
Delete Sil
Kütüphane liste kutusunda Seçili öğeyi siler.
Eğer öğe bir kütüphane yolunu gösteriyorsa sadece link silinir. Sil
düğmesi bir standard kütüphane seçiliyse pasiftir. Çünkü Standard kütüphaneler
silinemez.
IDE esas olarak Basic IDE penceresi ile temsil edilir. IDE iki farklı moda sahiptir:
Basic düzenleyici modunda Debugging işlemi ve debugger çıktılarının kontrol edilmesi için Basic kaynak kod modüllerini görüntüler ve düzenler
Dialog düzenleyici modunda formlar görüntülenir ve düzenlenir.
Basic kaynak kodu ve formlar asla aynı anda görüntülenmezler. IDE penceresi Basic düzenleyici veya debugger veya dialog düzenleyicinin içindedir. Aşağıdaki şekilde uygulama Standard kütüphanesindeki module2'yi görüntüleyen Basic düzenleyici modundaki Basic IDE penceresi görülmektedir.
IDE penceresi Basic ve Dialog düzenleyici modu için genel olan kontrol elemanları aşağıda açıklanmıştır. Moda özel olan kontrol öğeleri karşılık gelen alt kısımlarda açıklanmıştır. 11.2.2 Basic and Dialoglar - Basic IDE - Basic IDE Penceresi - Basic kod Düzenleyici ve 11.2.2 Basic ve Dialoglar - Basic IDE - Basic IDE Penceresi - Dialog Düzenleyici:
Ana araç çubuğundaki Yazıcı ikonuna tıklayarak herhangi bir yazıcı iletişim kutusu görmeden halihazırda görüntülenen modül veya form yazıcıya direk olarak yazdırılır.
Ana araç çubuğundaki Kaydet ikonu IDE penceresinde görüntülenen kütüphaneye göre iki farklı şekilde davranır.
Şayet kütüphane bir uygulama kütüphane container'ına ait ise Sakla düğmesi bütün düzenlenmiş uygulama kütüphanelerini kaydeder.
Kütüphane bir belgeye ait ise, Kaydet düğmesi belgeyi kaydeder.
Araç çubuğunun sol tarafında bulunan kütüphane liste kutusu şu an için görüntülenen kütüphanenin adını gösterir. Kullanıcı görüntülenen kütüphaneyi bu listeden seçerek değiştirebilir. Yukarıdaki örnekte ([My Macros & Dialogs].Standard) uygulama Basic Standard kütüphanesi görüntülenmektedir. Liste kutusu hali hazırda erişilebilir durumda olan bütün uygulama ve belge kütüphanelerini içerir. Kullanıcı bunlardan birini seçerek Kütüphaneyi IDE penceresinde görüntüleyebilir.
IDE penceresinin altında bulunan sekmeler aktif kütüphanedeki bütün modülleri ve formları gösterir.Bu sekmeleri tıklayarak ilgili modül veya form açılabilir. Gerekliyse IDE penceresi Basic düzenleme modundan form moduna yada tam tersine döner. Sekmeye sağ tıklamayla içerik menusu açılır:
Insert Ekle yeni bir modül veya dialog eklemek için bir alt menüyü açar.
Delete Sil onaylama sorgusu sonucunda aktif formu veya dialog'u siler .
Rename Yeniden adlandır aktif modül veya formun adını değiştirir.
Hide Gizle aktif modül veya formu görünmez yapar. Gizlenen modül veya form sekmelerde görünmez ve etkinleştirilemez. Basic Makroları veya Basic Makro Düzenleyici iletişimi edit Düzenle düğmesi ile aktifleştirilip düzenlenebilir .
Modules Modüller Basic Makro Düzenleyici iletişimini açar .
Durum çubuğu aşağıdaki bilgileri görüntüler:
Soldaki ilk hücrede aktif modülün veya formun tam adı görüntülenir. LibraryContainer.LibraryName.<ModuleName | DialogName> KütüphaneDeposu.Kütüphaneİsmi.<Modülİsmi | Dialogİsmi> .
İkinci hücrede bir asterisk "*" görüntülenirse, Aktif kütüphane container'ında en azından bir kütüphanenin değiştirildiği ve kaydedilmesi gerektiğini gösterir.
Üçüncü hücrede Basic düzenleyici penceresindeki imlecin yeri görüntülenir.
Dördüncü hücrede Basic düzenleyici ekleme modunda ise "INSRT" "EKLE" üzerine yaz modunda ise "OVER" "ÜZR" görüntülenir. Modlar arası geçiş İnsert tuşuyla olur.
Kullanıcı bir Sub yada fonksiyonu düzenlerken, Basic düzenleyici ve debugger penceresi görüntülenir. Bu modda, düzenleyicinin ana penceresi, değişkenlerin değerlerini görüntülemek için debugger watch İzleme penceresi, Basic call stack'ını (çağrı yığıtı) görüntülemek için Debugger Call Çağrılar: penceresi mevcuttur. Watch ve Call pencereleri sadece Basic programı çalışıyorken makro debugger tarafından durdurulmuşsa kullanılır.
Düzenleyici genel editor işlevlerine sahiptir. Düzenleyici sadece OpenOffice.org Basic programlama dilini ve sözdizimi renklendirme ayrıca Basic anahtar kelimeleri ile ilgili F1 yardımını destekler.
Aşağıdaki listede Makro araç çubuğu işlevleri açıklanmıştır.
|
Compile Derle : Aktif modülü derler ve gerekliyse bir hata mesajı görüntüler. Şayet bir Basic programı çalışıyorsa bu düğme pasiftir. Kütüphaneleri dağıtma hazırlamadan önce daima derleyin. | |
|
Run Çalıştır: Aktif modüldeki ilk Sub'u çalıştırır. Aktif kütüphanedeki bütün değiştirilmiş modüller derlenmeden önce kullanılırsa bazı derleyici hataları alınabilir. Program başlamadan önce kullanılırsa da hatalara neden olabilir. Debugger vasıtasıyla program yürütülmesi durdurulmuşken bu komut kullanılırsa program işlemesine devam edilir. | |
|
Stop Makroyu Durdur: Basic programının yürütülmesini durdurur. Bir program çalışmıyorsa bu düğme aktif değildir. | |
|
Procedure Step Üzerine Bas : Makroyu içindeki çağrılan diğer sub ve fonksiyonlarda durmaksızın çalıştırır. Makro uygulaması Sub'daki alt ifadede durur. Uygulama basic programı başlatılmaksızın çalıştırılmışsa bu düğmeyleşuandaki modülün ilk Sub'ındaki ilk ifadede durur. | |
|
Single Step İçine Bas : Bir Basic ifadesini yürütür. İfadede bir başka sub çağrılımmışsa, yürütme çağrılan sub'ın ilk ifadesinde durur. Herhangi bir sub veya fonksiyon çağrılmıyorsa Step over ile aynı işleve sahiptir.(kısa yol F8). | |
|
Step back Dışına Bas : içinde bulunulan Sub veya fonksiyonu yürütür ve çağıran Sub/fonksiyonun devam eden ifadesinde durur. Şayet hiç bir yerden çağrılmamışsa ya da Basic programı çalışmıyorsa Run düğmesiyle aynı etkiye sahiptir. | |
|
Breakpoint Kesme noktası Açık/Kapalı : Basic düzenleyici penceresinde İmlecin bulunduğu satırda kesme oluşturur veya kaldırır.Kesme noktası bu satırda oluşturulamıyorsa beep ile kullanıcı ikaz edilir eylem ihmal edilir. (Kısayol F9).Kesme noktası editör penceresindeki sol sütunda kırmızı bir nokta olarak görüntülenir. | |
|
Add watch İzleyici açık/kapalı : Basic editorde İmlecin üzerinde olduğu tanımlayıcıyı watch penceresine ekler (Kısayol F7. | |
|
Object Catalog Nesne Kataloğu : Nesneler iletişimini açar. Dialogları,modülleri ve modüllerin içersindeki Sub'ları da içeren tam bir Kütüphane hiyerarşisini görüntüler. | |
|
Macros Makro Seç : OpenOffice.org Basic Makrolar İletişim kutusu'nu açar | |
|
Modules Makro Seç: Opens the OpenOffice.org Basic Makro Düzenleyici dialoğunu açar. | |
|
Find Parentheses Parantez Bul : Basic editörde imleç bir parantez öncesine yerleştirilmişse parantez çifti aranır ve bulunduğunda parantez içinde bulunan kod seçilir. Bulunamazsa kullanıcı uyarı sesiyle ikaz edilir. | |
|
Controls Denetim Ekle : Dialog düzenleme araçlarını açar. Basic düzenleme modunda pasiftir. | |
|
Insert Source File BASIC kaynak kodu ekle : Dosya açma dialoğunu görüntüler ve seçilmiş olan dosyanın metnini aktif modüldeki imleç konumuna ekler (*.bas standard dosya uzantısıdır). | |
|
Save Source As BASIC kaydet : Aktif modülü bir metin dosyası olarak kaydetmek için Farklı kaydet iletişimini görüntüler (*.bas standard dosya uzantısıdır). |
Şekil 11.19'da Bir Basic programı debugging modunda yürütülüyorken IDE penceresinin durumu görüntülenmektedir.
Stop düğmesi etkindir.
Satır 11'e bir kesme noktası konulmuştur.
Satır 12 de uygulama duraklatılmıştır. Sıradaki uygulanak Uygulama adımı sarı bir okla işaretlenmiştir.
Watch penceresi Value ve Hello değerlerini içermektedir ve bu değişkenlerin şu anki değerlerini görüntülemektedir. Ayrıca değişken üzerine fare okuyla gelindiğinde bu değerler yüzen kutularda görüntülenebilir.
Çağrılar penceresi yığıtı gösterir. Uygulanmakta olan doIt Sub'ı tepede görüntülenmekte ve Main Sub'ı ikinci pozisyonda görülmektedir.
Bu kısım Diyalog düzenleyici işlevleri hakkında bilgi sağlar. Form dizaynında kullanılan kontroller açıklanmamıştır. Bu ayrıntılar için 11.5 Basic and Dialogs - Dialoglar ve kontrollerinin programlanması bölümüne bakın. IDE penceresi altındaki bir dialog sekmesinin tıklanması veya Basic Makro Düzenleyici iletişiminden bir diyalog seçilmesiyle yada yeni bir form yaratılmasıyla Dialog editör aktifleştirilir.
İlk olarak yeni bir dialog boş bir form öçerçevesi halinde görüntülenir. Sonraki şekilde uygulama Standard kütüphanesindeki Dialog2 görünmektedir.
Dialog düzenleme modunda düğme kontrolleri aktiftir ve bu düğmeye tıklamanın sonucu şekilde görülmektedir. diyaloglar için özel araçları işeren bir araç çubuğu açılmıştır.İkon düğmeleri forma yerleştirilebilecek kontrolleri göstermektedir. Kullanıcı istediği düğmeye basar, İstenilen yer ve boyut için fareyle çerçeve çizerek kontrolü form üzerine yerleştirir.
Araç kutusundaki Aşağıdaki üç düğme kontroller için değildir:
|
Select Seçim düğmesi fare imlecini seçim moduna geçirir. Bu modda kontroller fare tıklamasıyla seçilebilir hale gelir. Shift tuşuna basılırken fare tıklamalarıyla birden fazla kontrol seçilebilir. Fare ile kontrollerin bir çerçeve içine alınması ile çerçeve içindeki bütün kontroller seçilmiş olur.Formun seçilmesi için kullanıcı form sınırına tıklayabilir yada seçim kutusu formu kapsayacak şekilde genişletebilir. | |
|
Activate Test Mode Test Kip Açık/kapalı düğmesi form ve kontrollerini test moduna alır. Bu modda form basic scripti olduğu gibi görünür. (11.5 Basic and Dialoglar - Formalar ve kontroller programlanması kısmına bakın) Bu düzende kontrolere atanan makrolar çalışmamasına karşın kullanıcıya formun çalışma anında formun nasıl görüneceği hissettirilir. | |
|
Properties Özellikler düğmesi özellikler iletişimini açar ve kapatır. Bu iletişimle seçilmiş olan kontrollerin tüm özellikleri ayarlanabilir. Sonraki resimde seçilmiş olan komut düğmesi özelleikleri görüntülenmektedir. |
Yukarıdaki resimde ana araç çubuğundan başlığından tutularak çalışma alanına çekilen araç çubuğu penceresi görünmektedir.
Özellikler iletişim kutusu iki sekmelidir. General Genel sekmesi özellikler listesi içerir. Değerleri kontroller tarafından gösterilmektedir.renk, enum tipler gibi çoğu özellikler bir listbox (liste kutusu) ile sayısal, metin gibi tipler edit field (Metin kutusu) kontrol edilir. fontlar, renklrer gibi daha kompleks özellikler ellipsis ( ... )düğmeleriyle açılan başka iletişim kutularıyla ayarlanır. font seçim kutusu gibi. Kullanıcı bir metin kutusu içeriğini değiştirdiği zaman değişiklikler hemen görüntülenmezler. Değişikliğin görünmesi için metin kutusu focus halinden çıkarılmalıdır. Tab tuşuna basılarak veya alternatif olarak enter tuşuna basılabilir.
Events Olaylar sekmesi seçilmiş olan kontrol tarafından desteklenen olaylara atanmış makroları görüntüler:
Yukarıdaki örnekte, key pressed tuşa basıldı olayı için bir makro atanmıştır: Bu olay oluştuğunda uygulama Standard Basic kütüphanesi Module2'de görünen doNothing Sub'ı uygulanır. Uygulanabilen olaylar seçili kontrolün tipine bağlıdır.
Kullanıcı olay atamasını değiştirmek için ellipsis düğmelerine basarak Assign macro Makro ata aşağıda görünen diyalogunu açabilir.
Event Olay etiketli liste kutusu Özellikler penceresi olaylar sekmesi ile aynıdır. Makro ata iletişimi daima aynıdır ve sadece ellipsis düğmesiyle seçilen olay için makro ataması yada değişimi yapılabilir.
Olaya makro atanması için, kullanıcı Assign Ata düğmesine tıklamalıdır. Böylece Macro Selector Makro Ayırıcı iletişimi görüntülenir ve kullanıcıya kütüphane hiyerarşi içinden bir makronun seçilmesi imkanı tanınır. Tamam tuşuyla seçilen makro olaya atanmış olur. Şayet olay için önceden seçilmiş olan makro varsa seçim ile değiştirilir. Herhangi bir Sub seçili değilse Bu Tamam düğmesi aktif değildir.
Diyalog bir belge içinde bulunuyorsa, Makro ayırıcı listesinde belgenin kütüphane Container'ı da görüntülenir. Diyalog uygulama kütüphanesine aitse, belge kütüphaneleri görüntülenmez. Çünkü uygulama dilogları tarafından bir olay başlatıldığında belgenin yüklenebileceği garanti altında değildir.
Seçilmiş olay için bir makro atanmışsa Remove Kaldır düğmesi aktiftir. düğmeye tıklayarak makro olaydan kaldırılır. Böylece olay makro bağlantısı koparılır.
The list box below the Remove button is used to select different macro languages. Currently, only OpenOffice.org Basic is available.
Tamam düğmesi iletişimi kapatır ve tüm olay atamalarını ve silmelerini gerçekleştirir. Değişimle Özellikler kutusunun olaylar sekmesinde görülür.
İptal düğmesi iletişimi kapatır ve yapılan değişiklikler gözardı edilir..
Daha önce açıklandığı gibi, eşzamanlı olarak çeşitli kontrol öğelerini seçmek mümkündür. Aşağıdaki resimde kulanıcını tarafından CommandButton1 ve CheckBox1 öğelerin seçili olduğu durum görülmektedir. Özellikler iletişiminde böyle bir seçim bazı önemli etkilere sahiptir.
Özellikler penceresi başlığı özel duruma işaret etmek için Multiselection Çoklu Seçim yazısını gösterir. Tek seçim ile İki önemli fark karşılaştırılırsa:
Görüntülenen özellikler bütün kontrollerin uyuştuğu özelliklerdir.Tüm kontroller aynı özelliği destekliyorsa görüntülenir. Bir özelliğin değeri tüm kontroller için aynı ise görüntülenir. Tüm seçilmiş kontroller kullanıcı tarafından değiştirilen özellikten etkilenirler. Aynı değere sahip olmayan kontrollere yeni değer uygulanır.
Bir multi-selection Özellikler iletişimi tekli seçimde olduğu gibi olaylar sekmesine sahip değildir.
Dialog editöründe kontrol olaylarına makro atanması daha önce anlatılmıştı. Olaylara veya eylemlere makro atanması için genel bir işlevde mevcuttur. Bu işleve Araçlar - Özelleştir menüsü yoluyla açılan özelleştir iletişimi ile veya Makro iletişiminde ata düğmesine basılarak ulaşılabilir. Bu bölümde sadece makroların atanması incelenecektir. İletişim hakkında daha fazla bilgi OpenOffice.org belgelerinde bulunabilir.
Aşağıdaki sunumda Özelleştir diyaloğunun Menü sekmesi görülmektedir
Bir makronun yeni bir menü öğesine nasıl atanacağı gösterilmektedir. Menü ve Menü içeriği listesi OpenOffice.org menü hiyerarşisi içinde gezinmek için kullanılabilir. Ekle... düğmesine basılmasıyla Add Commands Komut ekle iletişimi açılır. Kategori listesinde OpenOffice.org yerleşik fonksiyonlarını listeler ve OpenOffice.org Makroları girişini görüntüler. Bir giriş seçildiğinde bu girişteki makrolar ve komutlar sağdaki liste kutusunda görüntülenir .
Ekle düğmesine klikliyerek iletişim seçilmiş makro veya komutu bir menüye ekler.
Menüler sekmesindeki diğer düğmeler aşağıdaki gibidir :
Yeni düğmesi bir üst seviye menüsü yaratır
Menü düğmesi üst seviye menülerinin taşınması, isim değiştirimesi ve silinmesi için komutlara sahiptir.
Modify Değiştir düğmesi altmenü ve ayırıcı eklenmesi, ve menü öğelerinin yeniden isimlendirilmesi ve silinmesi için komutlar içerir.
Ok düğmeleri menü öğesinin yerini değiştirir.
Reset Başa al düğmesi varsayılan menü yapılandırmasını geri yükler.
Sonraki resimde Özelleştir diyalogunun Olaylar sekmesi görünmektedir:
Bu sekmede makrolar OpenOffice.org genel olaylarına atanabilirler. Olay Başlıklı listede olaylar listelenir. Assign Makro Ata düğmesi Macro selector Makro Ayırıcı iletişimini açar ki kullanıcı burda olaya makro atayabilir. Remove Makro Kaldır seçilmiş olan olayla makro ilişkisini kaldırır.
Klavye sekmesinde makrolara kategori ve fonksiyon listesi listelerinde ulaşılır. sonra Shortcut keys Tuşlar listesinde özeleştirilebilen bir klavye kısayolu atanır. Burda gene Load, Save, ve Reset düğmeleri ile klavye konfigurasyonu yüklenir, Kaydedilir ve resetlenir.
Klavye sekmesinde OpenOffice.org ve Document Belge radio button Seçenek düğmesi mevcutdur ve belge düzeyinde veya bütün ofis için geçerli bir atama olmasını kontrol eder.
Bu bölüm OpenOffice.Org basic programlama dili hakkında genel bir açıklama sunar.
OpenOffice.org Basic tarafından sunulan işlevsellik özetlenmiştir. kullanılabilir çalışma zamanı fonksiyonları tariflenmiştir. Basic çevrimiçi yardım desteği Openoffice.org içine eklenmiştir fakat özel fonksiyonlarla sınırlıdır. Basic işlevleri hakında daha detaylı bilgi elde etmek için çevrim içi yardımı kullanın.
OpenOffice.org API'sinden ayrı olarak, OpenOffice.org Basic Visual Basic ile uyumludur.
Basic ekranda bilgi görüntüleme için veya kullanıcıdan bilgi almak için ifadeler ve fonksiyonlara destek verir:
Print ifadesi formlarda metin yada sayısal çıktıları görüntüler. Çoklu terimler virgüllerle ayrılır ki sonucuda deyimler arasında bir tab boşluğu olur Noktalı virgüller deyimler arasında bir boşluk karakteri bırakır. Örneğin:
e = 2.718
Print e ' displays "2.718"
Print "e =" ; e ' displays "e = 2.718"
Print "e =" , e ' displays "e = 2.718"
MsgBox fonksiyonu bir mesaj içeren diyalog kutusu görüntüler. Ek olarak başlığı düğmeleri,örneğin OK, Cancel, Yes ve No, ikonları Question Mark Soru işareti exclamation Mark Ünlem gibi, ki bunlar tarif edildiği gibi görüntülenir. Sonuç değerlendirilebilir. Örneğin:
' Ünlem işareti, ve Ok Cancel düğmeleri olan Mesaj kutusunu görüntüler
ret& = Msgbox ("Changes will be lost. Proceed?", 48 + 1, "Warning")
' kullanıcının seçimini göster.1 = OK, 2 = Cancel
Print ret&
InputBox fonksiyonu kullanıcının bir metin girebildiği bir iletisi bulunan İletişim penceresi görüntüler girdi bir değişkene atanabilir. Örneğin:
' "Please enter a phrase:"iletisi olan ve "Dear User" başlığına sahip bir diyalog görüntüle
' Diyalog metin kutusu içerir. ve metin buraya girilir.
' Girilen metin kullanıcı Tamama basarsa UserText$ aktarılır. Kullanıcı Cancela basarsa değişken değişmez
UserText$ = InputBox( "Please enter a phrase:", "Dear User" )
OpenOffice.org Basic İşletim sisteminin dosya sistemine ulaşabilen ifadeler ve çalışma anı fonksiyonları setine sahiptir ki bunlar Visual Basic ile uyumludur. Platform bağımsız olabilmesi için file:// URL notasyonu eklenerek dosya isimleri yönetilmektedir.
UNO kütüphanesinin klasik Basic Dosya arabiriminin kullanılması tavsiye edilmez. Çünkü OpenOffice.org API'sindeki bir çok arabirim Llasik Basic API'si ile uyumlu değildir. Örneğin com.sun.star.io.XInputStream.
OpenOffice.org API'sinde Dosya I/O programlanması için com.sun.star.ucb.SimpleFileAccess servisi kullanılmalıdır. Bu servis com.sun.star.ucb.XSimpleFileAccess2 arabirimini ve içerdiği ,siFor programming, the file I/O in context with the service should be used. This service supports the interface including the main interface com.sun.star.ucb.XSimpleFileAccess that provides fundamental methods to access the file system. The methods are explained in detail in the corresponding interface documentation. The following list provides an overview about the operations supported by this service:
copy, move and remove files and folders (methods copy(), move(), kill())
prompt for information about files and folders (methods isFolder(), isReadOnly(), getSize(), getContentType(), getDateTimeModified(), exists())
open or create files (openFileRead(), openFileWrite(), openFileReadWrite()). These functions return objects that support the corresponding stream interfaces com.sun.star.io.XInputStream, com.sun.star.io.XOutputStream and com.sun.star.io.XStream. These interfaces are used to read and write files. The XSimpleFileAccess2 does not have methods of its own for these operations. Additionally, these interfaces are often necessary as parameters to access methods of several other interfaces. The opened files have to be closed by calling the appropriate methods com.sun.star.io.XInputStream:closeInput() or com.sun.star.io.XOutputStream:closeOutput().
The XSimpleFileAccess2 also does not have methods to ask for or set the position within a file stream. This is done by calling methods of the com.sun.star.io.XSeekable interface that is supported by the objects returned by the openXXX() methods.
Two more services are instantiated at the global service manager that extends the service com.sun.star.ucb.SimpleFileAccess by functionality specific to text files:
The service com.sun.star.io.TextInputStream supporting com.sun.star.io.XTextInputStream and com.sun.star.io.XActiveDataSink:
The service is initialized by passing an object supporting XInputStream to the com.sun.star.io.XActiveDataSink:setInputStream() method, for example, an object returned by com.sun.star.ucb.XSimpleFileAccess:openFileRead().
Then the method com.sun.star.io.XTextInputStream:readLine() and com.sun.star.io.XTextInputStream:readString() are used to read text from the input stream/file. The method com.sun.star.io.XTextInputStream:isEOF() is used to check for if the end of the file is reached. The com.sun.star.io.XTextInputStream:setEncoding() sets a text encoding where UTF-8 is the default.
The service com.sun.star.io.TextOutputStream supporting com.sun.star.io.XTextOutputStream and com.sun.star.io.XActiveDataSource:
The service is initialized by passing an object supporting XOutputStream to the com.sun.star.io.XActiveDataSource:setOutputStream() method, for example, an object returned by com.sun.star.ucb.XSimpleFileAccess:openFileWrite().
Then the method com.sun.star.io.XTextOutputStream:writeString() is used to write text to the output stream.
OpenOffice.org Basic tarih ve zaman hesaplamaları için Visual basic uyumlu fonksiyonlar ve ifadeler içerir. Bu fonksiyonlar DateSerial, DateValue, Day, Month, WeekDay, Year, Hour, Now, Second, TimeSerial, TimeValue, Date, Time, ve Timer.
Date Fonksiyonu sistem zamanını metin olarak döndürür. Time fonksiyonu sistem zamanını metin olarak döndürür. Diğer fonksiyonlar burda açıklanmamıştır.
UNO/toolkit kontrollerinde başka iki fonksiyon vardır. date field kontrol metodları; com.sun.star.awt.XDateField:setDate() özel bir ISO formatıyla Long değerli tarih geçirir ve com.sun.star.awt.XDateField:getDate() bu format ile geri döner.
CDateToIso Basic çalışma anı fonksiyonu, tarihi iç Basic formatından iso formuna çevirir. Böylece Date fonksiyonuyla dönen string otomatik olarak iç Basic formuna dönüştürülür. Date, CDateToIso fonksiyonuna direk olarak girdi parametresi olarak kullanılabilir:
IsoDate = CDateToIso(Date)
oTextField.setDate(IsoDate)
CDateFromIso ters operasyonla tarihi iso formatından iç Basic formatına çevirir.
Dim aDate as date
aDate = CDateFromIso(IsoDate)
Bu içerik için, 11.5 Basic ve Dialogları - Form ve form kontrollerini programlama kısmına da bakın.
Basic aşağıdaki gibi standard sayısal fonksiyonları destekler:
Cos bir açının kosinüsünü hesaplar
Sin bir açının sinüsünü hesaplar
Tan bir açının tanjantını hesaplar
Atn bir açının kotanjantını hesaplar
Exp bir sayının doğal logaritmasını hesaplar. (e = 2.718282 kuvveti olarak)
Log belirlenen tabanda bir sayının logaritmasını verir
Sqr sayının karekökünü alır
Abs sayının mutlak değerini alır.
Sgn İşaret sayı negatifse -1 pozitifse 1 sıfır ise 0 değerini geri döndürür.
OpenOffice.org Basic metin düzenleme için çok sayıda fonksiyona sahiptir. Bunların bazıları kısaca açıklanmıştır:
Asc Metinin ilk karakter değerini Unicode olarak verir.
Chr Karakter ASCII veya Unicode olarak verilen sayısal değere karşılık gelen karakteri döndürür. Bu fonksiyon ", satır başı karakteri (chr(13)) gibi karakterlerin metnin içine yerleştirilebilmesini sağlar .
Str Metneçevir bir sayısal değeri metin olarak döndürür.
Val Sayıyaçevir metni sayısal değerine çevirir.
LCase Küçükharf metindeki bütün harfleri küçük harfe çevirir. küçük harfler alfabetik olmayan karakterler etkilenmez.
UCase Büyükharf metindeki bütün harfleri büyük harfe çevirir. büyük harfler alfabetik olmayan karakterler etkilenmez..
Left Soldan verilen metindeki n.adet karakteri metnin başından alarak döner.
Mid Ortadan metnin içinden belirtilen yerden belirtilen adette karakteri alarak döner.
Right Sağdan verilen metindeki n.adet karakteri metnin sonundan alarak döner.
Trim Kırp metnin başındaki ve sonundaki boşlukları siler.
Özel UNO fonksiyonları CreateUnoListener, CreateUnoService, GetProcessServiceManager, HasUnoInterfaces, IsUnoStruct, EqualUnoObjects bölüm 3.4.3 Professional UNO - UNO Language Bindings - OpenOffice.org Basic.'ünde açıklanmıştır.
3.4.3 Professional UNO - UNO Diline bağlanma - OpenOffice.org Basic bölümünde, Basic ve UNO arasındaki etkileşim temel seviyede açıklanmıştır. Bu kısım OpenOffice.org uygulamasında Basic ve UNO API'si arabirimini açıklar.
Bu iki ön tanımlı Basic özelliği ile gerçekleştirilir:
StarDesktop
ThisComponent
StarDesktop özelliği global olarak OpenOffice.org uygulama API'sine ulaşma imkanı verirken, ThisComponent belge düzeyinde API erişimi sağlar.
StarDesktop özelliği com.sun.star.frame.Desktop servisi için bir kısa yoldur.
Örnek:
MsgBox StarDesktop.Dbg_SupportedInterfaces
' Aşağıdaki ile aynıdır.
Dim oDesktop
oDesktop = CreateUnoService( "com.sun.star.frame.Desktop" )
MsgBox oDesktop.Dbg_SupportedInterfaces
Görüntülenen mesaj kutusu biraz farklıdır. Çünkü İlk durumda Dbg_SupportedInterfaces bir "StarDesktop" Masaüstü nesnesinin bir kopyasıdır. ve ikinci durumda "com.sun.star.frame.Desktop" nesnesinin kopyasıdır. Fakat iki nesnede aynıdır.
Belgeden olan ThisComponent özelliği Basic , ThisComponent'le erişilen nesnenin tipi belgenin tipine bağlıdır. Aşağıdaki örnekte farklar görünmektedir.
OpenOffice.org belgesinde olan Basic modülü:
Sub Main
MsgBox ThisComponent.Dbg_SupportedInterfaces
End Sub
Basic yordamının uygulanması bir Writer, Calc ve Presentation belgesi için farklı sonuç verir. Belge tipine bağlı olarak nesne tarafından desteklenen farklı arabirim setleri vardır.Bu arabirimlerin bir kısmı tüm belgeler için geneldir. Bütün OpenOffice belgeleri com.sun.star.document.OfficeDocument servisini ve com.sun.star.frame.XStorable ve ayrıca com.sun.star.frame.XModel.arabirimini destekler.
İlişik liste bütün belgeler tarafından desteklenen arabirimleri gösterir.:
com.sun.star.beans.XPropertySet
com.sun.star.document.XDocumentInfoSupplier
com.sun.star.document.XEventBroadcaster
com.sun.star.document.XViewDataSupplier
com.sun.star.document.XEventsSupplier
com.sun.star.document.XLinkTargetSupplier
com.sun.star.lang.XServiceInfo
com.sun.star.lang.XMultiServiceFactory
com.sun.star.lang.XEventListener
com.sun.star.style.XStyleFamiliesSupplier
Bu arabirimlerin bütün işlevleri için , 6.1.1 Office Development - OpenOffice.org Application Environment - Overview - Framework API - Frame-Controller-Model Paradigm. bölümüne bakın Bu kısım ayrıca genel belge API'si hakkında detaylara girer.
Genel servis ve arabirimlere ilaveten her bir belge tipi özel servis ve arabirimleri destekler. Aşağıdaki listede desteklenen servisler ve önemli arabirimler işaretlenmiştir:
Metin Belgeleri bunları destekler.:
com.sun.star.text.TextDocument servisi com.sun.star.text.XTextDocument. arabirimi
Çeşitli arabirimler, özellikle com.sun.star.text package.
Calc belgesi bunları destekler:
Çeşitli arabirimler, özellikle com.sun.star.sheet package.'inden gelen.
Sunum ve Çizim belgeleri bunları destekler:
com.sun.star.drawing.DrawingDocument. servisi,
Çeşitli arabirimler, özellikle com.sun.star.drawing package.
Belgeye özel olan Bu servislerin ve arabirimlerin kullanımı 7 Text Documents, 8 Spreadsheet Documents ve 9 Drawing. bölümlerinde açıklanmıştır.
Daha önce değinildiği gibi , ThisComponent Belge Basic'i tarafından kullanılır. Fakat uygulama Basic'i tarafından kullanımı da mümkündür. Uygulama Modülünde ThisComponent ile CurrentComponent eşdeğerdir ve StarDesktop.CurrentComponent yoluyla da ulaşılabilir. Bu ikisi arasındaki tek fark şöyledir ki, eğer BasicIDE'si aktif ise StarDesktop.CurrentComponent BasicIDE'sini işaret ederken ThisComponent BasicIDE'si aktif olmadan önceki component'i gösterir.
OpenOffice.org Basic'de threading program kanalları ve rescheduling .... diğer dillerden farklı olarak dikkate alınmalıdır
OpenOffice.org Basic thread'ları desteklemez:
Bazı hallerde Uno bileşenlerine özel bir yöntemle ulaşmak için yeni thread'ler yaratılması gerekebilir. Bu durum OpenOffice.org Basic'de mümkün değildir..
OpenOffice.org Basic thread'ları kontrol edemez. Eğer Basic'de iki çalışma zamanı sistemi aynı yolu kullanırsa, sonuçlar belirsizdir, hatta program çökmesine neden olabilir. Önlem almayı unutmayın...
OpenOffice.org Basic çalışma anında sistem düzenli olarak sorgulanır. Basic modülünden OpenOffice.org sürecine gönderilen Sistem mesajlarının işlenmesine izin verilir. Bu Basic scriptinin çalışma anında, pencerelerin yeniden çizilmesi ve boyanması, kontrollere ve menülere erişilebilmesi için gereklidir. Aksi taktirde Basic makrosunu araç çubuğundaki ilgili düğme ile durdurmak mümkün olmazdı.
Bu davranış çok önemlidir. Örneğin bir komut düğmesine basılması gibi bir sistem mesajı, Basic'te belirtilen olay için bir çağrı oluşturabilir ve sonuçta başka bir rutin aynı anda işler. Basic programcısı makro çalışıyorken her hangi bir anda böyle bir olayın meydana gelmesinden sakınmalıdır..
Aşağıdaki örnek basic çalışma anındaki bu durumun etkisini göstermektedir:
Dim EndLoop As Boolean
Dim AllowBreak As Boolean
' Main sub, uygulama burdan başlar
Sub Main
' Bayrakları hazırla
EndLoop = FALSE
AllowBreak = FALSE
Macro1 ' Makro1'i çalıştır
End Sub
' Sub called by main
Sub Macro1
Dim a
While Not EndLoop
' Bayrakları çevir
AllowBreak = TRUE
AllowBreak = FALSE
Wend
Print "Ready!"
End Sub
' writer dökümanındaki bir düğmeye atanmış Sub .
Sub Break
If AllowBreak = TRUE Then
EndLoop = TRUE
EndIf
End Sub
Basic modülündeki Main Sub'u çalıştırıldığında, iki mantıksal değişken Endloop Döngüsonu ve AllowBreak Kesmeizniver değişkenleri başlatılmaktadır. Sonra Macro1 Sub'ı çağrılarak makroda sadece Endloop değerinin TRUE olması durumda sonlanacağı bir döngüye girilmektedir. Endloop değerinin TRUE olması ise sadece bir writer belgesi içnnde komut düğmesine atanan Break Sub'ı ile mümkün olmaktadır. Fakat AllowBreak değeri TRUE olması halinde Endloop Bayrağı TRUE yapılabilmektedir. Bu bayrakta Macro1 içinde çevrilmektedir.
Düğmeye basıldığında programın uygulanması belki bitecek, belkide bitmeyecektir. Bu düğmeye basılma zamanına bağlıdır. Basic o anda AllowBreak = TRUE ifadesini uygulamışsa döngü bitecek makro sonlanacaktır. Basic çalıştırma sistemir uygulamayı yeniler. Böylece tahmin edilemez bir durum oluşur .
Rescheduling'den Basic'e çağrılar olay için tanımlanmış Subların makro ile direk çağrılması da aynı etkiye sahiptir. Şayet iki farklı yolla aynı makro çağrılırsa, Örneğimizde Sub Break içinde bir kesme noktası oluşturulursa, Basic çağrı stack'ı aşağıdaki gibi görünür:
Basic Native code
0: Break <--- Callback due to push button event
1: Macro1 ---> Reschedule()
2: Main
Native Reschedule metoduna çağrı ile, Basic çalışma sistemi boş kalır tekrar bir komut düğmesine tıklanması ile yeniden girilebilir.Basic Stack'ında bu direk bir çağrı gibi gözükür .
Benzer bir durumda bir program CreateUnoDialog() dialog nesnesinin execute metodu ile bir dialog gösteriyorken meydana gelir. 11.5 OpenOffice.org Basic and Dialogs - Formlar ve Kontroller ile programlama bakın . Bu durumda Basic çalışma sistemi reschedule yapamaz, fakat mesajlar iletişim mesaj döngüsü tarafından işlenmeye devam eder ve sonuçlar Basic'e çağrılar olarak geri döner. Basic çalıştırma sistemi bir iletişim olayı callback.fonksiyonla çağrılırsa sonuçta Basic stackları benzer görünür. örneğin:
Sub Main
Dim oDialog
oDialog = CreateUnoDialog( ... )
oDialog.execute()
End Sub
Sub DoIt
...
End Sub
Şayet Doit Sub'ı çalıştırılırsa ve herhangi bir dialog kontrolü için bir olay oluşursa Sub Doit içine kesme noktası yerleştirilmişken çağrı penceresi aşağıdaki gibidir:
Basic Native code
0: DoIt <--- Callback due to control event
1: Main ---> execute() ---> Reschedule()
Basic çalıştırma sistemi tarafından direk olarak yapılan Rescheduling ile de bir fark vardır. İletişim döngüsü herhangi bir beklenmeyen davranış göstermez. çünkü iletişimin execute metodu tarafından Basic çalıştırma sistemi çağrılmıştır ve onun dönüşünü bekler..
Basic kaynak kodları ve Dialogları kütüphanelerle düzenlenir. Bu bölüm kütüphane sisteminin yapısını ve kullanımını açıklar.
Basic kodunun ve Formların saklanmasında kullanılan Kütüphane sistemi üç seviyelidir:
Library container Kütüphane Deposu
Kütüphane container'ı kütüphanelerin içinde bulunduğu hiyerarşinin en üst seviyesidir. Kütüphane container'ı içindeki kütüphanelere adları kullanılarak erişilir.
Kütüphane
Bir kütüphane mantıksal olarak birbiriyle ilişkili elemanları içerir, örneğin çeşitli programdan yada takımdan olan Basic modülleri ve ilişkili formları gibi
Kütüphane elemanları
Kütüphane elemanları Basic kaynak kodları veya formlardır. Basic kaynak kod modüllerinin eleman tipleri metindir. com.sun.star.io.XInputStreamProvider arabirimi tarafından gösterilen dialoglar iletişimi tanımlayan XML veri olarak saklanırlar .
Düzen Basic kaynak kodu ve dialoglar için ayrıdır, bir Basic kütüphane container'ı Basic kaynak kodu ve dialog elemanlarını barındıran Basic kütüphanelerine sahipken, Dialog kütüphane Container'ı sadece dialogları içeren dialog kütüphaneleri bulundurabilir.
Basic kaynak kodu ve dialoglar tüm ofis uygulaması için genel ve belge için lokal düzeyde depolanabilirler. Uygulama için sadece bir Basic kütüphane ve Dialog kütüphanesi vardır. Her belge içinde bir Basic kütüphane ve Dialog kütüphanesi olması uygundur. Böylece Uygulama ve belge düzeyi kapsama alınmış olur. Aşağıda gösterilen figürdeki gibi Kütüphane sistemi dört seviyelidir.
Document1 için Kütüphane düzeninde görüldüğü gibi Basic ve dialog kütüphanesi aynı yapıda değildir. Basic Kütüphane Container'ı Library1 olarak isimlendirilmiş bir kütüphane ve dialog kütüphane container'ı Library2 adlı kütüphaneye sahiptir. kütüphane Container'ları Basic ve Dialog API'si için ayrı düzenlenmiştir.
GUI'de basic ve dialog container'ları ayrılmadığı için, yukarıdaki gibi bir yapı tavsiye edilmez. Örneğin OpenOffice.org Makro düzenleyici iletişiminde kullanıcı yeni bir kütüphane yarattığında yada sildiğinde Basic veya dialog kütüphaneleri container'larında yaratılır.
Halihazırda UNO sistemi arabirimiyle ulaşılan kütüphane siatemi, bir UNO servisi değildir. bu nedenle kütüphanelere UNO servisi ile hemen ulaşılamaz. Basic'den direk olarak Kütüphanelere BasicLibraries ve DialogLibraries yerleşik özellikleri ile ulaşılır.
BasicLibraries Basic kütüphanesine bir referanstır. Uygulama çaplı Basic modulünde, BasicLibraries uygulama kütüphane container'ına ulaşır, Belge Basic modülünde BasicLibraries sadece belge Basic container'ına erişir. Aynı şeyler DialogLibraries özelliği için de geçerlidir..
İlkin, Basic kütüphanelerinin çoğu yüklenmez. Uygulama Basic container'ları içindeki bütün kütüphaneler OpenOffice.org, başladıktan sonra, belgeler içinse belge yüklendikten sonra tanınırlar. Çoğu da çağrılarak yüklenmeden önce etkin değildirler. Bu mekanizma Basic'in başlaması sırasında zaman kazandırır. Bir Basic modülü başlatıldığında, kaynak kod modülleri Basic engine motor una eklenir ve derlenirler.
Her Kütüphane deposunda bulunan Standard adlı kütüphaneler daima yüklenirler. Bu kütüphane Basic programları ve formları için standard bölgedir ve komplex yapıda olmamalıdır. Diğer kütüphaneler istenildiğğinde yüklenirler. Örneğin:
Library1, Module1 de aşağıdaki yordam
Sub doSomething
MsgBox "doSomething"
End Sub
Standard kütüphanesi , Module1 deki aşağıdaki kod
Sub Main
doSomething()
End Sub
Kullanıcı Araçlar - Makrolar menüsü yoluyla Library1'i yüklemedikçe, Sub doSomething Çalışmaz. İletişim kutusu görüntülenmeden önce bir çalışma zamanı hatası "Property or method not found" meydana gelir. Bu durumdan sakınmak için doSomething()'i çağırmadan önce Kütüphaneyi yükleyin:
Sub Main
BasicLibraries.loadLibrary( "Library1" )
doSomething()
End Sub
Dialog Container'ına gelince, Standard kütüphanesinde bulunan tüm kütüphaneler yüklenmelidir Örneğin
Sub Main
' Bu satır yazılmazsa bu kod çalışmayayacaktır
DialogLibraries.loadLibrary( "Library1" )
' İletişimi görüntülemek için gerekli kod
' Detaylar sonraki bölümde açıklanacaktır
oDlg = createUnoDialog( DialogLibraries.Library1.Dialog1 )
oDlg.execute()
End Sub
İletişimi hazırlamak ve görüntülemek için kullanılan kod 11.5 OpenOffice.org Basic and Dialogs - Dialog ve kontrol elemanlarının programlanması. bölümünde açıklanacaktır. DialogLibraries.Library1.Dialog1 sadece Library1 yüklenmiş ise geçerlidir .
BasicLibraries ve DialogLibraries Basic kodunu içeren container'ına ulaşım referanslarıdır. Bu nedenle belge modülünde sadece belge ContainerI için referranstırlar. Çoğu durumda belgenin kütüphaneleri yüklenmelidir. Bazen uygulama belge Basic'inden uygulama düzeyindeki kütüphanelere ulaşmak gerekirse, GlobalScope özelliği kullanılır. GlobalScope Uygulama Basic'inde kök alanını temsil eder .
Bir belge Basic'i standard kütüphane örnek modülü:
Sub Main
' Bu kod Belge Basic container'ından Library1'i yükler
...'
BasicLibraries.loadLibrary( "Library1" )
' Bu kod Belge Dialog container'ından Library1'i yükler
...'
DialogLibraries.loadLibrary( "Library1" )
' Bu kod Uygulama Basic container'ından Library1'i yükler
...'
GlobalScope.BasicLibraries.loadLibrary( "Library1" )
' Bu kod Uygulama Dialog container'ından Library1'i yükler
...'
GlobalScope.DialogLibraries.loadLibrary( "Library1" )
' Bu kod Uygulama Basic modülü Library1.Module1'in kodunu görüntüler
...'
MsgBox GlobalScope.BasicLibraries.Library1.Module1
End Sub
|
|
Uygulama kütüphane depolarına belge düzeyi Basic'inden ulaşabilmek için GlobalScope özelliği kullanılır. Örneğin, GlobalScope.BasicLibraries.Library1. |
The BasicLibraries ve DialogLibraries com.sun.star.script.XLibraryContainer'dan türetilen com.sun.star.script.XLibraryContainer2'i tarafından desteklenir ki buda com.sun.star.container.XNameContainer servisinden gelir. Basic geliştiricileri bir metot kullanabilmek için yerleşimi bilmek zorunda değildir. Fakat API referanslarındaki metotlara incelenirken bilinmesi yararlıdır.
XLibraryContainer2 varolan kütüphane bağlantılarını ve yazma korumalarını kontrol eder. Kütüphanelerin isminin değiştirilmesi içinde kullanılır Metotlar ilerleyen kısımda ayrıntılı olarak anlatılmıştır :
boolean isLibraryLink( [in] string Name)
string getLibraryLinkURL( [in] string Name)
boolean isLibraryReadOnly( [in] string Name)
void setLibraryReadOnly( [in] string Name, [in] boolean bReadOnly Sadeceoku)
void renameLibrary( [in] string Name, [in] string NewName)
XLibraryContainer kütüphane ve kütüphanne yollarını syaratır veya siler. Buna ilaveten bir kütüphanenein yüklü olup olmadığını test eder veya gerekliyse, yükler.
com::sun::star::script::XNameContainer createLibrary( [in] string Name)
com::sun::star::script::XNameAccess createLibraryLink( [in] string Name,
[in] string StorageURL, [in] boolean ReadOnly)
void removeLibrary( [in] string Name)
boolean isLibraryLoaded( [in] string Name)
void loadLibrary( [in] string Name)
XNameContainer metotlarıyla container'lardaki kütüphanelere erişim ve yönetimi sağlanır:
void insertByName( [in] string name, [in] any element)
void removeByName( [in] string name)
any getByName( [in] string name)
void replaceByName( [in] string name, [in] any element)
sequence < string > getElementNames()
boolean hasByName( [in] string name)
type getElementType()
boolean hasElements()
UNO API'sinde bu metotlarla erişim sağlanır. 3.4.3 Profesyonel UNO - UNO dili ile bağlanma - OpenOffice.org Basic. bölümünde açıklandığı gibi UNO API kullanılır. Not: Bu arabirimler sadece OpenOffice.org Basic ile kullanılabilir.diğer ortamlarda kaullanmak mümkün değildir.
Kütüphaneler container'lara iki farklı yol ile eklenir:
Creating a New Library Yeni kütüphane yaratarak
CreateLibrary() metodunun kullanımı ile yeni bir kütüphane yaratılır. Bu metotla yaratılmış kütüphane Yöntemin çağrılmış olduğu Container'a aittir. hod. A library created with this method belongs to the library container where createLibrary() has been called. Kütüphane container'ı uygulaması bu kütüphanenin yüklenmesi ve saklanması için sorumludur.Bu işlev şu an için arabirimler tarafından sağlanmaz. Onun için uygulama nerede ve nasıl olacağını belirlemelidir. createLibrary() kütüphane elemanlarına erişim ve kütüphane düzenlenmesi için bir Standard com.sun.star.container.XNameContainer arabirimiyle döner .
İlkin, böyle bir kütüphane boştur ve yeni kütüphane elemanları yerleştirilir. Kütüphaneyi değişikliklerden korumak için setLibraryReadOnly() metotu da kullanılabilir. Sadece oku kütüphanelerine yeni elemanlar eklenip silinemez ve Basic modülleri ile formlar değiştirilemezler. Ek bilgi için 11.2 OpenOffice.org Basic and Dialogs - OpenOffice.org Basic IDE kısımına bakın.Sedece oku statüsü API üzerinden değiştirilebilir..
Creating a Link to an Existing Library Varolan kütüphaneye bağ oluşturulması
Varolan kütüphaneye bir bağ oluşturulması createLibraryLink() metodunun kullanılmasıyla sağlanır. StorageURL parametresi kütüphane ile kütüphane .xlb dosyası yolu verilir. Bu konu için Ekstra bilgi 11.7 OpenOffice.org Basic and Dialoglar - Kütüphane dosyası yapısı konusuna bakın. Bir kütüphane bağı Kütüphane containeri da dahil olarak refere edilebilir. onun için kütüphane deposu dosyanın saklanmasından sorumlu değildir. Bu sadece StorageURL parametresi ile tanımlanır.
ReadOnly parametresi Kütüphane bağının statüsünü sadece oku'ya çevirir. Bu durum bağlanmış Kütüphanenin statüsünden bağımsızdır. Bağlanmış kütüphane kütüphane ile bağ statüsü read only ise değiştirilebilir. Örneğin, bu mekanizma network sürücüsünde bulunan bir kütüphaneyi read-only yapmaya gerek kalmaksızın read-only olarak erişim imkanı sağlar, böylece yetkili kişiler tarafından kolaylıkla değiştirilebilir.
Library container'ları tarafından desteklenen metotlar İlişik tablolarda kısaca belirtilmiştir:
|
Selected Methods of com.sun.star.script.XLibraryContainer2 | |
|
boolean. mantıksal Bir kütüphanenin Container'a bağ olarak eklenip eklenmediği sorgulanaır. Geri dönen değer doğru veya yanlıştır. | |
|
string. metin Bağlanmış kütüphanenin StorageURL yolunu gösteren dize ile geri döner. createLibraryLink(...) metodundaki parametresine karşılık gelen dizedir. Sonuç GUI üzerinden kullanıcıya gösterilebilir. | |
|
boolean. kütüphaneyi sadece oku durumunu getirir. Kütüphane bağlantısı ise false olarak döner. Böylece bağ yada bağlanmış kütüphane read-only değilse değiştirilebilir. | |
|
Kütüphane adını değiştirir. Kütüphane bağ olarak eklenmişse sadece yol adı değiştirilir. | |
|
Selected Methods of com.sun.star.script.XLibraryContainer | |
|
void. Bir kütüphane yükler | |
|
boolean. Kullanıcının bir kütüphanenin daha önceden yüklendiğini öğrenmesini sağlar. | |
|
void . Kütüphane deposundan bir kütüphaneyi siler. Şayet bu bir bağ ise bağ silinir.. | |
Basic'de Kütüphanenin yapısına bağlı olarak kapsama değişir. Bu bölümde Basic kaynak kod modülünde tanımlanan hangi değişkenlerin hangi kütüphanelerde ve modüllerde görülebilir ve erişilebilir olduğu açıklanmıştır. Genellikle Sub'ların yordam dışında deklare edilen değişkenler erişilebilir durumdadır. Sub içinde tanımlanan değişkenler lokaldir ve sub dışından erişilemez.. Örneğin:
Option Explicit ' Değişkenlerin deklarasyonunu vurgular
Sub Main
Dim a%
a% = 42 ' Tamam
NotMain()
End Sub
Sub NotMain
a% = 42 ' "Variable not defined" Değişken tanımlı değil hatası
End Sub
Değişkenler Sub dışındada tanımlanabilir. Böylece en azından deklare edildiği modül seviyesinde ulaşılabilir olması temin edilir. Değişkenleri yordam dışında tanımlamak için Private Özel, Public/Dim and Global komutları kullanılır.
Private komutu değişkenlerin kendi modülleri içinde lokal olmasını temin için kullanılır. aynı değişkenler iki farklı modülde tanımlanmışsa her modülde bağımsız olarak kullanılır. Örneğin:
Library Standard.Module1:
Private x As Double
Sub Main
x = 47.11 ' Module1 de x'i initalize et.
Module2_InitX ' Module2 de x'i initalize et
MsgBox x ' Module1 deki x'i görüntüle
Module2_ShowX ' Module2 deki x'i görüntüle
End Sub
Library Standard.Module2:
Private x As Double
Sub Module2_InitX
x = 47.12 ' Module2 de x'i initalize et
End Sub
Sub Module2_ShowX
MsgBox x ' Module2 deki x'i görüntüle
End Sub
Module1'deki Main çalıştırıldığında, (Module1'deki x) 47.11 görüntülenir.ve sonra 47,12 görüntülenir.(x of Module2).
Public and Dim komutları değişkenleri modül dışındanda erişilebilir. yapar. Bu bağlamda eşdeğer komutlardır. Aynı Kütüphane container'i içindeki tüm modüllerden erişilebilir durumdadırlar. Örneğin görülen kütüphane yapısında Application Basic Modules Standard/Module1, Standard/Module2, Library1/Module1, Library1/Module2'de Pulic ve dim olarak deklare edilen tüm değişkenler aynı modüllerden erişilebilir durumdadır. Onun için Kütüphane Container'ı mantıksal kök kapsamını temsil eder.
Formlar ve form kontrolleri Module ait olan[MODULE:com.sun.star.awt] Grafiksel arabirim desteği sağlayan UNO elemanlarıdır.. Toolkit controls Araç kutusu kontrolleri Model-View-Controller (MVC) tekniğine sahiptir. Kontrol elemanı üç mantıksal birime ayrılır ki bunlar Model, görünüm ve olay kontrolcü birimleridir. Modelde veri ve düşük seviye davranışları görülür. kontroller ve görünüm hakkında özel bilgiler bulunmaz. View elemanının görsel durumunu yönetir. Controller'de ise model ile kullanıcı arası etkileşimler yönetilir.
|
|
Not, Toolkit kontrolleri görünüm ve olayları bir mantıksal birim haline getirir. Böylece eleman için kullanıcı arabirimi oluşturulur. |
Aşağıdaki örnekte text field metin kutusu için Model, View ve Controller birimlerine ayrılma açıklanmıştır. Model görüntülenen metin, metin rengi maksimum karakter sayısı gibi verileri içerir. .Metin kutusu modeli com.sun.star.awt.UnoControlEditModel servisi ile tanımlanmıştır. Bu servis ise com.sun.star.awt.UnoControlModel servisi üzerinden geliştirilmiştir. Bu modelin tüm görünümleri com.sun.star.beans.XPropertySet arabirimiyle erişilebilen özellikler takımıyla tanımlanmıştır. View metin kutusu ve içeriğini görüntülemekten sorumludur. Aynı model için farklı görünümler hazırlamak mümkündür, ama Toolkit dialog'ları için olmaz. View model değişimleri hakkında bilgilendirilmelidir. Örneğin textcolor metin rengi değiştirilirse repaint yeniden çizim işleminin yapılmasına neden olur. Örneğin Kullanıcı klavyede delete tuşuna bastığında metin kutusunda seçilmiş olan metin silinir. MVC şeması hakkında daha detaylı bilgi 13 Formlar. kısmında bulunabilir
Tüm Toolkit controllerinin tabanı com.sun.star.awt.UnoControl servisindedir ve aşağıdaki arabirimleri aktarır:
com.sun.star.awt.XControl arabirimi control yapısını özelleştirir.. Örneğin, Model, View ve Control birimlerine erişim sağlanarak yönetimi gibi.
The com.sun.star.awt.XWindow arabirimi bir pencere elemanı ile ilgili düzenlemeler sağlanır.
The com.sun.star.awt.XView arabirimi bir çıkış aygıtına bağlanılması ve bir nesnenin çizilmesi için lüzumlu metotları sağlar.
Dialog düzenleyici kullanılarak, formun dizaynından sonra, bir geliştirici program kodu ile onun görüntülenmesini ister. Gerekli adımlar aşağıdaki örnekte gösterilmiştir: (BasicAndDialogs/ToolkitControls)
Sub ShowDialog()
Dim oLibContainer As Object, oLib As Object
Dim oInputStreamProvider As Object
Dim oDialog As Object
'Const ile değişkene değer verilirse program boyunca bir daha değiştirilemez
Const sLibName = "Library1"
Const sDialogName = "Dialog1"
REM library container
oLibContainer = DialogLibraries
REM load the library
oLibContainer.loadLibrary( sLibName )
REM get library
oLib = oLibContainer.getByName( sLibName )
REM get input stream provider
oInputStreamProvider = oLib.getByName( sDialogName )
REM create dialog control
oDialog = CreateUnoDialog( oInputStreamProvider )
REM show the dialog
oDialog.execute()
End Sub
Form kontrolü CreateUnoDialog()fonksiyonunun çağrılması ile yaratılır. com.sun.star.io.XInputStreamProvider arabiriminde nesne parametre olarak alınır. Bu nesne form için XML veri yapısı olarak girdi akımında temsil edilir. 11.4 Basic and Dialoglar - İleri düzey kütüphane Düzenleme bölümünde Kütüphaneyapısı içindeki nesneye ulaşım açıklanmıştır. Form kontrolü com.sun.star.awt.XDialog arabirimindeki execute()metodu ile çağrılır. endExecute()metodu ile kapatılabilir veya Cancel ve OK ddüğmeleri ile kapatılabilir
Bir geliştirici formun ya da olayların özelliklerini değiştirmak isterse, Diyalog Modeline ulaşmalıdır. Bir Diyalogdan com.sun.star.awt.XControl arabirimi, getModel metodu ile Diyalog modeline ulaşılır.
oDialogModel = oDialog.getModel()
veya kısaca
oDialogModel = oDialog.Model
Bir forma ait olan bütün kontroller mantıksal olarak gruplanmışlardır. All controls belonging to a dialog are grouped together logically. This hierarchy concept is reflected by the fact that a dialog control is a container for other controls. Karşılık gelen servis com.sun.star.awt.UnoControlDialog , com.sun.star.awt.XControlContainer arabirimini destekler. Bu arabirim ise içindeki elemanlara isimleriyle ulaşılabilme imkanını sağlar. OpenOffice.org Basic'de, her desteklenen metot ve arabirim nesneden uygun olan arabirim sorgulanmaksızın direk olarak çağrılır. TextField1 adlı bir kontrol basitçe oDialog nesnesinden elde edilebilir:
oControl = oDialog.getControl("TextField1")
Ekstra bilgi için, 3.4.3 Professional UNO - UNO Language Bindings - OpenOffice.org Basic kısmına bakın. Dialog ve kontrolleri arasındaki düzen dialog modelinde görülebilir com.sun.star.awt.UnoControlDialogModel. Ki o control modelleri için container'dır. Bu nedenlecom.sun.star.container.XNameContainer arabirimini destekle..Komntrol modeli dialog modelinden aşağıdaki gibi elde edilir:
oDialogModel = oDialog.getModel()
oControlModel = oDialogModel.getByName("TextField1")
Ya da kısaca
oControlModel = oDialog.Model.TextField1
Bir form gösterilmeden önce bazı değişiklikler yapılması mümkündür. Örnek olarak, Bir form başlığındaki yazının title özelliğini com.sun.star.beans.XPropertySet arabirimiyle değiştirebiliriz:
oDialogModel = oDialog.getModel()
oDialogModel.setPropertyValue("Title", "My Title")
kısaca
oDialog.Model.Title = "My Title"
Başka bir yaklaşımla, com.sun.star.awt.XDialog arabiriminin setTitle metodu kullanılabilir:
oDialog.setTitle("My Title")
Kısaca
oDialog.Title = "My Title"
Bir başka özellik BackgroundColor özelliğiyle, form için başka bir arka plan rengiayarlanır.
Tüm Toolkit (Araç çubuğu) kontrolleri genel özellik olarak tanımlanan bir sete sahiptir. Bunlar PositionX, PositionY, Width, Height, Name, TabIndex, Step ve Tag'dır.
|
|
Note that a Toolkit control model has those common properties only if it belongs to a dialog model. This has also some consequences for the creation of dialogs and controls at runtime. See 11.6 OpenOffice.org Basic and Dialogs - Creating Dialogs at Runtime. |
PositionX, PositionY, Width and Height özellikleri bir formun yada kontrolün çalışma anında pozisyonu ve boyunu değiştirir. Dialog düzenleyici ile düzenlenirken bu özellikler otomatik ayarlanır.
Name (İsim) özelliği tüm kontrol elemanları ve formlar için gereklidir, çünkü elemanlara adlarıyla ulaşılır. Dialog düzenleyicide bu isimler nesnenin ismine numara eklenmesiyle yaratılır. TextField1gibi.
TabIndex (Sekme sırası) özelliği tab tuşuyla form üzerinde gezilirken seçili olma sırasını belirler. İlk elemanın sıra sayısı 0'dır. Form düzenleyicide bir form kontrolü yerleştirildiğinde otomatik olarak atanır. Bu özellik mözellikler iletişim kutusu yardımıylşada değiştirilebilir. Çalışma anında ayarlanuırken dikkatli olun.
Tag (Ek bilgi) özelliği kontrol için sayı veya işaret gibi ekstra bilgi ekler.
Step (Sayfa) özelliği sıradaki bölümde detaylı olarak açıklanmıştır.
Bir form kullanıcıyı adım adım yönlendirebilmek için birden çok sayfaya sahip olabilir. Bu işlevsellik OpenOffice.org autopilotlarında kullanılır.Form Step (Sayfa-adım) özelliği iletişimin hangi sayfasının aktif olduğunu gösterir.Çalışma anında step özelliğin 1 artırarak yeni sayfa görüntülenir.
Step özelliği bir kontrolün görünür olduğu sayfayı belirler. Örneğin, bir kontrol step değeri 1 ise formun sadece birinci sayfasında görünür durumdadır. Şayet iletişimin sayfa değeri 2 olarak belirlenirse 1 değerli kontroller soluk görüntülenir. 2 değerli tüm kontroller görünür olurlar.
Sıfır sayfa değeri özel bir rol üslenir. Page özelliği 0 olan kontroller tüm sayfalardda görüntülenir. Sayet form step değeri 0 ise tüm kontroller sayfa sırasına bakılmaksızın görüntülenir.
Komut düğmesi com.sun.star.awt.UnoControlButton kullanıcıya düğme tıklaması ile bir uygulama çalıştırılması olanağı sağlar. genellikle etiket metni taşır, Kontrol modeliyle etiket değiştirilebilir:
oDialogModel = oDialog.getModel()
oButtonModel = oDialogModel.getByName("CommandButton1")
oButtonModel.setPropertyValue("Label", "My Label")
Yada kısaca:
oDialog.Model.CommandButton1.Label = "My Label"
Etiket com.sun.star.awt.XButton arabiriminin SetLabel metoduyla da değiştirilebilir:
oButton = oDialog.getControl("CommandButton1")
oButton.setLabel("My Label")
Çalışma anında butonu etkin ve pasif olarak ayarlamak mümkündür. Enabled özelliği true ve false ayarlanması ile istenen sonuç elde edilir. PushButtonType (Düğme türü) özelliği düğmenin varsayılan etkisini tanımlar. 0 varsayılan, 1 Ok, 2 Cancel ve 3 Help. Eğer düğme türü 2 olarak ayarlanmışsa düğmemiz bir Cancel düğmesi olarak davranır ve düğmeye basıldığında Formumuz kapanır. Bu durumda execute()metotu 0 değeri ile geri döner. OK düğmesi execute()metotunda 1 değeri geri döndürür. DefaultButton özelliği form düğmesinin standard bir düğme olduğunu gösterir. ENTER düğmesine basılmasıyla başka bir kontrol seçili olsa bile bu düğme seçilir. Tabstop (Sekme duruşu)özelliği düğmeye TAB tuşu ile ulaşılabileceğini ayarlar.
Düğmelerde ImageURL ( Grafik )özelliği ile resim görüntüleme yeteneği de mevcuttur. (...) düğmesi ile bir resim dosyası seçimi sağlanır. ImageURL resim dosyasının yolunu tutar.
oButtonModel = oDialog.Model.CommandButton1
oButtonModel.ImageURL = "file:///D:/Office60/share/gallery/bullets/bluball.gif"
oButtonModel.ImageAlign = 2
tüm standard .gif, .jpg, .tif, .wmf ve .bmp gibi, grafik biçimleri desteklenir. ImageAlign ( Grafik Hizalaması ) özelliği ile 0 sol, 1 tepe, 2 sağ ve 3 alt olarak resim düğme içinde hizalanır. Şayet resim düğme boyutundan büyük ise fazla kısım ölçekleme yapılmaksızın kesilir. Onun için image control daha fazla işlevsellik sunar.
Eğer kullanıcı düğme fonksiyonuna sahip olmayan bir resim görüntülemek isterse, Image control com.sun.star.awt.UnoControlImageControl seçilmelidir. .ScaleImage ( Ölçek ) özelliğinin true olarak ayarlanması kontrol resmi otomatikman ölçeklendirir. İmage kontrol elemanı kendi başına bir düğme gibi de çalışabilir. kullanımı için bir düğme üzerine yerleştirilmesi gereksizdir. Düğmenin tıklanabilmesi için Etkin özelliğini hayır ayarlayın.
oImageControlModel = oDialog.Model.ImageControl1
oImageControlModel.ImageURL = "file:///D:/Office60/share/gallery/photos/beach.jpg"
oImageControlModel.ScaleImage = True
Check box kontrolü com.sun.star.awt.UnoControlCheckBox çoklu seçenek guruplarından kullanıcı tarafından tek ya da birden çok seçim yapılabilmesi için kullanılır. Bir onay kutusu seçildiğinde bir onay imi görüntülenir. Onay kutuları option buttons (seçenek düğmesi) den farklı olarak, birbirlerinden bağımsız çalışır.Aynı anda birden fazla seçim yapılabilir.
State ( durum ) özelliği, 0 is seçili değil, 1 seçili , 2 tanımsız, halleri Onay kutusu için mümkündür. TriState( Üç-durumlu ) özelliği true ayarlanırsa bu mod bu ise kullanıcıya çekimser kalma hakkı tanır.
oCheckBoxModel = oDialog.Model.CheckBox3
oCheckBoxModel.TriState = True
oCheckBoxModel.State = 2
Aynı sonuç com.sun.star.awt.XCheckBox arabiriminin getControl metodu kullanımı ile de elde edilebilir :
oCheckBox = oDialog.getControl("CheckBox3")
oCheckBox.enableTriState( True )
oCheckBox.setState( 2 )
Bir seçenek class=Codeintext>com.sun.star.awt.UnoControlRadioButton düğmesi kullanıcı tarafından seçim yapılan iki durumlu basit bir anahtardır. Genellikle seçenek düğmeleri görüntülenen gruplar içinden, çeşitli seçeneklerin seçildiği kontrollerdir. Onay kutuları ile seçenek düğmeleri benzer işlevler görür, ancak grubdaki bir seçenek düğmesinin seçimi diğer seçeneklerin seçilmiş olma durumuna son verir.
|
|
Not, aynı guruba ait olan seçenek düğmeleri ardışık tab indeksine sahip olmalıdır. İki gurublu bir yapıda seçenek düğmeleri tab indeksi iki gurubun arasında bulunan herhangi bir kontrolle ayrılabilir . |
Genelde bir Group Box ( Gurup kutusu ) veya yatay, dikey çizgi kullanılır. Böylece görsel olarak seçenek düğmeleri gruplanmış olur. Group box, yatay ve dikey çizgiler kontrol elemanlar değildir seçenek düğmeleriyle fonksiyonel olarak ilişkileri yoktur. Option button'ları ardışık olarak tab indeks değerlerine sahip olmalıdır.
Option button durumuna State ( durum ) özelliği ile ulaşılır. 0 seçili olmadığını 1 ise seçili olduğunu gösterir.
Function IsChecked( oOptionButtonModel As Object ) As Boolean
Dim bChecked As Boolean
If oOptionButtonModel.State = 1 Then
bChecked = True
Else
bChecked = False
End If
IsChecked = bChecked
End Function
Bir label field kontrolü com.sun.star.awt.UnoControlFixedText ekranda kullanıcının düzenleyemediği metin gösterir. Bir text field, List box ve Combo box ile ilgili açıklamalar bu elemenla yapılabilir. Label ( Etiket ) özelliği ile belirtilen metin gösterilir. Align ( hizalama ) özelliği metinin kontrolde hizalanması ayarlanır. 0 sol, 1 ortala, 2 sağ değerlerine sahiplerine sahip olabilir. Varsayılan olarak metin bir satırda görüntülenir ve matin ayrılmış alanı aşarsa metin kesilerek görüntülenir. Bu davranış multiline ( Kelime kesme evet ) özelliğinin True yapılmasıyla değiştirilir, böylece bütün metin birden çok satırda görüntülenir. Border ( kenarlık ) özelliği varsayılan olarak yoktur. Özellik değeri 0 ise kenarlık yok, 1 ise 3d kenarlık, 2 ise basit kenarlık değerlerine sahip olabilir. Metinin Fontu Fontdescriptor ( Karakter kümesi ) özelliği ile ayarlanır. Bu özelliğin Dialog editör ile ayarlanması tavsiye edilir.
Label field'ları herhangi etiketi olmayan kontroller için kısa yol tuşları tanımlamak için kullanılabilir. Herhangi bir kontrol için (~) tilde işareti eklenerek tanımlanabilir. Kullanıcı ALT tuşuna basarken karakter tuşuna basarsa kontrol aktifleşir. Label field etkinleşemiyeceği için tab sırasıda sonraki kontrol aktifleşmiş olur. Önemli nokta ise iki kontrolünde ardışık tab sırasına sahip olmasıdır.
oLabelModel = oDialog.Model.Label1
oLabelModel.Label = "Enter ~Text"
Bir text field konrolü com.sun.star.awt.UnoControlEdit programın yürütülmesi anında kullanıcıdan bir girdi değeri alınması için kullanılır. Genellikle düzenlenebilir metin çalışmaları için kullanılır, fakat ReadOnly ( Salt okunur ) özelliğinin True olarak ayarlanması ile içindeki metinin düzenlenmesi engellenebilir. İçinde görüntüğlenen metin Text ( Metin ) özelliği ile kontrol edilir. Metin kutusuna girilebilecek maksimum karakter sayısı MaxTextLen ( en fazla metin uzunluğu ) özelliği ile belirlenir. 0 değeri girilirse karakter uzunluğu için bir limit tanımlanmamış olur. Varsayılan olarak text field bir satır olarak görüntülenir. Bu davranış MultiLine ( Çok satırlı girdi ) özelliğinin True yapılması ile değiştirilir. HScroll ve VScroll özellikleri bir dikey ve yatay kaydırma çubuğu görüntülenmesini sağlar.
Text field TAB tuşu ile aktifleştirildiğinde içindeki tüm metin seçilir ve vurgulanır. İmleç ise metinin sağinda yer alır. Kullanıcı metin seçiliyken yazmaya başlarsa seçilmiş olan metin silinir. Bu durumu önlemek için com.sun.star.awt.XTextComponent arabirimi üzerinden bu davranış ve seçim statüsü aşağıdaki gibi değiştirebilir:
Dim sText As String
Dim oSelection As New com.sun.star.awt.Selection
REM get control
oTextField = oDialog.getControl("TextField1")
REM görüntülenen metni ayarla
sText = "Displayed Text"
oTextField.setText( sText )
REM seçimi ayarla
oSelection.Min = 0
oSelection.Max = Len( sText )
oTextField.setSelection( oSelection )
Text field kontrolü ile şifre girişleri de yapılabilir. EchoChar ( Parola karakterleri ) özelliği kullanıcı giriş yaparken ekranda görüntülenecek karakterin değiştirilmesini sağlar. bu arada MaxTextLen özelliği ile giriş yapılabilecek maksimum karakter sayısını da belirleyebilirsiniz.:
oTextFieldModel = oDialog.Model.TextField1
oTextFieldModel.EchoChar = Asc("*")
oTextFieldModel.MaxTextLen = 8
Kullanıcı metin kutusuna sayısal, tarih gibi herhangi veri girebilir. Bu değerler metin olarak depolanır. Bu tip özel girdiler gerekiyorsa metin kutusu yerine date field, time field, numeric field, currency field veya formatted field kontrol elemanlarını kullanın.
List box kontrolü com.sun.star.awt.UnoControlListBox bir liste görüntüler böylece kullanıcı bir veya daha fazla liste elemanı seçebilir. Şayet eleman sayısı liste kutusunun görüntüleyebileceğinden fazla ise otomatik olarak kaydırma çubukları görüntülenir. Eğer Dropdown (Açılır liste ) özelliği True ise elemanlar bir drop-down box'ta görüntülenir. Açılır kutunun satır sayısı, LineCount özelliği ile belirlenir. Listedeki eleman sayısı StringItemList özelliği ile kontrol edilir. Şayet MultiSelection özelliği True olarak atanmışsa tüm seçilmiş elemanlar SelectedItems özelliği ile kontrol edilir ve birden fazla seçim yapılabilir.
com.sun.star.awt.XListBox arabirimi ile çalışmak kolay olabilir. AddItem metodu ile bir listede istenilen yereeleman ilave edilir. Örneğin aşağıda listenin sonuna bir madde eklenmektedir:
Dim nCount As Integer
olist box = oDialog.getControl("list box1")
nCount = olist box.getItemCount()
olist box.addItem( "New Item", nCount )
Çoklu maddeler addItems metodu ile ilave edilir. Listeden bir madde silmek için removeItems metodu kullanılır. Örneğin aşağıda listedeki ilk madde silinmektedir:
Dim nPos As Integer, nCount As Integer
nPos = 0
nCount = 1
olist box.removeItems( nPos, nCount )
Bir list box elemanı selectItemPos, selectItemsPos ve selectItem metotlarıyla önseçilmiş hale getirilebilir. Örnek listede birinci madde seçilmektedir:
olist box.selectItemPos( 0, True )
Halihazırda seçilmiş olan madde getSelectedItem metoduyla elde edilir:
Dim sSelectedItem As String
sSelectedItem = olist box.getSelectedItem()
Combo box kontrolü com.sun.star.awt.UnoControlComboBox kullanıcıya seçeneklerin listesini gösterir. İlaveten kullanıcı listede olmayan seçenek girilebilmesi için bir text field içerir. Bir Combo box ile kullanıcıya tavsiye edilen seçenekler ile birlikte başka bir giriş imkanı tanırken, list box sadece seçeneklerden birinin seçimi için kullanılır.
Commo box'ın özellikleri ve işlevleri list box ile benzerdir. Combo box'da Dropdown özelliği True olarak setlenerek açılır pencerede liste elemanları görüntülenebilir. StringItemList özelliği ile hali hazırdaki listeye erişilebilir. Text field 'da görüntülenen metin Text özelliği ile kontrol edilir. Örneğin eğer kullanıcı listeden bir madde seçerse seçilmiş olan madde metin kutusunda görüntülenir ve Text özelliği kullanımı ile program tarafından anlaşılır:
Function GetSelectedItem( oComboBoxModel As Object ) As String
GetSelectedItem = oComboBoxModel.Text
End Function
Kullanıcı metin kutusuna bir yazı yazarken, otomatik kelime tamamlama özelliği faydalıdır. Autocomplete özelliği True olarak ayarlanırsa bu işlev aktifleşir. Combo box liste elemanlarına ulaşım için, com.sun.star.awt.XComboBox arabiriminin kullanılması tavsiye edilir:
Dim nCount As Integer
Dim sItems As Variant
REM get control
oComboBox = oDialog.getControl("ComboBox1")
REM Öncelikle listedeki eski maddeleri silelim
nCount = oComboBox.getItemCount()
oComboBox.removeItems( 0, nCount )
REM Yeni maddeleri listeye ekleyelim
sItems = Array( "Item1", "Item2", "Item3", "Item4", "Item5" )
oComboBox.addItems( sItems, 0 )
Eğer bir iletişimdeki görülebilir alan içerikten küçükse, scroll bar kontrolü com.sun.star.awt.UnoControlScrollBar içerik içinde yatay ve/veya dikey gezinti imkanı sağlar. Ek olarak kaydırma çubuğu kontrolü scroll bar içermeyen kontrol elemanlarına da kaydırma desteği verilmesini sağlar.
Bir kaydırma çubuğunun yönü Orientation özelliği ile tariflenir, yatay veya dikey olabilir. Bir kaydırma çubuğu kaydırma kutusuna sahiptir, böylece kullanıcı fare ile hızlı bir şekilde istediği pozisyona ulaşabilir. Kaydırma kutusunun pozisyonu ScrollValue ( Kaydırma değeri ) özelliği tarafından kontrol edilir. Bir yatay kaydırma çubuğunda en sol position minimum scroll value 0'a karşılık gelir. Kaydırma çubuğunun en sağ pozisyonu ScrollValueMax ( Azami kaydırma değeri ) ile tanımlanır. Bir kaydırma çubuğu en sonundaki oklara da sahiptir. Böylece kaydırma değeri artırılıp azaltılabilir. LineIncrement ( Küçük değişim ) özelliği vasıtasıyla oklara kliklemeyle kaydırma değerinin ne kadar değişeceği belirlenir. Kaydırma çubuğuna kutu ile oklar arasındaki bölgede tıklanırsa BlockIncrement ( Büyük değişim ) değerine göre kaydırma değeri artar veya azalır. Kaydırma kutusu iletişim kontrolündeki görüntülenebilir bölgeyi temsil eder. VisibleSize ( Görünür boyut )özelliğiyle % kısım olarak iletişimin görüntülenebilir bölümü için değer verilebilir. .
oScrollBarModel = oDialog.Model.ScrollBar1
oScrollBarModel.ScrollValueMax = 100
oScrollBarModel.BlockIncrement = 20
oScrollBarModel.LineIncrement = 5
oScrollBarModel.VisibleSize = 20
Scroll bar kontrolü kaydırma kutusunun kaydırma çubuğundaki hareketini izlemek için adjustment olayını kullanır com.sun.star.awt.AdjustmentEvent Ayarlama olayları için bir olay event handler ( olay yöneticisi de geliştirici görüntülenebilir içerik pozisyonunu değiştirebilir. Bunun için ScrollValue özelliği kullanılır. Bitişikteki örnekte, Label field dialog boyutunu aşmaktadır. Kullanıcı scroll bar'ı her tıklağında AdjustmentHandler() makrosu çağrılmakta ve Label field pozisyonu değişmektedir. (BasicAndDialogs/ToolkitControls/ScrollBar.xba)
Sub AdjustmentHandler()
Dim oLabelModel As Object
Dim oScrollBarModel As Object
Dim ScrollValue As Long, ScrollValueMax As Long
Dim VisibleSize As Long
Dim Factor As Double
Static bInit As Boolean
Static PositionX0 As Long
Static Offset As Long
REM Etiket alanımodeline ulaşalım
oLabelModel = oDialog.Model.Label1
REM Başlangıçtaki etiket alanının pozisyonunu ve ofsetini hesaplayarak hatırlayalım
If bInit = False Then
bInit = True
PositionX0 = oLabelModel.PositionX
OffSet = PositionX0 + oLabelModel.Width - (oDialog.Model.Width - Border)
End If
REM Kaydırma çubuğunun modelini ele alalım
oScrollBarModel = oDialog.Model.ScrollBar1
REM Şu anki scrool value'yi bulalım
ScrollValue = oScrollBarModel.ScrollValue
REM hesapladıktan sonra label kontrol için pozisyonu ayarlayalım
ScrollValueMax = oScrollBarModel.ScrollValueMax
VisibleSize = oScrollBarModel.VisibleSize
Factor = Offset / (ScrollValueMax - VisibleSize)
oLabelModel.PositionX = PositionX0 - Factor * ScrollValue
End Sub
Group box kontrolü com.sun.star.awt.UnoControlGroupBox option button, check box gibi diğer bileşenleri görsel olarak gruplamak için bir çerçeve yaratır. Diğer kontrol elemanları için Container işlevlerine sahip değildir. Daha fazla detay için 11.5.2 Basic and Dialoglar - Dialoglar ve Dialog kontrolleri - Dialog Kontrolleri - Option Button'a bakın
Group box Label özelliği ile ayarlanan, sınırları içine gömülmüş bir etiket içerir. Çoğu halde grup kutusu pasif olarak kullanılır.
Progress bar kontrolü com.sun.star.awt.UnoControlProgressBar kullanıcıya işlemin gelişimi hakkında genişleyen yada daralan bir çubuk ile görünüm sunar. ProgressValueMin ve the ProgressValueMax özellikleri ile minumum ve maksimum gelişim değerleri kontrol ve set edilir. ProgressValueözelliği ile tamamlanma değeri kontrol edilir. Varsayılan olarak çubuğun rengi mavidir, ama istenirse FillColor özelliği ile değiştirilebilir. Progres bar işlevi aşağıdaki örnekle gösterilmiştir: (BasicAndDialogs/ToolkitControls/ProgressBar.xba)
Sub ProgressBarDemo()
Dim oProgressBar As Object, oProgressBarModel As Object
Dim oCancelButtonModel As Object
Dim oStartButtonModel As Object
Dim ProgressValue As Long
REM süreç çubuğu ayarları
Const ProgressValueMin = 0
Const ProgressValueMax = 40
Const ProgressStep = 4
REM Minum ve maksimum süreç değerinin ayarlanması
oProgressBarModel = oDialog.Model.ProgressBar1
oProgressBarModel.ProgressValueMin = ProgressValueMin
oProgressBarModel.ProgressValueMax = ProgressValueMax
REM Cancel ve Start düğmesininin etkisizleştirilmesi
oCancelButtonModel = oDialog.Model.CommandButton1
oCancelButtonModel.Enabled = False
oStartButtonModel = oDialog.Model.CommandButton2
oStartButtonModel.Enabled = False
REM progress bar görüntüle
oProgressBar = oDialog.getControl("ProgressBar1")
oProgressBar.setVisible( True )
REM her bir saniyede progress value'yi artır.
For ProgressValue = ProgressValueMin To ProgressValueMax Step ProgressStep
oProgressBarModel.ProgressValue = ProgressValue
Wait 1000
Next ProgressValue
REM progress bar'ı gizle
oProgressBar.setVisible( False )
REM cancel ve start düğmelerini etkinleştir
oCancelButtonModel.Enabled = True
oStartButtonModel.Enabled = True
End Sub
Line kontrolü com.sun.star.awt.UnoControlFixedLine bir form üzerinde basit çizgiler yaratır. Genelde formun görsel olarak ait bölümlere ayrılması için kullanılır. Orientation özelliği ile yatay veya dikey olarak ayarlanabilir. Label özelliği ile çizgiye bir başlık metni atanabilir. Sadece yatay çizgi üzerinde etiket görüntülenir.
Date field kontrolü com.sun.star.awt.UnoControlDateField metin kutusuna tarih girebilme ve gösterebilme özelliği kazandırır. Alanda görüntülenen tarih, Date özelliği tarafından kontrol edilir..Date değeri long tipli bir değişkendir. YYYYMMDD formatı ile kullanılmalıdır. Örneğin , 30 eylül 2002 aşağıdaki gibi ayarlanır:
oDateFieldModel = oDialog.Model.DateField1
oDateFieldModel.Date = 20020930
Şu anki tarih Date and CDateToIso fonksiyonları ile ayarlanır:
oDateFieldModel.Date = CDateToIso( Date() )
Minimum ve maksimum tarih DateMin ve the DateMaxözelliği ile alana girilebilecek tarih sınırlandırılabilir.alanda görüntülenecek tarih formatı DateFormat ve DateShowCentury özelliği ile ayarlanabilir. Fakat DateShowCentury kullanımı kısıtlanmıştır. Bazı formatlar sistem biçimine bağlıdır. Kullanıcı tarafından yapılan girişler kontrol edilerek yanlış girişler otomatik engellenir. Dropdown özelliği bir takvim üzerinden tarih girilmesini sağlar
Şu an için bu özellik devre dışıdır.
Time field kontrolü com.sun.star.awt.UnoControlDateField ile zaman girilir ve görüntülenir. isplays and enters time values. Time Tözelliği ile saat ayarlanır ve getirilir . Time değeri HHMMSShh formatında Long tipli değişkendir.Örneğin, 15:18:23 böyle ayarlanır:
oTimeFieldModel = oDialog.Model.TimeField1
oTimeFieldModel.Time = 15182300
minimum ve maksimum zaman değeri TimeMin ve TimeMax ( En az / en Fazla zaman ) özelliği ile girilebilir.Görüntülenen zaman zaman formatına bağlıdır. TimeFormatözelliği ile görünüm biçimi değiştirilebilir.
StrictFormat özelliği True yapılırsa zaman girişi kontrol edilebilir.
Kısa time format çalışmamaktadır.
Numeric field kontrolü com.sun.star.awt.UnoControlNumericField şayet kullanıcının limitlenmiş olarak sayısal değer girmesi gerekiyorsa tercih edilmelidir. Sayısal değer Value özelliği ile kontrol edilir ve double değişken tipine sahiptir. Minimum ve maximum değerler için ValueMin ve the ValueMax ( En küçük/en büyük değer ) özelliği ile kullanıcı girişi sınırlanabilir. DecimalAccuracy ( Ondalık hassasiyet ) özelliği ile virgülden sonraki basamak sayısı belirlenir. Örneğin 6 sayısı virgülden sonra altı basamak olarak değerlendirilir. ShowThousandsSeparator ( Binler ayracı ) özelliği True ayarlanırsa sayı binler ayraçları ile görüntülenir. Numeric field bir spin Button ( Döndürme düğmesi ) kontrolüne de sahiptir. Spin özelliğinin Enable yapılması ile etkinleşir. Spin Button fare kullanımıyla görünen değerin ValueStep ( Artış/Azalış Değeri )özelliğinde belirtilen sayı kadar artırılıp azaltılabilmesini sağlar.
oNumericFieldModel = oDialog.Model.NumericField1
oNumericFieldModel.Value = 25.40
oNumericFieldModel.DecimalAccuracy = 2
Currency field kontrolü com.sun.star.awt.UnoControlCurrencyField para birimi değerleri girmek ve görüntülemek için kullanılır. Buna ilaveten bir para birimi simgesi de gösterilir. CurrencySymbol ( Döviz sembolü ) özelliği ayarlanması ile gösterimi sağlanır. Şayet PrependCurrencySymbol ( Önek sembolü ) True olarak ayarlanırsa para birimi sembolü değerin başında görüntülenir.
oCurrencyFieldModel = oDialog.Model.CurrencyField1
oCurrencyFieldModel.Value = 500.00
oCurrencyFieldModel.CurrencySymbol = "€"
oCurrencyFieldModel.PrependCurrencySymbol = True
Formatted field kontrolü com.sun.star.awt.UnoControlFormattedField girilen ve gösterilen verinin biçimlendirilmesi için kullanılır. FormatsSupplier ( Tam Biçim ) özelliği ve. FormatKey ( Biçimlendirme ) özelliği ayarlanmalıdır. Bu özelliklerin dialog özellik düzenleyici iletişimiyle ayarlanması tavsiye edilir. Desteklenen sayı formatları number, percent, currency, date, time, scientific, fraction and boolean ( sayı, yüzde,para birimi, tarih, saat, bilimsel, kesirli ve mantıksal ) özelliklidir. Bu nedenle Formatted field kontrolü date field, time field, numeric field veya currency field kontrolleri yerine kullanılabilir. NumberFormatsSupplier 6 Office Development kısmında açıklanmıştır.
Pattern field kontrolü com.sun.star.awt.UnoControlPatternField tanımlanmış olan maskeye göre bir dizeyi görüntüler ve girilmesini sağlar. EditMask ( Maskeyi düzenle ) özelliği ile kullanıcın girebileceği karakterler özel bir kod olarak tanımlanır. düzenleme maskesinin uzunluğu mümkün olan girişleri tanımlar. Şayet düzenleme maskesine uygun olmaya bir giriş yapılırsa giriş reddedilir. Örneğin, edit mask "NNLNNLLLLL" dizesi girilmişse L metin karakter olarak N 0..9 arası sayısal karakter maske sırasına göre girilebilir. OpenOffice.org online yardımında geçerli dize sembolleri ile ilgili tam bir liste bulunur. LiteralMask ( Hazır maske )kontrol etkinleştiğinde bulunması gereken dizeyi ayarlamak için kullanılır. Literal Mask'a örnek olarak, yukardaki maskeye uyan "__.__.2002" dizesi girilebilir. Bu durumda kullanıcı sadece sadece 4 nümeric değer girer.
oPatternFieldModel = oDialog.Model.PatternField1
oPatternFieldModel.EditMask = "NNLNNLLLLL"
oPatternFieldModel.LiteralMask = "__.__.2002"
File control com.sun.star.awt.UnoControlFileControl bir text field'ın bütün özelliklerine sahiptir. Ek olarak ta bir komut düğmesi mevcuttur. Komut düğmesine tıklandığında Dosya seçimi iletişimi görüntülenir. Text ( Metin )özelliği ile verilen ilk dizin yolu ile görüntülenir.
Dizin bir sistem yolu olarak verilmelidir.Bu anda dosya URL'si çalışmaz. Basic içinde ConvertToURL()fonksiyonu ile sistem yollarını URL gösterimine çevirebilirsiniz.
oFileControl = oDialog.Model.FileControl1
oFileControl.Text = "D:\Programme\Office60"
File Control'da dosya aç iletişimi için dosya adları filitrelenemez Bir başka yol ise bir text field ve komut düğmesi kullanımı ve düğmeye makro ataması şeklinde olabilir. File dialog com.sun.star.ui.dialogs.FilePicker ara birimi ile düzenlenir. Bir örnek olarak aşağıdaki gibi dosya mevcuttur. (BasicAndDialogs/ToolkitControls/FileDialog.xba)
Sub OpenFileDialog()
Dim oFilePicker As Object, oSimpleFileAccess As Object
Dim oSettings As Object, oPathSettings As Object
Dim oTextField As Object, oTextFieldModel As Object
Dim sFileURL As String
Dim sFiles As Variant
REM Dosya iletişimi
oFilePicker = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" )
REM Filitre ayarla
oFilePicker.AppendFilter( "All files (*.*)", "*.*" )
oFilePicker.AppendFilter( "StarOffice 6.0 Text Text Document", "*.sxw" )
oFilePicker.AppendFilter( "StarOffice 6.0 Spreadsheet", "*.sxc" )
oFilePicker.SetCurrentFilter( "All files (*.*)" )
REM Dosya yolu seçili değilse konfigurasyon dosyaların al
oTextFieldModel = oDialog.Model.TextField1
sFileURL = ConvertToURL( oTextFieldModel.Text )
If sFileURL = "" Then
oSettings = CreateUnoService( "com.sun.star.frame.Settings" )
oPathSettings = oSettings.getByName( "PathSettings" )
sFileURL = oPathSettings.getPropertyValue( "Work" )
End If
REM Görüntülenecek dizini ayarlayın
oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
If oSimpleFileAccess.exists( sFileURL ) And oSimpleFileAccess.isFolder( sFileURL ) Then
oFilePicker.setDisplayDirectory( sFileURL )
End If
REM Dosya iletişimini aç
If oFilePicker.execute() Then
sFiles = oFilePicker.getFiles()
sFileURL = sFiles(0)
If oSimpleFileAccess.exists( sFileURL ) Then
REM Text field içine dosya yolunu yerleştir
oTextField = oDialog.GetControl("TextField1")
oTextField.SetText( ConvertFromURL( sFileURL ) )
End If
End If
End Sub
OpenOffice.org Basic kullanıldığı zaman, diyalog düzenleyici form tasarımında kullanılan bir araçtır. ek açıklama için 11.2 Basic and Dialogs - Basic IDE bölümüne bakınız. for additional information. OpenOffice.org 2.0'den bu yana, Dialog düzenleyici ile hazırlanmış formlar desteklenen scripting framework dilleri ile yazılmış makrolarla yüklenebilir. com.sun.star.awt.XDialogProviderAPI arabirimi kullanılarak,(BeanShell, JavaScript, Java, OpenOffice.org Basic) yüklenebilirler. Detaylar için 18.2 Scripting Framework - Scripting Framework kullanımı bölümüne bakın.
İlaveten formları, Javaswing komponetlerine benzer şekilde makrolarla çalışma anında yaratabilirsiniz.event listener ( Olay dinleyicileri ) uygun olan kontroller için çalışma anında yazılır.
Bu bölümdeki açıklanan Java örneğinde, Etiket alanı ve bir komut düğmesi olan, modal ( kontrolün diğer bileşenlere devredilemediği form tipi ) basit bir dialog yaratılmaktadır. Kullanıcı düğmeyi klikledikçe etiket alanı güncellenerek düğmeye toplam kaç kez basıldığı görüntülenmektedir.
Dialog Java içinde bir UNO komponenti olarak implement ( bir arabirimde metotları tanımlanması ) edilmektedir. com.sun.star.examples.SampleDialog servisi olarak oluşturulmaktadır. Java Component'leri ve UNO çekirdek arabirimleri implementation'u detayları için 4.5.6 Writing UNO Components - Simple Component in Java - Storing the Service Manager for Further Use. bölümüne bakın. Metot formu aşağıdaki şekilde oluşturmakta ve uygulamaktadır.
/** method for creating a dialog at runtime
*/
private void createDialog() throws com.sun.star.uno.Exception {
// get the service manager from the component context
XMultiComponentFactory xMultiComponentFactory = _xComponentContext.getServiceManager();
// Dialog modelini yaratıp özelliklerini ayarlayın
Object dialogModel = xMultiComponentFactory.createInstanceWithContext(
"com.sun.star.awt.UnoControlDialogModel", _xComponentContext);
XPropertySet xPSetDialog = (XPropertySet)UnoRuntime.queryInterface(
XPropertySet.class, dialogModel);
xPSetDialog.setPropertyValue("PositionX", new Integer(100));
xPSetDialog.setPropertyValue("PositionY", new Integer(100));
xPSetDialog.setPropertyValue("Width", new Integer(150));
xPSetDialog.setPropertyValue("Height", new Integer(100));
xPSetDialog.setPropertyValue("Title", new String("Runtime Dialog Demo"));
// Dialog modelinin servis yönetcisini getirin
XMultiServiceFactory xMultiServiceFactory = (XMultiServiceFactory)UnoRuntime.queryInterface(
XMultiServiceFactory.class, dialogModel);
// button model'ini yaratıp özelliklerini ayarlayın
Object buttonModel = xMultiServiceFactory.createInstance(
"com.sun.star.awt.UnoControlButtonModel" );
XPropertySet xPSetButton = (XPropertySet)UnoRuntime.queryInterface(
XPropertySet.class, buttonModel);
xPSetButton.setPropertyValue("PositionX", new Integer(50));
xPSetButton.setPropertyValue("PositionY", new Integer(30));
xPSetButton.setPropertyValue("Width", new Integer(50));
xPSetButton.setPropertyValue("Height", new Integer(14));
xPSetButton.setPropertyValue("Name", _buttonName);
xPSetButton.setPropertyValue("TabIndex", new Short((short)0));
xPSetButton.setPropertyValue("Label", new String("Click Me"));
// label model and set the properties ( Etiketi yaratın ve özelliklerini ayarlayın )
Object labelModel = xMultiServiceFactory.createInstance(
"com.sun.star.awt.UnoControlFixedTextModel" );
XPropertySet xPSetLabel = ( XPropertySet )UnoRuntime.queryInterface(
XPropertySet.class, labelModel );
xPSetLabel.setPropertyValue("PositionX", new Integer(40));
xPSetLabel.setPropertyValue("PositionY", new Integer(60));
xPSetLabel.setPropertyValue("Width", new Integer(100));
xPSetLabel.setPropertyValue("Height", new Integer(14));
xPSetLabel.setPropertyValue("Name", _labelName);
xPSetLabel.setPropertyValue("TabIndex", new Short((short)1));
xPSetLabel.setPropertyValue("Label", _labelPrefix);
// insert the control models into the dialog model(Dialog modeline kontrol modellerini yerleştirin )
XNameContainer xNameCont = (XNameContainer)UnoRuntime.queryInterface(
XNameContainer.class, dialogModel);
xNameCont.insertByName(_buttonName, buttonModel);
xNameCont.insertByName(_labelName, labelModel);
// create the dialog control and set the model ( Dialog modelini yaratın ve modeli ayarlayın )
Object dialog = xMultiComponentFactory.createInstanceWithContext(
"com.sun.star.awt.UnoControlDialog", _xComponentContext);
XControl xControl = (XControl)UnoRuntime.queryInterface(
XControl.class, dialog );
XControlModel xControlModel = (XControlModel)UnoRuntime.queryInterface(
XControlModel.class, dialogModel);
xControl.setModel(xControlModel);
// add an action listener to the button control ( Düğme kontrolü için hareket izleyici ekleyin )
XControlContainer xControlCont = (XControlContainer)UnoRuntime.queryInterface(
XControlContainer.class, dialog);
Object objectButton = xControlCont.getControl("Button1");
XButton xButton = (XButton)UnoRuntime.queryInterface(XButton.class, objectButton);
xButton.addActionListener(new ActionListenerImpl(xControlCont));
// create a peer ( Eşini yaratın )
Object toolkit = xMultiComponentFactory.createInstanceWithContext(
"com.sun.star.awt.Toolkit", _xComponentContext);
XToolkit xToolkit = (XToolkit)UnoRuntime.queryInterface(XToolkit.class, toolkit);
XWindow xWindow = (XWindow)UnoRuntime.queryInterface(XWindow.class, xControl);
xWindow.setVisible(false);
xControl.createPeer(xToolkit, null);
// execute the dialog ( Formu çalıştırın )
XDialog xDialog = (XDialog)UnoRuntime.queryInterface(XDialog.class, dialog);
xDialog.execute();
// dispose the dialog ( Form uygulamasını bitirin )
XComponent xComponent = (XComponent)UnoRuntime.queryInterface(XComponent.class, dialog);
xComponent.dispose();
}
Önce com.sun.star.awt.UnoControlDialogModel servisine, servis manageri iletisi vasıtasıyla dialog modeli yaratılmıştır. Sonra com.sun.star.beans.XPropertySet arabirimi kullanılarak formun pazisyonu, boyutu ve başlığı ayarlanmıştır.Kritik uygulamalarda performans sağlanması için com.sun.star.beans.XMultiPropertySet arabiriminin kullanılması tavsiye edilir. Bu noktada Form modeli kontrol modeli içermeyen boş bir dialog'dur.
Dialog container'ındaki bütün kontrol modelleri; “PositionX”, “PositionY”, “Width”, “Height”, “Name”, “TabIndex”, “Step” ve “Tag” genel özelliklerine sahiptir. Bu özellikler isteğe bağlıdır ve sadece özel nesne servisi ile yaratılmışsa eklenebilirler. Bu yüzden bir dialog modeli com.sun.star.lang.XMultiServiceFactory arabiriminide destekler. Şayet dialog modeli Sevice Manager ile yaratılmışsa bu genel özellikler kaybolur.
|
|
Not Sadece ait olduğu Dialog modelinden yaratılmış olan Formlar “PositionX”, “PositionY”, “Width”, “Height”, “Name”, “TabIndex”, “Step” ve “Tag” genel özelliklerine sahiptir . |
Komut düğmesi ve Etiket alanı için Kontrol modelleri yaratıldıktan ve genel özellikleri ayarlandıktan sonra com.sun.star.container.XNameContainer arabirimi kullanılarak. Form modeli tamamıyla tanımlanmıştır.
Formu ekranda görüntülemek için com.sun.star.awt.UnoControlDialog dialog kontrolü yaratılmakta karşılık geleni ayarlanmaktadır. Düğme kontrolüne bir action listener eklenmiştir. Listener aşağıda açıklanmaktadır. Form görüntülenmeden önce ekranda bir pencere veya peer (eş form) yaratılmaktadır. Son olarak com.sun.star.awt.XDialog arabiriminin execute metodu kullanılarak formumuz ekranda görüntülenmektedir.
Action listener implementation'u aşağıda gösterilmiştir.
/** action listener
*/
public class ActionListenerImpl implements com.sun.star.awt.XActionListener {
private int _nCounts = 0;
private XControlContainer _xControlCont;
public ActionListenerImpl(XControlContainer xControlCont) {
_xControlCont = xControlCont;
}
// XEventListener
public void disposing(EventObject eventObject) {
_xControlCont = null;
}
// XActionListener
public void actionPerformed(ActionEvent actionEvent) {
// increase click counter
_nCounts++;
// set label text
Object label = _xControlCont.getControl("Label1");
XFixedText xLabel = (XFixedText)UnoRuntime.queryInterface(XFixedText.class, label);
xLabel.setText(_labelPrefix + _nCounts);
}
}
Kullanıcı düğmeyi kliklediği her seferinde action listener çağrılmaktadır ve iç bir sayaç döngüsü ile sayı artırılmaktadır. com.sun.star.awt.XActionListener arabirimi actionPerformed metodu ile etiket alanı güncellenmektedir. İlaveten, com.sun.star.lang.XEventListener ana arabirimi disposing metodu implement edilmektedir.
Bizim örnek component'imiz, com.sun.star.task.XJobExecutor arabiriminin trigger metodu ile implement edilerek ofisle birlikte dialog'u çalıştırmaktadır:
public void trigger(String sEvent) {
if (sEvent.compareTo("execute") == 0) {
try {
createDialog();
}
catch (Exception e) {
throw new com.sun.star.lang.WrappedTargetRuntimeException(e.getMessage(), this, e);
}
}
}
Basit bir OpenOffice.org Basic makrosu örnek bileşenimizin yaratılıp uygulanmasını sağlamaktadır..
Sub Main
Dim oJobExecutor
oJobExecutor = CreateUnoService("com.sun.star.examples.SampleDialog")
oJobExecutor.trigger("execute")
End Sub
OpenOffice.org, gelecek versiyonlarında yürütme anında yaratılan formların çalıştırılması için metot desteği sunulacaktır.
Bu bölüm kütüphanelerin nasıl saklandığını açıklar. Genel olarak tüm veriler XML formatında saklanır. T<OfficePath>/share/dtd/officedocument hdizin yolunda bulunan DTD dosyalarında dört farklı XML dosya biçimi tanımlanmıştır:
Kütüphane indeks dosyası içinde tanımlanmış olan bir Kütüphane Container'ı nın spesifikasyonları libraries.dtd dosyası içinde verilmiştir. Bu dosyada Kütüphane container'ı içindeki kütüphanelerin herbiri isimleri, dosya linki olduğunu gösterir bir bayrak ve dosyaURL'si ve dosya bağlantısı olması halinde bağlantının sadece oku statüsünü gösterir.
Kütüphane indeks dosyası içinde tanımlanmış olan bir Kütüphane dosyası spesifikasyonları library.dtd. İçinde verilmiştir.. Bu dosya kütüphane ismini sadece oku statüsünü gösteren ve şifre korumalı olduğunu gösteren bayrakları tutar, ayrıca her bir kütüphane elemanının adını saklar .
Bir Basic kaynak kod modulü spesifikasyonları module.dtd'de tariflenen dosyalarda tutulur hu dosya modül ismini program dilini ( Şu anda sadece OpenOffice.org Basic desteklenmektedir ) ve kaynak kodunu içerir.
Bir Dialog spesifikasyonları dialog.dtd'de tariflenen dosyalarda tutulur. Bu dosya formu tarifleyen bütün veriyi içerir. Bu format çok geniş olduğu için burada açıklanmaası mümkün değildir.
İlaveten, şifre korumalı kütüphanelerde derlenmiş Basic kod binary biçim kullanılarak saklanır.
|
|
Şifre korumalı Basic kütüphanelerinde şifre Blowfish yöntemiyle verinin de şifrelenmesi için kullanılır. Eğer şifreyi unutursanız karşılık gelen Basic kodu da kaybedersiniz. Herhangi bir geri kazanım mümkün değildir. |
Kütüphane tanımlama dosyalarının XML biçimini anlamanın yanında, hangi dosyaların nasıl saklanacağını anlamak da gereklidir. Çünkü bu uygulama ve belge kütüphaneleri için farklıdır. Uygulama kütüphaneleri direk olarak ofis sistem yolunda saklanırlar. Belge kütüphaneleri ise belge paket dosyasında saklanır. Paket dosyaları içn bilgiyi 6.2.10 Office Development - Common Application Features - Package File Formats. bölümünde bulabilirsiniz. takip eden kısımda Kütüphane Container'ı ve kütüphane yapıları açıklanmıştır..
OpenOffice.org kurulumunda Basic ve dialoglar için Container'lar <OfficePath>/user/basic dizinine yerleştirilirler. Kütüphane container indeks dosyaları Basic için script.xlc Dialog için dialog.xlc dosyalarıdır. "lc" son eki dosyanın Kütüphane container'ı olduğunu gösterir.
Aynı dizin kullanıcı tarafından yaratılmış kütüphaneleri de barındırır. İlk olarak Basic ve Dialoglar için sadece Standard kütüphanesi mevcuttur. Dizin içindeki kütüphane yapısı devam eden kısımda açıklanacaktır
user/basic dizini basic kütühaneleri için tek kurulum yeri değildir. Autopilot'ların çoğu basic ile ilgili dizinlere yerleştirilmiştir. karşılı gelen kütüphaneler ise<OfficePath>/share/basic ryoluna yerleşmiş Kütüphane Container index dosyalarında sadece oku statüsüyle bağlantı olarak listelenmişlerdir..
Kullanıcı ve Autopilotlar tarafından yaratılan kütüphaneler arasındaki farkın algılanması gereklidir. Autopilot kütüphaneleri bir çok kullanıcı tarafından paylaşılan dizinlere yerleştirilir. Bir ağ kurulumunda, share dizini kullanıcıya özel kütüphaneler container'ları tarafından sahip olunmaması için server üzerinde herhangi bir yere yerleştirilmiştir.
Dosya sisteminde kütüphane bir dizinle temsil edilir. Dizin adı kütüphane adı ile aynıdır.Kütüphane için gerekli tüm dosyalar bu dizinde bulunur.
Basic kütüphaneleri kaynak kodları yetkisiz kişiler tarafından görülmemesi için şifre ile korunabilirler. Dilog kütüphaneri şifre ile korunamazlar. 11.2.1 OpenOffice.org Basic and Dialogs - OpenOffice.org Basic IDE - Managing Basic and Dialog Libraries. bölümünde OpenOffice.org Basic Macro Düzenleyici iletişiminde incelenmiştir. Şifre koruması kütüphanenin dosya formatını etkiler..
her bir kütüphane elemanı bir XML dosyası ile temsil edilir. eleman ismi ile dosya isminin aynıdır. Basic modülleri için module.dtd dosyasında tanımlanmıştır buna göre dosya adı uzantıları xba olur. dialoglar xdl basic modülleri için script.xlb indeks dosyası taratılır dialoglar içinse dialog.xlb yaratılır.
Aşağıdaki örnekte Bir Standard uygulama Basic kütüphanesi Module1 ve Module2 dizin yapısı görüntülenmektedir:
<DIR> Standard
|
|--script.xlb
|--Module1.xba
|--Module2.xba
Bir uygulama Standard kütüphanesi, Smalldialog ve BigDialog adlı dialogları içeren dizin yapısı görünmektedir:
<DIR> Standard
|
|--dialog.xlb
|--SmallDialog.xba
|--BigDialog.xba
Dizin içinde Basic ve dialog kütüphanelerinin olması da mümkündür. Kütüphane düzenleme bölümünde anlatıldığı gibi bu yolun tecih edilmesi yararlıdır. Yukardaki iki örnekte görülen kütüphaneler aynı dizinde depolandığında bu iki kütüphane birbirini etki,lemez:
<DIR> Standard
|
|--dialog.xlb
|--script.xlb
|--Module1.xba
|--Module2.xba
|--SmallDialog.xba
|--BigDialog.xba
Dosya adları farklıdır hatta aynı adlara sahip olsalar bile uzantıları farklıdır.
Sadece Basic kütüphaneleri şifrelenebilir. Bu durum dosya formatını da etkiler. çünkü binary veri XML formatında kaydedilir. Kaynak kodu Basic IDE'sinde görüntülenmese de okunabilir olmalıdır. Her bir modül için derlenmiş Basic kodu şifrelenmiş kaynak koduyla birlikte olması da gereklidir. Basic şifresi bilinmeyen kütüphanelerdeki kaynak koda erişip derleyemez. Derlenmiş kod saklanmaksızın, kullanıcı şifreyi biliyorsa basic kütüphaneleri çalıştırabilir. Şifre prosedüründe kaynak kodu ve şifreyi vermeksizin programın dağıtılması tüm amaçtır. therefore this would not be feasible.
Aşağıdaki örnekte Module1, Module2, Module3 birimlerini içeren Library1 şifre korumalı uygulama kütüphanesinin dizin yapısı görülmektedir:
<DIR> Library1
|
|--script.xlb
|--Module1.pba
|--Module2.pba
|--Module3.pba
Script.xlb şifre korumasız sistemden farklı değildir. Sadece şifre koruma bayrağı dosya içinde ayarlanmıştır..
Her bir modül .pba dosya uzantılı olarak görünmektedir. Ofis belgelerinde olduğu gibi, bunlar paket dosyalarıdır. ("pba" package basic anlamına gelir) Herhangi bir zip ekstrat programı ile iç yapısı görülebilir. Ayrıntılı bilgi için 6.2.10 Office Development - Common Application Features - Package File Formats)'bölümüne bakın.
Bir modül pacet dosyası aşağıdaki gibi görünür:
<PACKAGE> Module1.pba
|
|--<DIR> Meta-Inf ' İçerik burda görüntülenmez
|--code.bin
|--source.xml
Meta-Inf dizini her paket dosyasının bir parçasıdır ve bu belgede açıklanmayacaktır. code.bin derlenmiş Basic kodunu bulundurur. source.xml ise şifre ile kodlanmış basic kodunu içerir .
Uygulama kütüphaneleri ofis dizini içinde direk olarak saklanıyorken, Belge kütüphaneleri belge içinde saklanırlar. Ayrıntılı bilgi için 6.2.10 Office Development - Common Application Features - Package File Formats bölümüne bakın.Belgelerde Basic ve Dialog kütüphane container'ları ayrı olarak saklanırlar:
Basic kütüphane container hiyerarşisin kökü Basic olarak adlandırılmış dizinde başlar. Bu dizin boş bir Standard kütüphanesinin olduğu Basic container'ı için yeni bir belgede yaratılmaz.
Dialog kütüphane container hiyerarşisin kökü Dialogs olarak adlandırılmış dizinde başlar. Bu dizin boş bir Standard kütüphanesinin olduğu Dialog container'ı için yeni bir belgede yaratılmaz.
Kütüphaneler bu contrainer'larda alt dizinlerde saklanırlar. Yapı ise uygulama kütüphane container'ları dizinlerine benzer, sadece "files" streaminde tüm akımlar XML akımlarıdır ve .xml dosya uzantısı ile adlandırılmıştır. .xba, .xdl gibi özel uzantılar kullanılmaz. Farklı uzantılar yerine isimlere eklenirle.. Belgelerde script-lc.xml (Basic kütüphane container indeks dosyası), script-lb.xml (Basic kütüphane indeks dosyası), dialog-lc.xml (dialog kütüphane indeks dosyası) ve dialog-lb.xml (dialog kütüphane index dosyası) şeklinde isimlendirilirler .
Örnek 1'de, üç modülü bulunan Bir Basic Standard kütüphanesi belgenin paket yapısı görülmektedir:
<Package> ExampleDocument1
|
|--<DIR> Basic
| |
| |--<DIR> Standard ' Folder: Standard kütüphanesi
| | |
| | |--Module1.xml ' Stream: Basic modül dosyası
| | |--Module2.xml ' Stream: Basic modül dosyası
| | |--Module3.xml ' Stream: Basic modül dosyası
| | |--script-lb.xml ' Stream: Basic kütüphane indeks dosyası
| |
| |--script-lc.xml ' Stream: Basic kütüphane container indeks dosyası
|
| ' Bundan sonraki yapının kütüphanelerle ilgisi yoktur
|--<DIR> Meta-Inf
|--content.xml
|--settings.xml
|--styles.xml
Örnek 2, İki Basic ve 1 Dialog kütüphanesi bulunan belge yapısı:
<Package> ExampleDocument2
|
|--<DIR> Basic
| |
| |--<DIR> Standard ' Folder: Standard kütüphanesi
| | |
| | |--Module1.xml ' Stream: Basic modül dosyası
| | |--Module2.xml ' Stream: Basic modül dosyası
| | |--script-lb.xml ' Stream: Basic kütüphane indeks dosyası
| |
| |--<DIR> Library1 ' Folder: "Library1" Kütüphanesini içerir
| | |
| | |--Module1.xml ' Stream: Basic modül dosyası
| | |--script-lb.xml ' Stream: Basic kütüphane indeks dosyası
| |
| |--script-lc.xml ' Stream: Basic kütüphane container indeks dosyası
|
|--<DIR> Dialogs
| |
| |--<DIR> Standard ' Folder: "Standard" Kütüphanesini içerir
| | |
| | |--Dialog1.xml ' Stream: Dialog dosyası
| | |--dialog-lb.xml ' Stream: Dialog kütüphane indeks dosyası
| |
| |--<DIR> Library1 ' Folder: Contains library "Library1"
| | |
| | |--Dialog1.xml ' Stream: Dialog dosyası
| | |--Dialog2.xml ' Stream: Dialog dosyası
| | |--dialog-lb.xml ' Stream: Dialog kütüphane indeks dosyası
| |
| |--dialog-lc.xml ' Stream: Dialog kütüphane container indeks dosyası
|
| ' Bundan sonraki yapının kütüphanelerle ilgisi yoktur
|--<DIR> Meta-Inf
|--content.xml
|--settings.xml
|--styles.xml
Şayet bir belge Basic kütüphanesi şifre korumalıysa, dosya yapısı şifre korumasız bir yapıdan fazla farklı değildir. Uygulama Basic kütüphanesi olması durumu ile aradaki Farklılıklar:
Şifre korumalı Basic kütüphanesi modül dosyaları aynı korumasız kütüphanelerdeki gibi dosya adına sahiptir, fakat şifre ile karıştırılmışlardır.
Her bir modul için .bin uzantılı ek bir dosya bulunur. Code.bin dosyasına benzer şekilde Uygulama Basic .pba dosyaları bulunur. Bu dosya derlenmiş Basic kodunu içerir böylelikle kaynak koduna erişilmeksizin Basic kodu yürütülür .
Aşağıdaki örnekte bir belge için paket yapısı görülmektedir. Belge iki Basic modülüve bir Dialog içermekte sadece Library1kütüphanesini modülleri bulunmaktadır:
<Package> ExampleDocument3
|
|--<DIR> Basic
| |
| |--<DIR> Standard ' Folder: "Standard" kütüphanesi içerir
| | |
| | |--script-lb.xml ' Stream: Basic kütüphane indeks dosyası
| |
| |--<DIR> Library1 ' Folder: "Library1" kütüphanesi içerir
| | |
| | |--Module1.xml ' Stream: şifrelenmiş Basic modül kaynak dosyası
| | |--Module1.bin ' Stream: Basic modülü derlenmiş kod dosyası
| | |--Module2.xml ' Stream: Scrambled Basic module source file
| | |--Module2.bin ' Stream: Basic modülü derlenmiş kod dosyası
| | |--Module3.xml ' Stream: Scrambled Basic module source file
| | |--Module3.bin ' Stream: Basic modülü derlenmiş kod dosyası
| | |--script-lb.xml ' Stream: Basic kütüphane indeks dosyası
| |
| |--script-lc.xml ' Stream: Basic kütüphane container indeks dosyası
|
|--<DIR> Dialogs
| |
| |--<DIR> Standard ' Folder: "Standard" kütüphanesini bulundurur
| | |
| | |--dialog-lb.xml ' Stream: Dialog kütüphanesi indeks dosyası
| |
| |--<DIR> Library1 ' Folder: "Library1"kütüphanesini bulundurur
| | |
| | |--dialog-lb.xml ' Stream: Dialog library index file
| |
| |--dialog-lc.xml ' Stream: Dialog kütüphanesi container indeks dosyssı
|
| ' Bundan sonraki yapının kütüphanelerle ilgisi yoktur
|--<DIR> Meta-Inf
|--content.xml
|--settings.xml
|--styles.xml
Bu örnekte belge paketi içinde Bir dialogs klasörünün de yaratılmış olduğu görülmektedir. Standard ve Library1 kütüphaneleri dialog içermemesine rağmen Dialogs klasörü yaratılmıştır. Çünkü belgenin tekrar yüklenmesi ile Dialog kütüphanesi Library1 kaybolacaktır. Açık olarak saklanmasa bile sadece bir Standard boş kütüphanesinin var olduğu kabul edilmiştir.
OpenOffice.org Basic kütüphanelerinin var olan bir kuruluma eklenmesi için basit bir düşünceye sahiptir. Kütüphanelerin eklenmesi aşağıdaki adımlarla gerçekleştirilir:
Kütüphanelerinizi paketleyin.
Paketi özel bir paket dizinine yerleştirin. Bir network kurulumunda paylaşımlı bir dizin vardır ve kullanıcı paketleri için de bir dizin mevcuttur. İleride açıklanmıştır.
Bütün OpenOffice.org bileşenlerini kapatın, windowsta dos penceresi Linux'ta konsol ekranını açın, <OfficePath>/program dizinine geçerek pkgchk program aracını çalıştırın. Pkgchk aracı StarOffice Development Kit (SDK)'nın bir parçasıdır. Aşağıdaki komutu verin my_package.zip paketlenmiş kütüphanemizdir
[<OfficePath>/program] $ pkgchk my_package.zip
Araç paket dizinlerindeki paketleri analiz eder ve OpenOffice.org tarafından kullanılan kullanıcı tanımlı uzantıları eşleştirir. İlaveten komut satırında paket dizinine kopyalanacak paketleri adlarıylada bildirebilirsiniz..
OpenOffice.org kurulumundan paketleri silmek için uygulanacak karşı adımlar da gereklidir:
Paketi paket dizininden silin.
OpenOffice.org'ı kapatıp pkgchk programını çalıştırın.
Pkgchk programını '--help' veya '-h' parametreleri ile çalıştırırsanız tüm seçenekler hakkında detaylı bilgiye ulaşabilirsiniz.
|
|
Pkgchk dağıtım aracını OpenOffice.org çalışıyorken kullanımında dikkatli olun. Sıradan kullanıcılar için, bu durumda pkgchk tarafından yürütülen proses başarısızlıkla sonuçlanır, shared paylaşımlı network kurulmuşsa '--shared' veya '-s' seçenekleri de tanınmaz. Eğer network üzerinde herhangi bir kullanıcı ofis süreci başlatırsa veri tutarsızlıkları oluşabilir ve OpenOffice.org süreci çökebilir. |
Bir UNO paketi Basic kütüphaneleri veya UNO bileşenleri veya Tip kütüphaneleri içeren ziplenmiş bir dosyadır. P kgchk aracı paket dizininde bulunan bütün paketleri, cache dizine, zip dosyası dizin yapılarını koruyarak açar.
Geçici dizin hazır olduktan sonra, pkgchk geçici dizin üzernden sürekli geçer. Dosya adı uzantılarına bağlı olarak dosyaları tespit eder gerekli olan lisyeye alma işlerini gerçekleştirir. Bilinmeyen dosya tipleri ihmal edilir.
Basic kütüphaneleri
Pkgchk aracı bsaic kütühane dosyalarını (.xlb) Basic kütüphane container dosyalarına (.xlc) ekleyerek bağlar. Ki bu dosyalar aşağıdaki dizinlerde bulunur:
|
Kütüphane dosyası |
Kullanıcı kurulumu |
Shared Paylaşımlı kurulum |
|
script.xlb |
<OfficePath>/user/basic/script.xlc |
<OfficePath>/share/basic/script.xlc |
|
dialog.xlb |
<OfficePath>/user/basic/dialog.xlc |
<OfficePath>/share/basic/dialog.xlc |
Bir network kurulumunda share/basic/*.xlc dosyaları yeni kütüphaneler bütün kullanıcılar arasında paylaşılıcaksa pkgchk -s (--shared) seçeneği kullanılmasıyla yaratılır.
Basic kütüphanesinin adı dizin adı tarafından belirlenir. Onun için UNO Basic paketi içinde klasörler ve ana klasörlerin tam bir görünümünde yaratılmalıdır. Örneğin, MyLib adlı bir kütüphaneniz varsa buna karşılık gelen bir MyLib klasörünüzde geliştirme ortamınız içinde olmalıdır. Bu klasör tam olarak UNO paketi içine yerleştirilmeli ve zip dosyanız aşağıdakine benzer şekilde görülmelidir:
my_package.zip:
MyLib/
script.xlb
dialog.xlb
Module1.xba
Dialog1.xba
Diğer paket bileşenleri
Pkgchk otomatik olarak paylaşımlı kütüphaneleri kütüğe alır, JAVA arşivleri ve Type ( Tip ) kütüphaneleri bir UNO paketi içinde bulunabilir. Ayrıntılar için 4.9.1 Writing UNO Components - Deployment Options for Components - UNO Package Installation bölümüne bakın.
|
|
Autopilot Sihirbaz .xlb kütüphaneleri user/basic/*.xlc dosyalarında kütüğe alınırlar, fakat share/basic. dizinine yerleştirilirler. Bu Network kurulumlarında bazı Autopilotları silmeyi ya da etkisiz kılmayı bazı kullanıcılar için mümkün kılar . This is impossible for libraries deployed with the pkgchk tool and libraries deployed with the share option are always shared among all users. |
Paket dizinleri varsayılan oalrak uno-packages olarak isimlendirilir. burada bir shared kurulum için <OfficePath>/share ve diğeri ise tek kullanıcı için <OfficePath>/user dizini kurulur. Uno paketleri dizin yapısına karşılık gelen cache dizinleri otomatik olarak yaratılır. OpenOffice.org <OfficePath>/program dizinindekiuno.ini ( Linux için uno.rc) dosyasındaki bu yollara bakabilmek için ayarlanmalıdır . Pkgchk çalıştırıldığında, paket yolları için bu dosyaya bakar. Şayet yoklarsa, varsayılan olarak uno(.ini|rc) dosyasına bu satırlar eklenir:
[Bootstrap]
UNO_SHARED_PACKAGES=${$SYSBINDIR/bootstrap.ini::BaseInstallation}/share/uno_packages
UNO_SHARED_PACKAGES_CACHE=$UNO_SHARED_PACKAGES/cache
UNO_USER_PACKAGES=${$SYSBINDIR/bootstrap.ini::UserInstallation}/user/uno_packages
UNO_USER_PACKAGES_CACHE=$UNO_USER_PACKAGES/cache
Paylaşımlı paketler ve cache dizini varsayılan ayarlar bu şekildedir.
Bir network kurulumunda, dosya server üzerinden genel bir dizinde başlar. Yönetici bütün kullanıcılar için <OfficePath>/share/uno_packages dizinine koyar.. Eğer bir kullanıcı paketleri yerel olarak kurmak isterse, sadece bir kurulum etkilenir, kullanıcı paketleri <OfficePath>/user/uno_packages dizinine kurmalıdır.
Pkgchk bir shared ve kullanıcı kurulumunda farklı çalıştırılmalıdır. Paylaşımlı paketler için pkgchk -s (-shared) seçeneğiyle çalıştırılmalıdır bu durumda pkgchk sadece shared paketleri işler. Pkgchk seçeneksiz olarak çalıştırılırsa sadece kullanıcı paketleri register ( Döküme alma ) edilir.
Varsayılan olarak araç bütün aksiyonları <cache-dir>/log.txt dosyasına işler. Bu dosyayı veya dizin yolunu -l (–log) <dosya adı> seçeneğiyle değiştirebilirsiniz. -v (–verbose) seçeneği çıktıyı log file yazarken aynı anda stdout ( normal olarak ekran) da da gösterir.
Araç hataları tam olarak irdelemez. Bir paket açılamamış veya shared kütüphane register edilememiş olsa bile devam eder. Hataları log dosyasına işler ve çalışmasına devam eder. Şayet aracın her bir hatada durmasını istiyorsanız pkgchk'i –strict_error seçeneği ile çalıştırınız.
Cache ile ilgili devamlılık sorunları varsa ve sıfırdan tekrar başlanmasını istiyorsanız., -r (–renewal) seçeneğiyle programı çalıştırın.