Lua dialogy

Přehled možností

  local res = dlg.create({Caption="Test dialog", Encoding=encoding,
  Items={
    {"label1", "label", "Nápis", nil, nil, "return Sender..' changed, value: '..cf.tostring(Params[Sender])"},
    {"edit1", "edit", "editační pole", "", "default val"},
    {"memo1", "memo", "memo pole", "", "default memo val"},
    {"edit_integer", "edit", "integer editační pole", "integer", "1,123"},
    {"edit_float", "edit", "float editační pole", "float", 1.123},
    {"edit_currency", "edit", "currency editační pole - zaokrouhluje default hodnotu", "currency", "1.123"},
    {"lookup1", "lookup", "lookup pole", "partneri_partneri:firma", "default val"},
    {"lualookup1", "lualookup", "lualookup pole", "return cf.ShowMsg('LuaLookup pole')", "default val"},
    {"combo1", "combo", "combo pole", "tohlesezobrazuje1=tohlesevraci1|tohlesezobrazuje2=tohlevraci2"},
    {"list1", "listbox", "listbox pole", "tohlesezobrazuje1=tohlesevraci1|tohlesezobrazuje2=tohlevraci2"},
    {"checkbox1", "checkbox", "checkbox pole", "", "1"},
    {"calendartime1", "calendartime", "kalendář time", "", os.time()},
    {"calbetweentime1", "calbetweentime", "datum od time|datum do time","From|To", {os.time(), os.time()+24*3600}},
    {"calc1", "calc", "kalkulačka pole", "1.1.2005,EUR", "1000"},
    {"dirdialog1", "dirdialog", "Výběr adresáře", "", "default dir"},
    {"filedialog1", "filedialog", "Výběr souboru", "Filter EXE|*.exe|Filter DLL|*.dll", "default file"}
  },
  Buttons={
    {"show", "Ukaž výsledek", 18},
    {DLG_CANCEL, "Storno", 19}
  }
  })

Správná práce s datumy

Použítí LUA a LUA dialogů v SQL

Příklad SQL dotazu pro zobrazení pořadí dodavatelů/odběratelů dle ceny

<lua>       
  local res = dlg.create(Caption="Výběr", Encoding=encoding,
  Items="datum", "calbetweentime", "datum od|datum do","From|To",    
         "znamenko", "combo", "Odběratelé/dodavatelé","Odběratelé=1|Dodavatelé=-1",
         "pocet", "edit", "Vypsat prvních ... (prázdno = všechny)"
        )
 
if res.Result == "Cancel" then return [[select '  Storno' from common_nast]] end
local pocet = '' 
if res.pocet ~= "" then pocet = [[first ]]..cf.tonumber(res.pocet) end
 
local sql = [[select ]]..pocet..[[ prijemky.idpartner, partneri.firma, 
sum(ppolozky.mnozstvi * ppolozky.cena ) as cena, count(prijemky.idprijemka) as pocet
from sklad_prijemky prijemky      
JOIN sklad_ppolozky ppolozky ON ppolozky.idprijemka = prijemky.idprijemka
JOIN sklad_karty karty ON ppolozky.idskladkarta = karty.idskladkarta    
LEFT JOIN partneri_partneri partneri ON partneri.idpartner = prijemky.idpartner
where       
  prijemky.datum between ']]..cf.FormatSQLUnixTime(res.datumfrom)..[[' and ']]..cf.FormatSQLUnixTime(res.datumto)..[[' and
  prijemky.znamenko = ']]..res.znamenko..[['
group by prijemky.idpartner, partneri.firma
order by 3 desc]]
 
return sql
</lua> 

Použítí "lualookup" pole

Příklad použití "lualookup" pole pro výběr hodnot z navázané tabulky. Tento p říklad se používá při tisku obratové předvahy v deníku.

--zobrazeni osnovy pro vyber uctu.
--osnova se zobrazuje pres lualookup z dialogu
--vraci oznacene ucty jako string oddeleny strednikama
 
--Params je pole s hodnotama vsech fieldu v dialogu
--Sender je jmeno fieldu, ktery akci vyvolal
function ucto_denik.reports.SelectIDUcet(Params, Sender)
  local md=ClientSession:ActivateMid("ucto_osnova")
  local ds=md:FindDataSetItem("ucto_osnova")
  local form=WindowsManager:CreateDetailMidDBForm(md)
  local OutSP=WindowsManager:ShowFormSP(form, {Modal=true})
  local values=form:GetSelectedRows()
  local str=""
  table.foreachi( values, function(k, v)
    if k ~= values.n then
      str = str..v..";"
    else --posledni (nedavat strednik)
      str = str..v
    end
  end)
  ClientSession:Passivate(md)
  return str
end
 
-- ucto print dialog (datum OD, DO, druh, prefix, vyber uctu)
function ucto_denik.reports.UctoPrintDialog()
  local res = dlg.create({Caption="Zadejte rozmezí datumů, druh a prefix", Encoding=encoding,
  Items={
    {"datum", "calbetween", "datum od|datum do","From|To"},
    {"iddruh", "lookup", "Prefix druhů dokladů", "ucto_udruh:iddruh" },
    {"idstred", "lookup", "Středisko", "common_stred:idstred" },
    {"iducet", "lualookup", "Vyber účty - jednotlivé účty oddělené středníkem", "return ucto_denik.reports.SelectIDUcet(Params, Sender)"}
  }})
  return res
end
 
lua/lua_dialogy.txt · Poslední úprava: 2011/08/03 15:16 autor: pavel
 
Kromě míst, kde je explicitně uvedeno jinak, je obsah této wiki licencován pod následující licencí:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki