Příklad: Vytvoří PmForm okno nakonfigurované pro zadání datumu a času
V jednom skriptu (např. po stisknutí tlačítka v události
onButtonUp) se vytvoří uživatelské okno pro nastavení datumu a času. Přednastavený čas lze nastavit ve skriptu za komentářem
"Initial Time". Časovou hodnotu zpracovává událostní funkce
"onViewClose".
JavaScriptVyber a zkopíruj do schránky
//#pragma variable sTxtDate=Macro("$.text('sys','date')");
//#pragma variable sTxtTime=Macro("$.text('sys','time')");
//#pragma variable sTxtSec=Macro("$.text('sys','second')");
//#pragma variable sTxtMin=Macro("$.text('sys','minute')");
//#pragma variable sTxtHour=Macro("$.text('sys','hour')");
//#pragma variable sTxtDay=Macro("$.text('sys','day')");
//#pragma variable sTxtMonth=Macro("$.text('sys','month')");
//#pragma variable sTxtYear=Macro("$.text('sys','year')");
var oFrom, oYear, oMonth, oDay, oHour, oMinut, oSec;
function onViewLoad(ev)
{
// Initial Time
var InitTime = Pm.CreatePmDateObject();
var oForm = ev.Form;
oForm.Title = sTxtDate + "/" + sTxtTime;
// string DateTime and button for setting
oFrom = oForm.CreateItem("string", "Dt", sTxtDate + " " + sTxtTime, "BodyWidthIni:10;BodyWidthMode:const;ValueHorzAlign:right;");
oFrom.Value = InitTime.Format("%Y.%m.%d %H:%M:%S");
oFrom.AddEvent("onEditAccept", "FromChange", onChangeDt);
oForm.CreateItem("separ", "", null, "Subtype:line;");
// TitleDate
var oLay1 = oForm.CreateItem("layout", "iTDate", null, "Subtype:horz;");
var oIt = oLay1.CreateItem("string", "s1", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtYear + ";");
oIt = oLay1.CreateItem("string", "s2", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtMonth + ";");
oIt = oLay1.CreateItem("string", "s3", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtDay + ";");
// Date
var oLay2 = oForm.CreateItem("layout", "iFr", null, "Subtype:horz;");
oYear = oLay2.CreateItem("number", "yearF", null, "BodyWidthIni:5;");
oYear.AddEvent("onEditAccept", "ChangeYear", onChange);
oMonth = oLay2.CreateItem("number", "monthF", null, "BodyWidthIni:5;Min:1;Max:12;");
oMonth.AddEvent("onEditAccept", "ChangeMonth", onChangeMonth);
oDay = oLay2.CreateItem("number", "dayF", null, "BodyWidthIni:5;Min:1;Max:31;");
oDay.AddEvent("onEditAccept", "ChangeDay", onChange);
// TitleTime
var oLay3 = oForm.CreateItem("layout", "iTTime", null, "Subtype:horz;");
oIt = oLay3.CreateItem("string", "s4", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtHour + ";");
oIt = oLay3.CreateItem("string", "s5", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtMin + ";");
oIt = oLay3.CreateItem("string", "s6", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtSec + ";");
// Time
var oLay4 = oForm.CreateItem("layout", "iFr2", null, "Subtype:horz;");
oHour = oLay4.CreateItem("number", "hourF", null, "BodyWidthIni:5;Min:0;Max:23;");
oHour.AddEvent("onEditAccept", "ChangeHour", onChange);
oMinut = oLay4.CreateItem("number", "minF", null, "BodyWidthIni:5;Min:0;Max:59;");
oMinut.AddEvent("onEditAccept", "ChangeMinute", onChange);
oSec = oLay4.CreateItem("number", "secF", null, "BodyWidthIni:5;Min:0;Max:59;");
oSec.AddEvent("onEditAccept", "ChangeSec", onChange);
onChangeDt();
onChangeMonth();
}
function onChangeMonth(ev)
{
var nMonth = oMonth.Value;
switch (nMonth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
oDay.Max = 31;
break;
case 2:
oDay.Max = 29;
break;
case 4:
case 6:
case 9:
case 11:
oDay.Max = 30;
break;
}
}
function onChange(ev)
{
var tDateTime = Pm.CreateDate(oYear.Value, oMonth.Value, oDay.Value, oHour.Value, oMinut.Value, oSec.Value, 0);
var sDateTime = Pm.CreatePmDateObject(tDateTime).Format("%Y.%m.%d %H:%M:%S");
oFrom.Value = sDateTime;
}
function onChangeDt(ev)
{
var nTime = Pm.ScanDate(oFrom.Value, 1);
var oTime = Pm.CreatePmDateObject(nTime);
oYear.Value = oTime.GetYear();
oMonth.Value = oTime.GetMonth();
oDay.Value = oTime.GetDay();
oHour.Value = oTime.GetHour();
oMinut.Value = oTime.GetMinute();
oSec.Value = oTime.GetSecond();
}
function onViewClose(ev)
{
if (ev.CloseReason == "ok")
{
var tTime = Pm.ScanDate(oFrom.Value, 1);
Pm.Debug(tTime);
}
}
// Vytvoří PmViewCreator - Objekt umožňuje otevřít různé typy prohlížečů
var oCreator = Pm.CreateView(null, "/#glob/form", "", "target:_blank;modal:1;");
oCreator.View.onLoad = onViewLoad;
oCreator.View.onClose = onViewClose;
// Otevře formulář v modálním okně:
oCreator.Open();