602SQL-Úplná dokumentace Index  

TSQL602EventAction

Delphi / Kylix

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;


Popis

Komponenta TSQL602Event zabezpečuje registraci sledování a ošetření výskytů specifikované události. Vlastní čekání na výskyt události se provádí v samostatném vlákně, které spravuje komponenta TSQL602Connection. Vlákno je jedno a je společné pro všechny připojené objekty třídy TSQL602EventAction. Reakce na událost OnExecute nebo OnSQL602Event z komponenty TSQL602DataSet se provádí v kontextu hlavního vlákna aplikace, ovšem během jejího provádění je čekací vlákno zablokované a nemůže tudíž informovat případné jiné objekty o výskytu dalších událostí (ke ztrátě informace o události dojít nemůže, frontu vzniklých událostí udržuje server, dokud si je klient nevyzvedne).

Unit

SQL602

Vlastnosti komponenty

Connection : TSQL602Connection

Spojení na server pomocí TSQL602Connection. Změna této vlastnosti nebo deaktivace spojení s SQL serverem vyvolá deaktivaci sledování události.

Event : TSQL602Event

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í.

DispatchToDataSets : Boolean

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.

Active : Boolean

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.



Události komponenty

procedure OnExecute(Sender: TObject);

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.



Příklad

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í: