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/17 08:38] Karel Petrůlua: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 441: Řádek 486:
 end end
 </code> </code>
 +
 +==== CloseQuery ====
 +
 +Volá se při zavření okna. Vrati-li funkce false, okno nebude zavřeno.
 +
 +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.txt · Poslední úprava: 2022/06/13 13:38 autor: Karel Petrů