Bu sayfadaki yazılar
Sayfanın metni
Sayfa 25
Merhaba Assemblercılar... Bu sayıda geçen sayıda verdiğimiz intuition text rutininin açıklamaları ile devam edeceğiz ve bu işlemi iyice öğreneceğiz. Text rutini açıklamaları ardından window'a intuition'ın verdiği özellikleri kazandıracağız.
Geçen sayıdaki programı çalıştırdığınızda, gördüğünüz gibi window'un sol üst köşesinde bir yazı bulunmaktaydı. Şimdi gelelim bu yazının nasıl oluştuğuna. İlk önce size programdan window'un içinde yazı yazımına ait makine kodu rutinini tek başına göstereyim.
1 move.l INTBASE,a6 2 move.l WINBASE,a0 3 move.l 50(a0),a0 4 move.l #TEXT,al 5 move.l #0,d0 6 move.l #0,dl 7 jsr -$d8(a6)
Şimdi, IntuiText rutininin açıklamasına geçelim.
Bu rutinin yaptığı işi gördünüz, Window içerisine yazı yazmaktan ibaret. Rutinin dört parametresi bulunmakta.
İlk parametresi, örneğin 2. satırında gördüğünüz gibi A0 registerine atanan WINDOW RASTPORT adresini içermektedir. Tabii bu rastport'un yazının yazılmasını istediğimiz window rastport'u olduğunu söylemeye gerek yok herhalde. Bu rastport'un nerede olduğuna gelince, o da window structure'ın 50. byte'ından itibaren bir longword değerde saklıdır. Bu uygulamayı 3. satırda görebilirsiniz.
İkinci parametre olarak, Text structure'ınızın adresini A1 registerine bildirmemiz gerekiyor (4. satır).
Üçüncü ve dördüncü parametre ise, yazılacak satırın X ve Y koordinatlarını içermelidir. Sizin isteğinize göre bu değer, window'un boyutlarını geçmemek şartı ile kullanılabilir.
IntuiText rutinin bir parçası olan text structure'ını aşağıda ayrı olarak tek tek açıklayalım.
TEXT: dc.b 3,2
dc.b 1 even
dew 2,10 del 0 del TEXTST del 0 dc.b 3,2
ÖMER SİNAN POLAT Bu iki byte değer yazımızın renklerini belirliyor. İlk değer yazının rengi, ikinci değer ise yazının arka plan rengi olmakta.
dc.b 1 Bu byte değer ise, ilk iki değer ile kombine bir halde. Görevi, yazının dört çeşit yazı modundan hangisi olacağına karar vermek. Bu değerler 0, 1, 2, 4 olabilir. 1 değeri, ilk satırda verdiğimiz iki değer aynen kullanılacak anlamına gelir. Burada 0 kullanırsak, sadece yazı rengi dikkate alınıyor ve 4 kullanırsak Text'imiz yazı renginin negatifi olarak beliriyor, even
Bu kullanım, Seka'ya aittir. Görevi, bir üst satırda tek byte kullanıldığından ve Seka'da kodu word değerler üzerinden oluşturduğundan oluşabilecek bir hatayı önlemek.
dc.w 2,10 Bu iki word değer rutindeki gibi yazı satırının X ve Y koordinatlarını belirtirler. Buraya yazdığınız değerler, rutindeki ile toplanıp sonuca göre yer tespiti yapılır. Ben burada 2 ve 10 değerlerini kullandım; nedeni, rutindeki X, Y koordinat değerlerine 0 girilse dahi yazı satırı window'un tam sol üst köşesine eşit gelecektir.
dc.l 0
Bu değer, herhangi bir karakter setinin pointer adresini içermelidir. Tabii bu karakter seti de yazının yazımında kullanılacak karakterleri belirtir. Eğer standart karakter setini kullanıyorsak, buraya 0 değeri girmeliyiz.
dc.l TEXTST İşte burada yazımızın bulunduğu hafıza adresini giriyoruz.
del 0
Bu adres 0 olduğunda, başka yazı çıkışı olmayacağı anlamına gelmektedir.
TEXTST: dc.b "IntuitionText",0
Bu satır, yukarıda da anlattığımız gibi yazılacak karakterleri içeriyor, dc.b formatında girdiğimiz bu kısa yazının son karakteri daima Null yani 0 olmalıdır.
Evet. Artık window içerisine yazı yazımını öğrenmiş bulunuyoruz.
Şimdi yeni bir örnekle yazı dizimize devam ediyoruz.
Bu arada dikkatinizi son iki örneğimizde de aynı olan bir şey çekmiştir. İki programda da programdan çıkmak için mouse'un sağ tuşunu kullandık. Acaba Workbench'teki window'larda olduğu gibi, window'u kapama kutucuğuna basarak bizim window'umuzu da kapatamaz mıyız?
Bunu biz de yapabiliriz. Tabii biraz karmaşık bir yapısı var. Şimdi örneğimizin bu halini görelim.
**** AMIGA DÜNYASI **** AMIGA INTUITION LIBRARY **** WINDOW EXAMPLE **** ASSEMBLER KURSU **** ÖRNEK 14.1
start: move.l 4,a6 lea INTNAME,al jsr -$228(a6) move.l d0,INTBASE beq EXIT3
move.l INTBASE,a6 lea WINDOW,a0 jsr -$cc(a6) move.l dO,WINBASE beq EXIT2
LOOP: move.l WINBASE,a0 move.l 86(a0),a0 move.l 4,a6 jsr -$174(a6) move.l d0.a0 move.l 20(a0),d6 tst.l d0 beq.s LOOP
cmp.l #$200,d6 bne.s LOOP
move.l 4,a6 move.l WINBASE,a0 move.l 86(a0),a0 move.l d0,al jsr -$16e(a6)
EXIT1: move.l,INTBASE,A6
move.l WINBASE,a0 jsr -$48(a6) EXIT2: move.l 4,a6
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 24
Giriş sırası, Forms Editor içinden değiştirilebilir.
Data Girişi: Record New Açık form içine yeni data girişi yapmak isterseniz, Record New menü seçeneği kullanılır. Superbase, formu, tüm alanları boş ve kursor giriş sırasındaki ilk alana yerleşmiş olarak görüntüler. Data girişine başladığınızda, validation ve calculation alanları dahil her şeyin aynı olduğunu göreceksiniz.
Sayfadan sayfaya. Sayfa Seçici düğme ile geçebileceğiniz gibi, data giriş sırasını takip edebilir ya da herhangi bir alanı doğrudan seçebilirsiniz.
Kaydı Saklamak: Record Save Data girişini tamamladığınızda, 3 kayıt şeklinden birini kullanarak kaydı o anki directory içine saklayabilirsiniz:
. Amiga-S tuşları . Record Menu Save seçeneği . Mouse'un sol tuşuna iki kez basmak Her üç şekilde de işlemden önce doğrulama için bir diyalog penceresi görüntülenir.
Superbase, bir form içine data kaydettiği zaman, kaç kayıt yaratacağını ve bu kayıtları hangi dosyalar içinde oluşturacağını bulmak için formun çatısını kullanır. Form tek bir dosya kullanıyorsa, form sadece bir kayıt yaratacaktır. Dosyada tanımlanmış, ancak formda bulunmayan alanlar boş kalacaktır. Bu anahtar alan ise boşluklardan ibaret bir bilgi olarak uygun bir yere yerleştirilecektir.
Form birden fazla dosyadan oluşturulmuşsa, program, formda görüntülenen alanlardan her biri için ait olduğu dosyada datanın değişmediğine ya da boş olduğuna bakmaksızın bir kayıt yaratacaktır.
Kompleks bir form için kayıtları saklamak, özellikle disket kullanan sistemlerde biraz fazla zaman alabilir. Dikkatli sistem dizaynı bunu azaltacaktır tabii. Ama siz Record Menüden Batch'i seçerek mevcut RAM'i kullanarak, bir formun kaydedilip sonrakine geçişi arasındaki bekleme süresini kısaltabilirsiniz.
Bir Formu Editlemek: Formu editlemek için herhangi bir menü kalemini seçmek zorunda değilsiniz. Değiştirmek istediğiniz alanı seçip klikleyin ve alan bilgisinde gerekli değişiklikleri yapın. Formu kaydettiğinizde, Superbase sadece editlenen kaydı değiştirecektir.
Aynı işlemi, Record Edit menü seçeneğini kullanarak da yapabilirsiniz.
Kayıt Kopyalama: Record Duplicate Mevcut bir kayıtla benzer datalara sahip yeni bir kayıt yaratmak zaman zaman çok işe yarar. Aynı bilgileri bir kez daha yazmaktansa, kaydı kopyalayıp sadece gerekenleri değiştirmek daha anlamlı değil mi?
Record Menü'den Duplicate seçeneği, işte bu iş için kullanılır. Kopya kaydı kaydettiğinizde, Superbase tıpkı Record New'de olduğu gibi yeni kayıtlar yaratır.
Data Silmek: Remove Record
Bu seçenek, aktif master dosyadan o anki kaydı siler.
RAPORLAR: Rapor formları normal ekran formlarından farklıdır. Form, ekranda ya da printer'da görünmek üzere tasarlanmamıştır; sadece ekrana ya da printer'a çıkış verir.
Bir Raporu Çalıştırmak:
Bunun için iki yol vardır: rapor formunu açmak ya da rapor programını çalıştırmak.
Project Menüden Open Form'u seçerek istediğiniz rapor dosyasını açın. Rapor, disketten yüklenir yüklenmez çalıştırılacaktır.
İkinci yol, rapora diğer programlar gibi davranır. Program Open seçeneği ile istenen program ismi seçilerek yüklenir. Yüklenen program doğrudan çalıştırılır. Program kodu değiştirilmek ya da gözden geçirilmek istenirse, Program Edit seçilerek program editörü kullanılır.
Filtreleme Koşulu Eklemek: Forms Editor, rapor programının içinde rapor formunun iç yapısından türeyen tanımlı karşılaştırma ve sıralama bilgilerini içeren bir WHERE satırı üretir.
Tanımlı karşılaştırma bilgileri, sadece rapor formunda birden fazla dosya kullanıldığında üretilir. Form genellikle; WHERE Alan1.DOSYA-A = Alan2.DOSYA-B ASK şeklinde olur ve iki dosya arasında alanlar aracılığıyla kurulacak ilişkiyi belirtir. Satırın sonundaki ASK yönergesi, rapor programı çalıştırıldığında otomatik olarak tanımlı filtreye erişim sağlanır.
Superbase bu ifadeyi çalıştırdığında, Process Query Edit menü seçeneği istenmiş gibi, standart Query Filtre Tanımlama penceresini görüntüler. Filtre komut satırında değişiklik ya da ekleme yapmayacaksanız, OK'i kliklersiniz. Bu seçimden sonra sıralama düzenini belirtebileceğiniz Order diyalog penceresi görüntülenir.
Sıralama Koşulu Eklemek: Rapor üreticisi, rapor formundaki gruplardan ya da grup yoksa query'nin SELECT satırındaki birinci alandan bir sıralama düzeni oluşturur. Raporu çalıştırdığınızda, ASK komutunu da içeren bir ORDER satırı türetilir. Bu satır, bir Query Order diyalog penceresi görüntülenmesine sebep olur.
Order satırına fazladan alanlar ekleyebilir ya da belli bir alan için büyükten küçüğe/küçükten büyüğe sıralama şekline dönüştürülebilir.
OK düğmesine basıldığında, seçimlerinizi onaylamanız için bir başka diyalog penceresi görüntülenir.
Yazdırma / Görüntüleme Seçeneği: Çıkışa başlamadan önce, rapor programı çıkış cihazı olarak Screen (ekran) ya da printer seçmek için bir yönerge çalıştırır. Tercihinizi belirtip OK'i kliklediğinizde, rapor programı çalışmaya başlar.
Rapor Programını Değiştirme:
Bir rapor programında yapılabilecek değişiklikler, 3 alanda olabilir:
. Çıkış cihazı . Sabit ya da ekstra filtreleme koşulları . Sabit ya da ekstra sıralama koşulları
Çıkış Cihazı: Çıkış cihazı, aşağıdaki satırla seçilebilir: REQUEST "REPORT TO PRINTER?",
"",I,A%: IF A% THEN PRINT;
Çıkış cihazını printer olarak sabitlemek için, bu satırı kaldırın ve rapor programının sonuna TO PRINTER yönergesini ekleyin (varsa ENDSELECT komutundan önce).
Çıkış cihazını ekran olarak sabitlemek için ise satırı tamamen kaldırmanız yeterli; zira zaten tanımlı çıkış cihazı ekrandır.
Çıkışın diskette "tempfile" ismiyle bir dosyaya yapılmasını isterseniz, yine yukarıdaki gibi satırı kaldırın ve rapor programının sonuna TO FILE "tempfile" yönergesini ekleyin (varsa ENDSELECT komutunun ardına).
Filtre ve Sıralama: Tanımlı değer setinin sınırını genişletmek isterseniz, raporu her çalıştırışınızda farklı parametreleri eklemelisiniz.
Rapor programını düzenleyin. İstediğiniz koşulları WHERE satırına ekleyin. Rapor için sıralama parametreleri eklemek ya da varolanları değiştirmek için ise, aynı tür işlemler ORDER satırında yapılır.
FORMLAR VE PROJECT MENÜ: Open Fields: Her dosyanın kendi açık alan listesi vardır; fakat bunlar bir formun kullanılmasını etkilemezler.
Close Form: Görüntüdeki formu kapatmak için kullanılır. Form kapatıldığında dosyalar açık kalır ve diğer dosyalardan biri açılmadıkça formun master dosyası o anki aktif dosya olur.
Edit File: Bu seçenek, yine dosya tanımındaki karakteristikleri değiştirmek için kullanılır, ancak bu işlem için form kapatılır.
Remove File/Index: Formla bağlantılı bir dosyayı kapatmak isterseniz, bu seçimden önce formu kapatmalısınız. Bu dosyaların birinden bir indeksi kaldırabilirsiniz; ancak indeksin link bağlantısının bir kısmı olmamasına dikkat etmelisiniz.
Evet, tam 13 sayı süren Superbase Professional açıklamalarının sonuna geldik. Yazı dizisinin sizlere yararlı olduğunu umuyoruz. Program kullanımında herhangi bir probleminiz olduğunda bizden yardım alabileceğinizi tekrarlamamıza gerek yok herhalde. Hoşça kalın...