Uživatelské nástroje

Nástroje pro tento web


lua:eventy

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
lua:eventy [2009/09/23 09:37] Petr Kristanlua:eventy [2022/06/13 13:38] (aktuální) – [AfterPasteClipboard] Karel Petrů
Řádek 45: Řádek 45:
   * [[#UserDefined]]   * [[#UserDefined]]
   * [[#ShowLookupField]]   * [[#ShowLookupField]]
 +  * [[#AfterPasteClipboard]]
 +  * [[#AfterCopyDetails]]
  
 ===== Popis ===== ===== Popis =====
Řádek 217: Řádek 219:
 ==== ChangeFieldValue ==== ==== ChangeFieldValue ====
  
-Event se zavola pri opusteni dane bunky nebo pri ENTERu, NEZALEZI na tom zda se hodnota skutecne zmenila nebo ne, ale na tom, ze v ni uzivatel neco editoval+Event se zavola pri opusteni dane bunky nebo pri ENTERu v případěže došlo ke změně zadaného fieldu
-Databáze je v editu nebo insertu. Hodnota OldFieldByName obsahuje to co bylo v bunce pred Editem.+Databáze je v editu nebo insertu.
  
 <code LUA> <code LUA>
Řádek 245: Řádek 247:
  
 ==== BeforePostMasterChange ==== ==== BeforePostMasterChange ====
- 
- 
- 
 ==== PrintRow ==== ==== PrintRow ====
  
Řádek 259: Řádek 258:
 end end
 </code> </code>
 +=== Barva fontů ===
 +
 +    * viz. Colors.Show() resp. v LuaConsole menu
 +
 +{{:lua:ukazka_barev_fontu.png|Ukázka barev fontů}}
  
 ==== GetCena ==== ==== GetCena ====
Řádek 265: Řádek 269:
  
 Postup zjisteni ceny: Postup zjisteni ceny:
-  - program nejprve nastavi cenu dle sloupce Cena v tabulce+  - nejprve se zavola GetCenikCena (ta bere defaultne sloupec Cena z tabulky a pak vola retezove GetCenikCena eventy)
   - zavola retezove v poradi registrace fce GetCena   - zavola retezove v poradi registrace fce GetCena
   - pokud GetCena vraci nil, neni hodnota ceny zmenena   - pokud GetCena vraci nil, neni hodnota ceny zmenena
Řádek 348: Řádek 352:
  
   srcMD:Free()   srcMD:Free()
 +end
 +</code>
 +
 +==== SetFilter ====
 +
 +Registruje se k pouze k DSI a volá se pro všechny Middle, kde se tabulka vyskytuje. Funkce dostává DSI, MDName a vrací wherestring, který se připojuje pomocí and k stávajícímu filtru.
 +
 +<code lua>
 +ClientSession:AddLUAEvent("sklad_karty.SetFilter", "v_sklad_karty.SetFilter")
 +function v_sklad_karty.SetFilterUser(DSI, MDName)
 +  --umozni zobrazeni karet z druhu "adm" pouze Adminum
 +  if not ClientSession:ISLoggedAdmin() then
 +    return [[COALESCE(IDDruh,'') != 'adm']]
 +  end 
 +end
 +
 +</code>
 +
 +==== AfterPasteClipboard ====
 +
 +Volá se na konci kopírovaní CTRL+V, záznam je postnutý. Pokud se kopíruje více záznamů volá se jen jednou na konci, DSI na je posledním kopírovaném.
 +
 +<code LUA>
 +ClientSession:AddLUAEvent("rozpocty.rozpocty_rozpocty.AfterPasteClipboard", "rozpocty_rozpocty.AfterPasteClipboard")
 +function rozpocty_rozpocty.AfterPasteClipboard(DSI)
 +  if DSI:OwnerMiddleDB():FindDataSetItem("rozpocty_rkap"):GetState()==STATE_BROWSE then
 +    DSI:OwnerMiddleDB():FindDataSetItem("rozpocty_rkap"):Refresh() --refresh kap. aby se doplnily OnCalc fiedly, ktere se pri kopirovani nepocitaji
 +  end
 +end
 +</code>
 +
 +==== AfterCopyDetails ====
 +
 +Volá se po zkopírovaní všech slave tabulek, pro každý jednotlivý RootDSI záznam, RootDSI je postnuté.
 +
 +<code LUA>
 +ClientSession:AddLUAEvent("ROZPOCTY.rozpocty_rozpocty.AfterCopyDetails","rozpocty_rozpocty.AfterCopyDetails")
 +function rozpocty_rozpocty.AfterCopyDetails(DSI)
 +  print("AfterCopyDetails",  DSI:FieldByName("IDRozp"), DSI:GetState())
 end end
 </code> </code>
Řádek 366: Řádek 409:
  
 ====== Eventy Middle ====== ====== Eventy Middle ======
- 
- 
 ===== Seznam ===== ===== Seznam =====
  
Řádek 375: Řádek 416:
   * [[#AfterPassivate]]   * [[#AfterPassivate]]
   * [[#DataToDenik]]   * [[#DataToDenik]]
 +  * [[#BeforePrint]]
  
 ===== Popis ===== ===== Popis =====
Řádek 380: Řádek 422:
  
 ==== BeforeActivate ==== ==== BeforeActivate ====
 +
 + * není žádný parametr funkce
  
 ==== AfterActivate ==== ==== AfterActivate ====
Řádek 386: Řádek 430:
  
 ==== AfterPassivate ==== ==== AfterPassivate ====
- 
- 
- 
 ==== DataToDenik ==== ==== DataToDenik ====
  
Řádek 408: Řádek 449:
 end  end 
 </code> </code>
 +
 +==== BeforePrint ====
 +
 +parametry: middle
  
 ====== Eventy Forem ====== ====== Eventy Forem ======
Řádek 446: Řádek 491:
 Volá se při zavření okna. Vrati-li funkce false, okno nebude zavřeno. Volá se při zavření okna. Vrati-li funkce false, okno nebude zavřeno.
  
-Volání: function_name(Form, DSI)+Volání: function_name(Form, DSI, Button) 
 + 
 +Button = [MR_OK|MR_CANCEL] 
 + 
 +==== CanShow ==== 
 + 
 +  * ClientSession:AddLUAEvent("form_name.CanShow", FuncName) 
 +  * FuncName(Form, DSI) return ErrMsg:string|nil 
 + 
 +<code LUA> 
 +ClientSession:AddLUAEvent("partneri_partneri.CanShow", "partneri_partneri.CanShow"
 +function partneri_partneri.CanShow(Form, DSI) 
 +  Form:MergeLocalMenuFromXML(Form:GetMiddleDB():FindDataSetItem(""), partneri_partneri.GetRychleAkceXMLMenu("partneri_partneri_RychleAkceClick", "RychleAkce")) 
 +end 
 + 
 +ClientSession:AddLUAEvent("SKUPINY.CanShow", "common_skupiny.SkupinyCanShow"
 +function common_skupiny.SkupinyCanShow(Form, DSI) 
 +  if not ClientSession:IsLoggedAdmin() then 
 +    return enc"K tomuto modulu má přístup pouze administrátor" 
 +  end 
 +end 
 +</code> 
 +===== Ukazka spousteni registrovanych eventu v LUA ===== 
 + 
 +<code lua> 
 +local MD=ClientSession:ActivateMid("Faktury"
 +local DSI=MD:FindDataSetItem(""
 +DSI:LocateRange("",""
 +for Event, Val in pairs(DSI:GetInfo("none").Events) do 
 +  if string.find(Event, "%.PrintRow$") then 
 +    for i, v in ipairs(Val) do 
 +      print(assert(loadstring(string.format("return %s(...)", v.Function)))(DSI)) 
 +    end 
 +  end 
 +end 
 + 
 +</code>
  
lua/eventy.1253698652.txt.gz · Poslední úprava: 2009/09/23 09:37 autor: Petr Kristan