Aracılığıyla paylaş


ProgressBar Kontrolü Yazma

Windows Installer, bir eylem görüntüleme iletişim kutusunda ilerleme göstergesi görüntüleme işlevselliği içerir. ProgressBar denetimi tek tek bileşenlerin yüklenmesini grafik olarak temsil eder ve kalan süreye göre geçen toplam süreyi veya yükleme tamamlanana kadar kalan yaklaşık toplam süreyi raporlar.

Yükleme için beklenen toplam süreyi belirlemek için yükleyici, yürütme betiğinin oluşturulması sırasında her eylem tarafından beklenen toplam ilerleme durumunu izler. Betik oluşturma işlemi tamamlandığında ilerleme işareti toplamı depolanır ve yükleme başlar.

Betikteki her eylem yürütüldükçe, geçen ilerleme belirtisi sayısını ayrıntılandıran ilerleme mesajları etkin ileti işleyicisine gönderilir. Her ilerleme iletisinde yükleyici, etkin durumdaki iletişim kutusuna bir SetProgress ControlEvent yayınlar. SetProgress ControlEvent iletilerini yükleyiciden almak üzere betik yürütme sırasında eylem görüntüleme iletişim kutusunu oluşturmak için kullanıcı arabirimi dizisi yazılmalıdır.

Eylem görüntüleme iletişim kutusu bir SetProgress Kontrol Olayı aldığında, Kontrol Olayı'na abone olan herhangi bir denetim için EventMapping tablosunun kısmını kontrol eder. Eylem görüntüleme iletişim kutusundaki ProgressBar denetimi, Öznitelikler sütununda belirtilen İlerleme denetimi özniteliğiyle kaydolunur. Progress Control özelliği, ProgressBar denetiminin SetProgress ControlEvent ile birlikte "ticksSoFar" ve "totalTicks" değerlerinin iletileceğini belirtir. İlerleme çubuğu denetimi, bir yükleme için grafik çubuğu soldan sağa ve bir geri alma işlemi için sağdan sola ilerletmek amacıyla bu bilgileri kullanır.

Ayrıca yükleyici, her ilerleme iletisinde bir TimeRemaining ControlEvent yayınlar. Yükleme için kalan toplam süre, çalışma hızı hesaplanarak belirlenir; bu, yüklemenin başlamasından bu yana geçen toplam süreye bölünen toplam sayımlar sayısıdır. Kalan toplam tıklama sayısının yürütme hızına bölünmesi, yaklaşık kalan süreyi verir.

Eylem görüntüleme iletişim kutusu TimeRemaining ControlEvent'i aldığında, yeniden abone olmuş tüm denetimlerin olup olmadığını kontrol etmek için EventMapping tablosuna bakar. Kalan süreyi görüntülemek için, Metin denetimi, Öznitelikler sütununda belirtilen TimeRemaining denetim özniteliğiyle TimeRemaining ControlEvent'e abone olunmalıdır.

"Abone olunan Metin denetimi, 'TimeRemaining' adlı parametreli şablon dizesi için UIText tablosunu sorgular." Bu dizenin iki parametresi vardır: dakika için [1] ve saniyeler için [2]. Metin denetimi her değeri dakikalara ve saniyelere dönüştürür, TimeRemaining şablon dizesini değerlendirir ve metin denetimini yeni bilgilerle güncelleştirir.

Kullanıcı arabirimi görüntüleme düzeyi temel veya daha düşük olarak ayarlanırsa, yükleyici ilerleme çubuğu ve TimeRemaining metin alanı içeren bir varsayılan iletişim kutusu görüntüler. Daha fazla bilgi için bkz. Kullanıcı Arabirimi Düzeyleri.