Parametry ^SenderControlName oraz ^InitSenderControlName w mechanizmie obserwowania i zmiany wartości kontrolki na postawie innej kontrolki.

W mechanizmie modelowania procesów metodami SQL i C# w zdarzeniu obserwacji wartości kontrolek dotychczas dostępny był parametr ^SenderControlName. W aktualnej wersji udostępniono parametr ^InitSenderControlName. Poniżej przykłady zastosowania obu parametrów:

  • ^SenderControlName – zwraca nazwę identyfikatora kontrolki będącej na najniższym poziomie mechanizmu obserwacji, po zmianie wartości w grupie kontrolek. Mechanizm użycia parametru ^SenderControlName prezentuje poniższy przykład.

Kod obsługujący pobranie wartości dla kontrolki Pole6 może rozróżnić, w której grupie obserwacyjnej zmieniła się wartość pola. Jeżeli operator lub metoda inicjująca zmieniła wartości kontrolek Pole1, Pole2, Pole3 obserwowanych przez kontrolkę Pole4 (najniższy poziom dla kontrolki Pole6) w parametrze ^SenderControlName zostanie ustawiony identyfikator Pole4. Natomiast po zmianie wartości w kontrolce Pole5, ^SenderControlName przyjmie identyfikator kontrolki Pole5. Przykładowy kod dla obserwatora w kontrolce Pole6:

if @^SenderControlName@ =’Pole4′
select 'Zmieniono wartości w polach Pole1, Pole2 lub Pole3′
if @^SenderControlName@ = 'Pole5′
select 'Zmieniono wartość w polu Pole5′

Jeżeli w grupie obserwacyjnej na najniższym poziomie występują dwie lub więcej kontrolek, nie można określić, która z tych kontrolek zostanie zainicjowana jako ostatnia, dlatego kod obsługujący tego typu sytuacje powinien sprawdzić nazwy identyfikatorów we wszystkich kontrolkach ostatniego poziomu.

if @^SenderControlName@ =’Pole3′ or @^SenderControlName@ = 'Pole4′
select 'Zmieniono wartości w polach Pole1 lub Pole2′
if @^SenderControlName@ = 'Pole5′
select 'Zmieniono wartość w polu Pole5′

  • ^InitSenderControlName – zwraca nazwę identyfikatora kontrolki, w której nastąpiła zmiana wartości lub kliknięcie w przycisk w przypadku kontrolki typu ‘Własna akcja’.

W powyższym przykładzie po zmianie wartości w polach Pole1, Pole2 lub Pole5 kod obsługujący tę sytuację w kontrolce Pole6 może wyglądać następująco:

if @^InitSenderControlName@ =’Pole1′ or @^InitSenderControlName@ = 'Pole2′
select 'Zmieniono wartości w polach Pole1 lub Pole2′
if @^InitSenderControlName@ = 'Pole5′
select 'Zmieniono wartość w polu Pole5′

Najczęstszą sytuacją, w której wykorzystywany jest parametr ^SenderControlName lub ^InitSenderControlName jest własna akcja, która dodaje wartości do kontrolki typu Dane tabelaryczne.

Czy ten artykuł był pomocny?