Программируем на смартфоне » Страница 22

-

Программирование под Android



dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#211

Та чето там я напорол, на работе по-бырику пробовал, вот щас сделал заново



function OnStart()
{
    lay = app.CreateLayout( "linear", "VCenter,FillXY" ); 
    edt = app.CreateTextEdit( "", 0.4, -1 , "number,vcenter");
    edt.Setonchange(edtOnTouch);
    edt.SetTextColor('#dddddd');
    edt.SetHint('0');
    edt.inputType = 'integer';    
    //edt.inputType = 'float';
    lay.AddChild( edt );
    app.AddLayout(lay);
}

function edtOnTouch() 
{
    var text = this.GetText();
    if (this.inputType == 'integer' && text.indexOf('.') != -1) return this.Undo();
    else if (text == '00') return this.Undo();
    else if (text == '.') {
        text = '0.';
        this.SetText(text);
        this.SetCursorPos(2);
        }
    try {var res = eval(text)}
    catch(er) {return this.Undo()}
    var f = text.split('.')[1];
    if (res > 99999.99 || f && f.length > 2) return this.Undo(); // ограничение от безбашенного ввода
    // что-то делаем с res.
}

Zaterehniy


репутация: 704
на сайте с 2006 года
сообщений: 2504

Google Pixel 7a

Ставрополь

Возраст - 37

#212

dimy44,
та же ошибка в строке edt.Setonchange(edtOnTouch);

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#213

Вот пришел домой, накатал поновой все работает



function OnStart()
{
    setNumber(show, 'float', 'Input float:', 666);
}


 function setNumber(callback, mode, title, num) {
    if (num == undefined) num = '';
    Dialog = app.CreateDialog(title ? title : "");
    var layDlg = app.CreateLayout("linear", "vertical,fillxy" );
    layDlg.SetBackGradient('#111111', "#333333");
    layDlg.SetPadding(0.02, 0, 0.02, 0.02);
    Dialog.AddLayout(layDlg);
    var edt = app.CreateTextEdit(num, 0.8, -1, 'Number,vcenter');
    edt.Setonchange(_edtOnTouch);
    edt.inputType = mode;
    edt.SetHint('0');
    edt.SetCursorPos(String(num).length);
    var btn = app.CreateButton("OK", 0.5, -1, 'alum');
    btn.SetOnTouch(setNumberOnTouch);
    btn.callback = callback;
    btn.textObj = edt;
    layDlg.AddChild(edt);
    layDlg.AddChild(btn);
    Dialog.Show();
}



function _edtOnTouch() 
{
    var text = this.GetText();
    if (text.length && !text.match(this.inputType == 'integer'? /\d+$/ : /[\d\.]+$/))  return this.Undo();
    else if (this.inputType == 'float' && text.indexOf('.') != text.lastIndexOf('.'))  return this.Undo();
    else if (text == '.') {
        text = '0.';
        this.SetText(text);
        this.SetCursorPos(2);
        }
    else if (text.match(/0\d+/)) {
        text = text.slice(1);
        this.SetText(text);
        this.SetCursorPos(text.length);
        }
    var f = text.split('.')[1];
    if (Number(text ? text : 0) > 99999.99 || f && f.length > 2) return this.Undo();
    
}



function setNumberOnTouch() {
   Dialog.Dismiss();
   var text = this.textObj.GetText();
   this.callback(Number(text.length ? text : 0));
}



function show(value) {
    app.ShowPopup(value);
}

-------------
добавлено в 18.11: Блин, это сайт каверкает код, Setonchange в оригинале

Прикрепленный файл #1: 738_q.js.zip (832 b)
-------------
добавлено в 18.13: ты поглянь, он и без code=... Change с маленькой буквы пишет, че за фигня

Zaterehniy


репутация: 704
на сайте с 2006 года
сообщений: 2504

Google Pixel 7a

Ставрополь

Возраст - 37

#214

в архиве скрипт рабочий. все норм. Норм штука.

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#215

Та чето не очень. Если сильно быстро нажимать, просачивается фигня. Проще наверно подсвечивать некорректное значение и игнорировать в случае выбора

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#216

Спросил я насчет блокировки нецифровых символов. Думал, может есть стандартный способ. Ан нет, подобные велосипеды предложили. Вот доработанный пример, в прошлых есть лаги

Прикрепленный файл #1: af9_q.js.zip (943 b)

amazon86py


репутация:
на сайте с 1970 года
сообщений:

#217

(droidscript не pys60 но норм smile )

юзаю вебвиев и html ки с яваскриптами как GUI в место стандартных лейаутов дроидскрипта, оформляеш как хочеш, и в вебвиев можно юзать функций из app. сохранял тхт файл на сдкарте через вебвиев.

dimy44


репутация: 537
на сайте с 2006 года
сообщений: 2540

HTC One S

Евпатория

Возраст - 54

#218

amazon86py,
это да, но возни много. Есть какой норм конструктор хтмл на андроид?

Zaterehniy


репутация: 704
на сайте с 2006 года
сообщений: 2504

Google Pixel 7a

Ставрополь

Возраст - 37

#219

я бы не советовал юзать хтмл в роли морды приложения.

amazon86py


репутация:
на сайте с 1970 года
сообщений:

#220

dimy44,
pomniu ya sozdal malenkuiu progu s TEXTEDIT i mnogo knopkami, na knopki povesil funkcii chtoib pri klike vstavlyali nujnie mne tegi v textedit, prostaya takaya proga smile.
Isho yuzal PHONEGAP dlya sozdanya html.

Zaterehnyi o chom ti? Viglyadit krasivo smile


П.с.писал пост через опера мини и старой кверти нокией :D


Яндекс.Метрика