lua:lua_dialogy
Toto je starší verze dokumentu!
Lua dialogy
Přehled možností
local res = dlg.create({Caption="Test dialog", Encoding="ISO-8859-2", Items={ {"label1", "label", "Nápis"}, {"edit1", "edit", "editační pole", "", "default val"}, {"lookup1", "lookup", "lookup pole", "partneri_partneri:firma", "default val"}, {"lualookup1", "lualookup", "lualookup pole", "return cf.ShowMsg('LuaLookup pole')"}, {"combo1", "combo", "combo pole", "zobraz1=vrat1|zobraz2=vrat2"}, {"checkbox1", "checkbox", "checkbox pole", "", "1"}, {"calendar1", "calendartime", "kalendář pole", "To", cf.UnixTimeDDMMYYYY("1.1.2005")}, {"calbetween1", "calbetweentime", "datum od|datum do","From|To"}, {"calc1", "calc", "kalkulačka pole", "1.1.2005,EUR", "", "1000"}, {"dir", "dirdialog", "Výběr adresáře", "", "default dir"}, {"file", "filedialog", "Výběr souboru", "Filter EXE|*.exe|Filter DLL|*.dll", "default file"} }, Buttons={ {"show", "Ukaž výsledek", 18}, {"cancel", "Storno", 19} }})
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="windows-1250", 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="ISO-8859-2", 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.1242826527.txt.gz · Poslední úprava: 2009/05/20 13:35 autor: Petr Kristan