x11 Posted September 18, 2020 Share Posted September 18, 2020 Хотелось бы дать возможность пользователю сделать мультивыбор. С помощью какой мобильной компоненты это можно реализовать? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 18, 2020 Share Posted September 18, 2020 1 hour ago, x11 said: Хотелось бы дать возможность пользователю сделать мультивыбор. С помощью какой мобильной компоненты это можно реализовать? Я проанализирую. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 19, 2020 Share Posted September 19, 2020 On 9/18/2020 at 4:21 PM, x11 said: С помощью какой мобильной компоненты это можно реализовать? Добрый день, Вы можете попробовать использовать UnimSelect. 1. UnimSelect1.Picker = dptFloated 2. procedure TMainmForm.UnimFormCreate(Sender: TObject); begin UnimSelect1.JSInterface.JSConfig('multiSelect', [True]) end; 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted September 19, 2020 Author Share Posted September 19, 2020 Спасибо, очень надеюсь, разработчики добавят свойство multiSelect, чтобы его можно было использовать в Диспетчере свойств. 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted September 19, 2020 Author Share Posted September 19, 2020 Ок, заполнить могу так while not qTypes.Eof do begin UnimSelect1.Items.AddObject(qTypesNAME.Value, pointer(qTypesID.Value)); qTypes.Next; end; а как теперь получить значения выделенных строк? Как понять, что та или иная строка выделена? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 19, 2020 Share Posted September 19, 2020 Ok, будем анализировать дальше. 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted September 22, 2020 Author Share Posted September 22, 2020 @Sherzod Похожая проблема у TUnimSegmentedButton: свойство Pressed есть у кнопки, но оно не работает. И до сих пор не исправлено? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 On 9/19/2020 at 5:28 PM, x11 said: а как теперь получить значения выделенных строк? Как понять, что та или иная строка выделена? Добрый день, На данный момент, могу только привести примерное обходное решение, попробуйте. 1. procedure TMainmForm.UnimFormCreate(Sender: TObject); begin with UnimSelect1.JSInterface do begin JSConfig('multiSelect', [True]); JSAddListener('change', 'function(me){ajaxRequest('+ Self.WebForm.JSName +', "selEvents", ["objName="+me.uname, "values="+me.getValue()])}'); end; end; 2. procedure TMainmForm.UnimFormAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin if EventName = 'selEvents' then begin if FindComponent(Params.Values['objName'])<>nil then begin //(FindComponent(Params.Values['objName']) as TUnimSelect) Переменная := Params.Values['values']; end; end; end; 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 Присвоить значение, примерно так: UnimSelect1.JSInterface.JSCode(#1'.setValue(["3","4","5"]);') 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted September 23, 2020 Author Share Posted September 23, 2020 On 9/19/2020 at 2:50 PM, Sherzod said: 1. UnimSelect1.Picker = dptFloated Со значением dptFloated удобно тем, что список большой, на пол экрана, галочки видны, но не хватает кнопки OK (Done) для закрытия/подтверждения. Можно ее как-то добавить? Кнопка Done есть у значения dptAuto, но в этом случае сам список неудобный: маленький (только 3 строки) и нет галочек. Спасибо. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 3 minutes ago, x11 said: но не хватает кнопки OK (Done) для закрытия/подтверждения. Для закрытия, нужно проанализировать. Но, подтверждение работает "автоматически". Quote Link to comment Share on other sites More sharing options...
x11 Posted September 23, 2020 Author Share Posted September 23, 2020 Just now, Sherzod said: Но, подтверждение работает "автоматически". все равно это неудобно, пользователь тыркает в экран и попадает в какой-нибудь unimEdit и ему всплывает клавиатура... а она не должна всплывать... Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 8 minutes ago, x11 said: все равно это неудобно, пользователь тыркает в экран и попадает в какой-нибудь unimEdit и ему всплывает клавиатура... а она не должна всплывать... Может, как-то так: function afterCreate(sender) { var done = new Ext.Button({ text: 'Закрыть' }); done.render(sender.getPicker()); } Quote Link to comment Share on other sites More sharing options...
x11 Posted September 23, 2020 Author Share Posted September 23, 2020 Если строк мало (5 и меньше), то кнопка Закрыть нормально видна. Если строк много, то кнопка или вообще не видна, или чуть-чуть видна Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 15 minutes ago, x11 said: Если строк мало (5 и меньше), то кнопка Закрыть нормально видна. Если строк много, то кнопка или вообще не видна, или чуть-чуть видна function afterCreate(sender) { var done = new Ext.Button({ text: 'Закрыть', renderTo: sender.getPicker(), style: 'position: absolute; bottom: 0px; width: 100%;' }); //done.render(sender.getPicker()); } Quote Link to comment Share on other sites More sharing options...
x11 Posted September 23, 2020 Author Share Posted September 23, 2020 Спасибо за оперативность 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted September 23, 2020 Author Share Posted September 23, 2020 On 9/19/2020 at 3:28 PM, x11 said: Как понять, что та или иная строка выделена? осталось еще немного: как понять в любой момент времени, какие строки выделены заполняю названия + ID while not qTypes.Eof do begin UnimSelect1.Items.AddObject(qTypesNAME.Value, pointer(qTypesID.Value)); qTypes.Next; end; как мне получить ID выбранных строк? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 33 minutes ago, x11 said: как мне получить ID выбранных строк? Я проанализирую. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 1 hour ago, x11 said: как мне получить ID выбранных строк? 1. with UnimSelect1 do begin Clear; // while not EOF do... JSInterface.JSCode(#1'.getStore().add({id: "1", val: "Значение1"});'); JSInterface.JSCode(#1'.getStore().add({id: "2", val: "Значение2"});'); end; 2. function afterCreate(sender) { var done = new Ext.Button({ text: 'Закрыть', renderTo: sender.getPicker(), style: 'position: absolute; bottom: 0px; width: 100%;' }); sender.getSelIds = function(sender) { let Ids = ""; if (sender.getSelection() == null) return ""; sender.getSelection().forEach(function(item) { Ids += item.id + "," }); return Ids.slice(0, -1); }; } 3. procedure TMainmForm.UnimFormAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin if EventName = 'selEvents' then begin if FindComponent(Params.Values['objName'])<>nil then //(FindComponent(Params.Values['objName']) as TUnimSelect) Переменная := Params.Values['selIds']; end; end; 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 4. procedure TMainmForm.UnimFormCreate(Sender: TObject); begin with UnimSelect1.JSInterface do begin JSConfig('multiSelect', [True]); JSAddListener('change', 'function(me){ajaxRequest('+ Self.WebForm.JSName +', "selEvents", ["objName="+me.uname, "values="+me.getValue(), "selIds="+me.getSelIds(me)])}'); end; end; 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted September 23, 2020 Author Share Posted September 23, 2020 1 hour ago, Sherzod said: procedure TMainmForm.UnimFormAjaxEvent( получается, что я не могу прочитать в любой момент времени значения ID выбранных строк, а только когда пользователь их непосредственно выбирает? Получается, нужно где-то отдельно держать какой-то глобальный массив и менять его в событии UnimFormAjaxEvent? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 1 minute ago, x11 said: Получается, нужно где-то отдельно держать какой-то глобальный массив и менять его в событии UnimFormAjaxEvent? Это решение является обходным, на данный момент... 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted September 23, 2020 Author Share Posted September 23, 2020 Спасибо, вроде получилось. Но вот еще мальнькая проблемка. Я заполняю placeHolder, FormControl.JSInterface.JSConfig('placeholder', [sText]); но при выборе он все равно остается Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 23, 2020 Share Posted September 23, 2020 1 minute ago, x11 said: Я заполняю placeHolder, FormControl.JSInterface.JSConfig('placeholder', [sText]); но при выборе он все равно остается Я чуть позже проанализирую... Quote Link to comment Share on other sites More sharing options...
Sherzod Posted September 24, 2020 Share Posted September 24, 2020 23 hours ago, x11 said: Но вот еще мальнькая проблемка. Я заполняю placeHolder, FormControl.JSInterface.JSConfig('placeholder', [sText]); но при выборе он все равно остается procedure TMainmForm.UnimFormCreate(Sender: TObject); begin with UnimSelect1.JSInterface do begin JSConfig('multiSelect', [True]); JSConfig('_placeHolder', ['Test']); JSAddListener('painted', 'function(me){if (me.getValue()) {me.setPlaceholder()} else {me.setPlaceholder(me._placeHolder)}}'); JSAddListener('change', 'function(me){if (me.getValue()) {me.setPlaceholder()} else {me.setPlaceholder(me._placeHolder)} ajaxRequest('+ Self.WebForm.JSName +', "selEvents", ["objName="+me.uname, "values="+me.getValue(), "selIds="+me.getSelIds(me)])}'); end; end; 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.