|
![]() | TSQL602StoredProc | ![]() | Přehled CDK komponent | TSQL602ObjBrowser | ![]() |
Zjednodušená deklarace třídy:
type TSQL602EventAction = class(TComponent) published property Connection : TSQL602Connection; property Event : TSQL602Event; property DispatchToDataSets : Boolean; property Active : Boolean; property OnExecute : TDatasetNotifyEvent; // událost end;
Spojení na server pomocí TSQL602Connection. Změna této vlastnosti nebo deaktivace spojení s SQL serverem vyvolá deaktivaci sledování události.
Popis sledované události, viz TSQL602Event, změna této vlastnosti vyvolá deaktivaci sledování události. Aplikace může používat potomka třídy TSQL602Event - pokud bude na potomkovské třídě příslušně přepsaná metoda AssignTo, dostanou procedury ošetřující událost k dispozici instanci potomka včetně přidaných vlastností.
Pokud má tato vlastnost hodnotu true, vyvolá komponenta v případě výskytu události Event u všech datasetů připojených ke Connection událost TSQL602DataSet.OnSQL602Event.
Nastavení této vlastnosti na true zaregistruje sledování události, nastavení na false ukončí sledování události. Prakticky to znamená spuštění dalšího klientského vlákna, které je speciálním stavu, kdy pouze čeká na událost daného jména (v systémovém dotazu _iv_logged_users má toto vlákno stav=10). Původní klient není tedy čekáním blokován.
Rutina, která provádí reakci na výskyt události. Argumentem je instance TSQL602EventAction, na níž k události došlo, aktuální hodnoty parametrů události, jsou k dispozici ve vlastnostech Event.Param a Event.Count.
Ukázka zaregistrování události a reakce na její příchod (pokud je komponenta vložena do formuláře z lišty, nemusí se vytvářet)
procedure TMujForm.ZaregistrujUdalost; begin FEvent := TSQL602EventAction.Create(Self); FEvent.Connection := Connection; FEvent.Event.Name := 'ZmenaDat'; FEvent.Event.ParamMask := ''; FEvent.Event.ParamExact := false; FEvent.OnExecute := OnEvent; FEvent.Active := true; end; procedure TMujForm.OnEvent(Sender : TObject); // reakce na událost begin if FEvent.Event.Param = '1' then FDataSet1.Refresh else FDataSet2.Refresh; end;
Seznam subsekcí:
![]() | TSQL602StoredProc | ![]() | Přehled CDK komponent | TSQL602ObjBrowser | ![]() |