W tym samouczku stworzymy nowy rodzaj komunikatu i wykorzystamy go do połączenia funkcjonalności różnych kontrolek.
Tworzymy zwykłą kontrolkę korzystając z akcji New > Controller z menu File. Nazywamy ją Zdarzeniowiec screenshot
Po uruchomieniu Designera otwieramy paletę komponentów (FormItem > New Item). Tworzymy nowy przycisk (Button) o nazwie "Naprzód". (Po wybraniu rodzaju komponentu i wpisaniu nazwy trzeba nacisnąć OK.) screenshot
Tworzymy panel przycisków (Radio Buttons) o nazwie "Kontrola". Będzie on blokował działanie przycisku. screenshot
Tworzymy pasek postępu (progress bar) o nazwie "Postępy w projekcie". screenshot
Przestawiamy komponenty w projektowanym oknie tak, by się nie zasłaniały. Zmieniamy wielkość projektowanego okienka. screenshot
Chcąc otworzyć edytor zdarzeń, z menu Controller Designera wybieramy akcję Events. screenshot

Edytor zdarzeń pozwala kojarzyć ze sobą komunikaty sygnalizowane przez jedne komponenty (zdarzenia) z metodami innych komponentów (reakcjami na zdarzenia).

  • Wśród nadawców (Sender Objects) wybieramy przycisk "Naprzód" i zaznaczamy zdarzenie (Event) "naciśnięty" (clicked).
  • Wśród odbiorców (Specify Event Receiver) wybieramy "Postępy w projekcie" do którego będziemy wysyłać komunikat "posuń się do przodu" (stepIt) przy zajściu zdarzenia.
  • Dodajemy skojarzenie przy pomocy przycisku <<Add<< i zamykamy edytor zdarzeń przyciskiem OK. (Zauważcie co się zmieniło po naciśnięciu przycisku <<Add<<.)
screenshot
Testujemy obsługę zdarzenia (menu File, akcja Test interface). W trybie testowym naciskamy kilkakrotnie przycisk "Naprzód!" na projektowanej kontrolce. screenshot
Aby zablokować przycisk "Naprzód" musimy stworzyć nowy komunikat. Otwieramy edytor metod używając akcji Methods... z menu Tools. screenshot

Tworzymy nową metodę naciskając New i wpisując w okienko edycyjne kod:
toggleBlocking
(Kontrola getSelection = 1) ifTrue: [ Naprzód enable ]
ifFalse: [ Naprzód disable ]
Naciskamy Save by zapamiętać kod metody.

(Z prawej strony mamy podpowiadaczkę nazw komponentów i podpowiadaczkę nazw komunikatów.)

screenshot
Zamykamy edytor akcji przyciskiem close i otwieramy ponownie edytor zdarzeń. Teraz łączymy zdarzenie changed: obiektu Kontrola z metodą toggleBlocking projektowanego kontrolera. screenshot
Znów testujemy interfejs... screenshot

Tak powinien wyglądać kod okienka po przejściu samouczka.