6.2       Sterowania opóźnione (z potwierdzeniem)

 

Tryb sterowania opóźnionego włączane jest poprzez ustawienie właściwości Sterowanie natychmiastowe na wartość Nie. Tryb stosowane jest wtedy, gdy chcemy uniknąć przypadkowego wysterowania lub wtedy, gdy chcemy wykonać w tym samym momencie całą grupę sterowań.

Parametryzacja  opóźnionych sterowań składa się z dwóch elementów: sygnalizacji oczekiwania na wykonanie sterowania oraz zainicjowanie operacji wysłania danych.

Sygnalizacja stanu oczekiwania bazuje na użyciu funkcji HasWaitingControl. Obiekt oczekujący na sygnał wysłania powinien zmodyfikować swoje właściwości związane z wyglądem.

Właściwości stanowe, stan podstawowy

 

Tekst

Stan nierozpoznany

 

Kolor

=HasWaitingControl()?Red:Black

 

W tym przykładzie obiekt Tekst zmienia kolor w trybie oczekiwania. Wykorzystane jest tutaj wyrażenie warunkowe. Jest to najprostsza forma, ale ma zastosowanie wtedy, gdy obiekt nie posiada innych stanów zmieniających właściwość koloru. Jest też niewygodna gdyby chcieliśmy zmienić więcej niż jedną właściwość.

Właściwości stanowe, stan x

 

Warunek stanu

=HasWaitingControl()

 

Kolor

Cyan

 

Łatwiej jest użyć dodatkowego stanu z warunkiem HasWaitngControl. Stan ten należy ustawić jako ostatni stan obiektu (a przynajmniej po wszystkich stanach modyfikujących te same właściwości).

 

Wykonanie oczekujących operacji sterujących inicjowane jest przy pomocy akcji SendControls. W zależności od użytego parametru akcji, przycisk (lub inny obiekt) wykonujący akcję może powodować wysłanie sterowań ze wszystkich diagramów ($All), z bieżącego okna ($Window), z bieżącego diagramu ($Diagram) lub z obiektów o określonej nazwie.

Właściwości podstawowe

 

Aktywny

Tak

 

Typ kursora

Hand

 

Typ przycisku

Przycisk prostokątny 3d

 

Tryb przełącznika

Nie

Właściwości stanowe, stan podstawowy

 

Włączony

Nie

 

Kolor wyłączenia

=HasWaitingControl(”*”)?LightCoral:LightGray

 

Tekst wyłączenia

Wyślij

Zdarzenia

 

Wyłączenie przycisku

^SendControls($Diagram)

 

Pokazany fragment parametryzacji obiektu Przycisk inicjuje wysłanie sterowań z diagramu, na którym został umieszczony. Dodatkowo sygnalizowany jest stan, czy są oczekujące sterowania. Wywołanie funkcji HasWaitingControl z parametrem wzorca nazwy obiektu pozwala na sprawdzenie czy istnieją obiektu o zgodnej nazwie oczekujące na wykonanie sterowania. Parametr * oznacza wszystkie obiekty niezależnie od nazwy. Mechanizm ten działa jednak tylko, dla obiektów znajdujących się na tym samym diagramie. Nie może być używany w przypadku globalnej inicjacji sterowań z innych diagramów.

Dostępny jest również mechanizm anulowania oczekujących sterowań. Do tego celu służy akcja CancelControls używana w podobny sposób jak akcja SendControls.