Word, başka bir iletişim kutusu açık olan bir belgeyi kapatmaya çalışırken Word'ün verdiği hatayı alıyorum ancak bunun neden olduğunu asla çözemedim.
Word, başka bir iletişim kutusu açık olan bir belgeyi kapatmaya çalışırken Word'ün verdiği hatayı alıyorum ancak bunun neden olduğunu asla çözemedim.
Yanıtlar:
Çünkü çoğu iletişim kutusu " modal " olarak kabul edilir , bu da iletişimin kendisi kapanana kadar kontrolün ana programa veya çağrı kabına geri dönmediği anlamına gelir. Bu, tasarım gereğidir ve programcı bir pencere kipinde veya kipsiz olma seçeneğine sahiptir. Genellikle, ana program açılan diyalog seçim (Tamam) veya iptal etme (İptal) ile ele alınana kadar devam edemez veya devam etmemesi durumunda kalıcı olarak tanımlanır.
İletişim kutusu şöyle bir şey söylüyor olabilir:
Belgenizde değişiklik yaptınız, kaydetmek ister misiniz? (Evet Hayır)
Burada bariz bir doğru cevap yok. Dokümanınızı yanlışlıkla bozmuş olabilirsiniz (örneğin, klavyenin üzerinden geçen kedi), bu durumda cevap "Hayır" dır veya değişikliklerde yazarak saatlerce geçirmiş olabilirsiniz, bu durumda cevap "Evet" olur.
Word'ün yapması gereken en güvenli şey, soruyu cevaplayana kadar kapatmayı reddetmektir.
Program bu şekilde tasarlandığından, kullanıcının harekete geçmesini önlemek için harekete geçmek istemeyebilir.
Genellikle, program bazı eylemleri yönlendirmesi için kullanıcıya ihtiyaç duyduğunda bir iletişim kutusu görüntülenir. Kaydedilmemiş bir belgeyi kapatmak mükemmel bir örnektir: değişiklikleri kaydetmek, değişiklikleri silmek veya kapanmayı iptal etmek ve düzenlemeye geri dönmek için bir iletişim kutusu sunar. Program kasıtlı olarak bu soruyu cevaplamadan kapatmayı reddediyor çünkü kapanma bazı eylemleri zorlayacak. Program, örneğin kendi başına karar veremez. son düzenlemeyi atın veya tam tersine, klavyede yazarak doğru sürümün üzerine yazın.
Kapatmayla ilgili olmayan bir iletişim kutusu olsa bile, bu genellikle bazı işlemlerin devam ettiği, henüz tamamlanmadığı ve kullanıcının hangi yöne gideceğine karar vermesi gerektiği anlamına gelir. Bu "basitçe iptal edilemez" çünkü iptal etmek aynı zamanda kullanıcının istemediği bir eylemdir.
Aynı zamanda programın tasarımını da basitleştirir, çünkü yaratıcıları her işlevden "güvenli bir çıkış yolu" oluşturmak zorunda kalmazlar.
Günümüzde, çoğu iletişim kutusu teknik anlamda modal değildir (program sorumlu kalır), ancak programın mantıksal akışını daha geniş anlamında modal hale getirmek hala daha kolaydır.
Yanılıyor olabilirim, ancak bunun eski ortak iletişim kontrolü davranışına geri döndüğünden şüpheleniyorum.
Dönmeden aniden öldürülürse bunların birçoğunun, bazen ölü programın dışında bile istenmeyen yan etkileri oldu ve her durumda kullanıcı girişi gerektiren bir sistem seviyesinde bir şey yapıyorlarsa, onlardan kibarca kaçmanın bir yolu yoktu.
Neden hala bu şekilde, insanlar buna alıştılar, onlarca yıldır bu varsayımla programlanan geliştiriciler ve daha önemlisi programcı olmayanlar bu diyalogları ofis otomasyon senaryolarında kullandılar ve Microsoft, hedeflerin geriye dönük uyumluluğuna sıkı sıkıya bağlı değilse hiçbir şey yapmıyor. .
Perdelerin arkasında, program (bizim durumumuzda MS Word) pencereyi oluştururken "X düğmesine tıklayın olay işleyicisi" oluşturur. Bir iletişim penceresi varken, Word bunu kaydeder. Ardından, X düğmesi işleyicisinde, X düğmesi tıklatıldığında, kaydedilen açık iletişim pencerelerini kontrol eder. Bazıları varsa, işleyici yakın işlemi iptal eder. Değilse, programı sonlandırır ve işletim sistemi program tarafından alınan belleği temizler. Bu nasıl çalışır.