Mesaj metni kodun içinde değil
TROIA'da bir uyarı ya da onay penceresi göstermek istediğinizde metni doğrudan koda yazmazsınız. MESSAGE komutu, "SYST02 - System Messages" ekranında modül + numara ile önceden tanımlanmış bir mesaj kaydına referans verir — bu sayede aynı mesaj birden çok dilde otomatik gösterilebilir:
MESSAGE BAS C100 WITH;
Mesaj metninde %s gibi yer tutucular varsa, gerçek değerler WITH anahtar kelimesinden sonra sırayla verilir.
Altı mesaj türü
Mesaj türü (I/E/W/C/O/P), pencerenin görünümünü ve kullanıcıdan beklenen etkileşimi belirler:
- I – Information: bilgilendirme, tek buton
- E – Error / W – Warning: hata/uyarı ikonu
- C – Confirmation: Evet/Hayır sorusu
- O – Option: özel seçenekler listesi
- P – Parameter: kullanıcıdan klavye girdisi ister
Kullanıcının cevabını okumak
CONFIRMATION ve OPTION türü mesajlarda kullanıcının seçimi CONFIRM sistem değişkenine yazılır:
MESSAGE BAS C100 WITH;
IF CONFIRM == 'YES' THEN
/* kullanıcı onayladı */
DEVAM = 1;
ELSE
DEVAM = 0;
ENDIF;
OPTION mesajlarında CONFIRM seçilen seçeneğin sıra numarasını, SYS_CONFIRMTEXT ise seçilen seçeneğin metnini taşır. Mesajın render edilmiş tam metnine ihtiyacınız varsa SYSMESSAGE sistem değişkenini okuyabilirsiniz.
Batch ve inserver çalışmada davranış farkı
Bir transaction, kullanıcı arayüzü olmadan (batch ya da INSERVER modda) çalıştırıldığında ekranda kimse olmadığı için MESSAGE komutu otomatik yanıtlanır: onay mesajları her zaman "Evet" kabul edilir, bilgi/uyarı mesajları sessizce geçilir. Bu mesajlar kaybolmaz, IASBATCHERR sistem tablosuna kaydedilir — arkadan çalışan bir işin neden beklenmedik davrandığını anlamak için ilk bakılacak yer burasıdır.
Sonuç
MESSAGE komutu ilk bakışta sade görünür ama iki şeyi unutmamak gerekir: metinler kodda değil ayrı bir tabloda yaşar, ve kullanıcı arayüzü olmayan ortamlarda mesajlar otomatik yanıtlanıp bir log tablosuna düşer.
Yorumlar (0)
Yorum Yaz