Centrum skryptów - Systemy operacyjne

Jak mogę ukrywać i wyświetlać formant w aplikacji HTA w sposób dynamiczny?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak mogę ukrywać i wyświetlać formant w aplikacji HTA w sposób dynamiczny?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak mogę dynamicznie ukrywać i wyświetlać formant w aplikacji HTA?

-- R L-K

Cześć Skrypciarze! Odpowiedź

Cześć, R L-K. Prawdę mówiąc, piszący te słowa Skrypciarz jest dziś nieco rozkojarzony. W sumie rozkojarzony to jest zawsze, ale dzisiaj wyjątkowo. Dzisiaj czuje się, jakby siedział na beczce prochu zagrażającej całemu jego dotychczasowemu życiu!

Nie wspominaliśmy o tym wcześniej, ale piszący te słowa Skrypciarz ma syna, który już w przyszłym roku idzie na studia. Jak to zwykle w takim przypadku, przez ostatni rok otrzymywał on listy z różnych uczelni z całego świata, wszystkie zachęcające go do skorzystania z ich oferty. Były to m.in. Drexel University, Pepperdine, Linfield College, Old Dominion i cała masa innych. O niektórych być może nawet coś słyszał. Wszystko było w porządku aż do wczoraj, kiedy to otrzymał list z - uwaga – Uniwersytetu Cambridge w Cambridge w Anglii!!!

Interesująca uwaga. W roku 2009 Uniwersytet Cambridge będzie obchodził 800-lecie istnienia. Mimo że informacja ta jeszcze nie została potwierdzona, mamy powody twierdzić, że Skrypciarz Peter Constatnini – prominentny absolwent tego uniwersytetu – zostanie poproszony o wygłoszenie mowy na rozdaniu dyplomów.

Co jest złego w Uniwersytecie Cambridge? Nic, może poza małym szczegółem: Uniwersytet Cambridge i Oxford są zagorzałymi rywalami. A to problem, ponieważ Skrypciarz Dean Tsaltas czeka na termin obrony pracy magisterskiej w Oxfordzie. Jeżeli syn piszącego te słowa Skrypciarza zacznie studiować w Cambridge, aż drżymy na samą myśl o tym.

Uwaga. Ktoś mógłby zapytać: Uniwersytet Oxford? A gdzie on jest i czy to w ogóle publiczna uczelnia? Ale takie pytanie mógłby zadać tylko pracownik działu Microsoft, który początkowo odrzucił podanie Deana o zwrot kosztów kształcenia, ponieważ nie uwierzył, że takie miejsce jak Oxford w ogóle istnieje.

Możecie sobie chyba wyobrazić presję, pod jaką żyjemy. Atmosfera w siedzibie Skrypciarzy jest tak ciężka i napięta, że można by ją prawie kroić. (oczywiście gdybyśmy mieli noże, ale nam nie wolno jest ich mieć). Jednak poczucie obowiązku jest silniejsze i jako absolwent Uniwersytetu w Waszyngtonie, piszący te słowa Skrypciarz wie, że jak już się za coś zabierze, to należy to dokończyć bez względu na okoliczności. Dzięki takiemu podejściu wiemy dzisiaj, jak dynamicznie ukrywać i wyświetlać formant w aplikacji HTA:

<SCRIPT Language="VBScript">

    Sub ToggleButton

        If HereThere.style.visibility="hidden" Then

            HereThere.style.visibility="visible"

        Else

            HereThere.style.visibility="hidden"

        End If

    End Sub

</SCRIPT>



<input type="button" value="Button" name="HereThere"><P>

<input type="button" value="Click to Hide/Show Button" onClick="ToggleButton">

Mamy tutaj malutką, bardzo prostą aplikację HTA. (Tak wiemy, w Oxfordzie czy Cambridge stworzyliby superskomplikowaną aplikację HTA. Pamiętajmy, że piszący te słowa Skrypciarz ukończył amerykański uniwersytet.) Główna część naszej aplikacji HTA zawiera dwa przyciski. Pierwszy (jasno oznaczony jako <formatting role='italic'>Button</formatting>) to formant, który będziemy ukrywać i wyświetlać; drugi (oznaczony <formatting role='italic'>Click to Hide/Show Button</formatting>) to przycisk, którego będziemy używać za każdym razem, gdy będziemy chcieli ukryć lub wyświetlić drugi przycisk. Znaczniki HTML dla obydwu przycisków wyglądają następująco:

<input type="button" value="Button" name="HereThere"><P>

<input type="button" value="Click to Hide/Show Button" onClick="ToggleButton">

A sama aplikacja HTA wygląda tak:

Uwaga. Czy mogę wykorzystać powyższą grafikę jako tapetę na pulpicie? Jasne, proszę bardzo.

To by było na tyle, jeżeli chodzi o główną część aplikacji HTA. Jedyną brakującą częścią tej układanki jest podprocedura o nazwie ToogleButton. Za każdym razem, gdy klikniemy przycisk Click to Hide/Show Button, wywołamy tę podprocedurę; jak się prawdopodobnie zorientowaliśmy, do tego służy parametr onClick="ToggleButton":

<input type="button" value="Click to Hide/Show Button" onClick="ToggleButton">

Czego dokonuje ta podprocedura? Niczego, absolutnie niczego.

Zaraz zaraz, to nieprawda. W zasadzie to najpierw sprawdza, czy przycisk Button (któremu nadaliśmy nazwę HereThere) jest widoczny na ekranie; dzieje się tak poprzez określenie czy atrybut Visibility jest ustawiony na ukryty:

If HereThere.style.visibility="hidden" Then

Jeżeli atrybut Visibility jest ukryty, oznacza to, że przycisk jest ukryty; dlatego też stosujemy poniższy wiersz kodu, który zmieni wartość atrybutu Visibility na visible oraz nieprzypadkowo spowoduje pojawienie się przycisku na ekranie:

HereThere.style.visibility="visible"

Co natomiast, jeżeli atrybut Visibility nie ma wartości hidden? W takim przypadku, przycisk musi być już widoczny na ekranie; dlatego też zmieniamy wartość atrybutu Visibility i z kolei ukrywamy przycisk:

HereThere.style.visibility="hidden"

Czy to naprawdę spowoduje zniknięcie przycisku z naszego okna aplikacji HTA? Sami się przekonajcie:

Nie martwcie się, nie znika na zawsze. Teraz po prostu klikamy Click to Hide/Show Button i przycisk znowu się pojawi. Moglibyśmy tak klikać przez cały dzień, na zmianę ukrywając i wyświetlając drugi przycisk. To nie są puste słowa, to się sprawdza w praktyce.

Oczywiście nasze możliwości nie są ograniczone do przycisków. Możemy także ukrywać (i wyświetlać) inne formanty. Kwestia podchwytliwa: w przeciwieństwie do przycisków, oznaczenia innych formantów mogą nie być zakotwiczone do formantu. W ten sposób możemy ukryć np. okienko kontrolne, ale w dalszym ciągu widzieć oznaczenie na ekranie. Podobnie, możemy ukrywać i wyświetlać wielorakie formanty. W takim przypadku, nasz kod będzie odpowiednio dłuższy, może nawet przydługi i również trochę skomplikowany.

Będzie tak oczywiście jeżeli nie umieścimy tych wszystkich formantów w <SPAN>, który to będziemy następnie ukrywać i wyświetlać:

<SCRIPT Language="VBScript">

    Sub ToggleButton

        If HereThere.style.visibility="hidden" Then

            HereThere.style.visibility="visible"

        Else

            HereThere.style.visibility="hidden"

        End If

    End Sub

</SCRIPT>



<span id=HereThere>

    <INPUT type="checkbox" ID="box1">Option 1

    <INPUT type="checkbox" ID="box2">Option 2

    <INPUT type="checkbox" ID="box3">Option 3

    <INPUT type="checkbox" ID="box4">Option 4

</span>

<p>

<input type="button" value="Click to Hide/Show Button" onClick="ToggleButton">

</p>

Sami spróbujcie, wtedy zobaczycie o co nam chodzi.

Jeżeli zaś chodzi o Skrypciarzy, to całe zamieszanie wokół konkurowania pomiędzy Oxford a Cambridge to może być „wiele hałasu o nic”. (Cytując Williama Szekspira, który ukończył podstawówkę im. Króla Edwarda VI w Stratford.) W sumie, jakie są szanse na to, że piszącego te słowa Skrypciarza stać będzie na posłanie syna na Uniwersytet Cambridge w Anglii? Zerowe.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne