x11 Posted October 22, 2020 Share Posted October 22, 2020 Как реализовать что-то вроде гибрида между unimEdit + unimSelect. Т.е. нужно предварительно наполнить некоторыми данными список, чтобы пользователь мог выбрать что-то одно. Но если в списке нужного пункта нет, то чтобы он просто ввел текст, как вводит в unimEdit. В unimSelect нельзя вводи, а только выбирать можно В TUnimDBLookupComboBox есть свойство Style и если там выбрать csDropDown, то в этот список можно вводить данные как в unimEdit, но если заполнить список while not dmm.qOrientir.Eof do begin comboOrientir.Items.Add(dmm.qOrientir.Fields[0].AsString); dmm.qOrientir.Next; end; то выбрать ничего нельзя, ну просто нет реакции на кнопку, нажимаешь и ничего не происходит. Привязки к базе данных не требуется. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted October 22, 2020 Share Posted October 22, 2020 20 minutes ago, x11 said: В unimSelect нельзя вводи, а только выбирать можно Поможет ли этот конфиг... procedure TMainmForm.UnimFormCreate(Sender: TObject); begin UnimSelect1.JSInterface.JSConfig('editable', [True]); end; 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted October 22, 2020 Author Share Posted October 22, 2020 Спасибо. Вроде работает. Надеюсь, разработчики добавят этот функционал непосредственно в VCL-свойства. Quote Link to comment Share on other sites More sharing options...
x11 Posted October 24, 2020 Author Share Posted October 24, 2020 программным путем хочу заполнить свойство text selTimeToSubway.JSInterface.JSConfig('editable', [True]); на снимках видно, что в поле есть значение "школа", но оно не попадает в свойство text Quote Link to comment Share on other sites More sharing options...
x11 Posted October 25, 2020 Author Share Posted October 25, 2020 И еще вопрос. Можно ли для unimSelect применить свойство InputType, чтобы можно было вводить с клавиатуры только цифры, т.е. такое же свойство, как у unimEdit? Спасибо. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted October 25, 2020 Share Posted October 25, 2020 13 minutes ago, x11 said: Можно ли для unimSelect применить свойство InputType, чтобы можно было вводить с клавиатуры только цифры, т.е. такое же свойство, как у unimEdit? Добрый день, Можете попробовать так, но здесь также возможен ввод в виде экспоненциальной записи: procedure TMainmForm.UnimFormCreate(Sender: TObject); begin with UnimSelect1.JSInterface do begin JSConfig('editable', [True]); JSConfig('inputType', ['number']); end; end; 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted October 25, 2020 Author Share Posted October 25, 2020 10 minutes ago, Sherzod said: JSConfig('inputType', ['number']); Спасибо. То, что надо. 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted October 25, 2020 Share Posted October 25, 2020 Только цифры: procedure TMainmForm.UnimFormCreate(Sender: TObject); begin with UnimSelect1.JSInterface do begin JSConfig('editable', [True]); JSConfig('inputType', ['number']); JSAddListener( 'keydown', 'function(sender, e) {'+ ' let invalidChars = ['+ ' "-",'+ ' "+",'+ ' "e",'+ ' ".",'+ ' ","'+ ' ];'+ ' if (invalidChars.includes(e.browserEvent.key)) {'+ ' e.preventDefault();'+ ' }'+ '}' ) end; end; 1 Quote Link to comment Share on other sites More sharing options...
x11 Posted January 26, 2021 Author Share Posted January 26, 2021 On 10/25/2020 at 11:18 AM, Sherzod said: JSConfig('editable', [True]); Оказалось, что компонента TUnimSelect хоть и является редактируемой, но введенный текст она на сервер не передает, т.е. возвращается пустая строка: UnimButton1.Caption := UnimSelect1.Text; добавление события-путышки не решает проблему: procedure TMainmForm.UnimSelect1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin // end; uniGUI_test_Editable.zip Quote Link to comment Share on other sites More sharing options...
x11 Posted January 26, 2021 Author Share Posted January 26, 2021 И еще одна проблема: кнопка Clear не очищает строку ввода. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted January 26, 2021 Share Posted January 26, 2021 43 minutes ago, x11 said: Оказалось, что компонента TUnimSelect хоть и является редактируемой, но введенный текст она на сервер не передает, т.е. возвращается пустая строка: Я думаю, Вам следует создать компонент, унаследованный от TUnimSelect и добавить такую возможность... 1. Использовать событие blur для отправки введенного значения на сервер. 2. Добавить OnAjaxEvent событие или JSAddEvent... 3. Проверить, есть ли введенное значение в Items, если нет, то добавить и выбрать... Quote Link to comment Share on other sites More sharing options...
x11 Posted January 26, 2021 Author Share Posted January 26, 2021 я не нашел пример, как использовать blur для отправки введенного значения Quote Link to comment Share on other sites More sharing options...
x11 Posted January 26, 2021 Author Share Posted January 26, 2021 вот что я нашел, и все https://docs.sencha.com/extjs/7.0.0/modern/Ext.field.Text.html#event-blur Quote Link to comment Share on other sites More sharing options...
x11 Posted January 26, 2021 Author Share Posted January 26, 2021 function blur(sender, e, eOpts) { ajaxRequest(sender, "eventBlur", ['text=' + что здесь]); } что написать после + ? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted January 26, 2021 Share Posted January 26, 2021 sender.getValue() Quote Link to comment Share on other sites More sharing options...
x11 Posted January 26, 2021 Author Share Posted January 26, 2021 Не могу понять, зачем я взял unimSelect, если есть более продвинутая компонента unimCombobox. Там уже все это есть и работает. 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.