1. Uygulama çalışırken AMOS özelliğinden dolayı max. 640x200 ekrandan kurtulup workbench ekranında normal pencere gibi açılma durumu mümkün müdür?
Ne yazık ki AGUI ile asla mümkün değil. AMOS kendi ekranlarını açar ve bu ekranlar Intuition uyumlu değildir. AGUI tamamen AMOS ekranı ve komutları üzerine kurulu.
WB ekranında, intuition pencereleri ve gadgetleri kullanmak için, Amiga Reference Manual'lerini hatmedip, Assembly veya C ile kodlamak gerekiyor. AMOS'un C desteği yok. Fakat Assembly kodunu entegre edebiliyorsunuz. Bunu kullanarak WB ekranında pencereler açan çılgınca kodlar gördüm. Aminet'te mevcut (fakat o pencerelerde AMOS'un ekran ve çizim komutlarının hiçbirini kullanamazsın).
"Gerçi Assembly bilsek AMOS'la ne uğraşacaz ki" demeden edemiyor insan!

2. Objelerin bazı parametreleri (özellik) tanımlayarak giriyoruz. Örneğin BUTTON için ID, text, koordinatları vb. Objeyi oluşturduktan sonra NAME$ paramtresini runtime'da değiştirmek için nasıl bir procedure yazılabilir veya mümkün müdür?
AGUI tamamen AMOS kodu olduğu için (=yavaş) olabildiğince hızdan kazanmaya odaklandım.
Örneğin bir buton tanımladığında, buton ekrana hemen çizilir ve çizilirken artalanı temizlemez bile (temiz bir yere çizildiğini varsayar).
Sonra yine hızdan kazanmak için nesneler asla otomatik olarak güncellenmez. Bir nesnenin güncellenmesi gerekiyorsa sen şu kodla sadece o nesneyi güncellersin:
Diyelim 1 ID'si ile bir buton tanımladın...
BUTTON[1,"Eski Metin",10,10,0,0]
...ve butonun üzerindeki metni değiştirmek istiyorsun:
GADN$(1)="Yeni Metin"
GADUPDATE[1]
...yeterli olur gibi düşünebilirsin. Ama denediğinde göreceksin ki, eski metnin üzerine yeni metin binmiş olacak (çünkü buton kendisini çizerken artalanını temizlemez).
O zaman nasıl yapmalıyız. Önce eski butonu ekrandan silmeliyiz.
Cls 6,GAD(1,1),GAD(1,2) To GAD(1,3),GAD(1,4)
Önce eski buton ekrandan temizlendiğine göre artık koordinatları da değiştirerek butonun eski yerinden kaybolup başka bir yerde belirmesini sağlayabilirsin.
Yani procedüründe sırasıyla şu komutlar olacak:
Cls 6,GAD(1,1),GAD(1,2) To GAD(1,3),GAD(1,4)
GADN$(1)="Yeni Metin"
GADUPDATE[1]
Tabi bu güncelleme hız gerektiren bir döngüde ise GADUPDATE[] prosedürünü komple kaldırıp, yerine butonu yeni değerlerle yeniden tanımlamayı da deneyebilirsin:
Cls 6,GAD(1,1),GAD(1,2) To GAD(1,3),GAD(1,4)
BUTTON[1,"Yeni Metin",YeniX1,YeniY1,YeniX2,YeniY2]
Screen Swap : Screen Copy Physic to Logic
Bu çok daha hızlı çalışacaktır.
NOT: GADUPDATE[] kullanmayacağımızdan ekrandaki değişikliklerin görünür olması için
Screen Swap : Screen Copy Physic to Logic satırını da ilave ettik.