x11 Posted October 22, 2020 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
Sherzod Posted October 22, 2020 Posted October 22, 2020 20 minutes ago, x11 said: В unimSelect нельзя вводи, а только выбирать можно Поможет ли этот конфиг... procedure TMainmForm.UnimFormCreate(Sender: TObject); begin UnimSelect1.JSInterface.JSConfig('editable', [True]); end; 1 Quote
x11 Posted October 22, 2020 Author Posted October 22, 2020 Спасибо. Вроде работает. Надеюсь, разработчики добавят этот функционал непосредственно в VCL-свойства. Quote
x11 Posted October 24, 2020 Author Posted October 24, 2020 программным путем хочу заполнить свойство text selTimeToSubway.JSInterface.JSConfig('editable', [True]); на снимках видно, что в поле есть значение "школа", но оно не попадает в свойство text Quote
x11 Posted October 25, 2020 Author Posted October 25, 2020 И еще вопрос. Можно ли для unimSelect применить свойство InputType, чтобы можно было вводить с клавиатуры только цифры, т.е. такое же свойство, как у unimEdit? Спасибо. Quote
Sherzod Posted October 25, 2020 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
x11 Posted October 25, 2020 Author Posted October 25, 2020 10 minutes ago, Sherzod said: JSConfig('inputType', ['number']); Спасибо. То, что надо. 1 Quote
Sherzod Posted October 25, 2020 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
x11 Posted January 26, 2021 Author 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
x11 Posted January 26, 2021 Author Posted January 26, 2021 И еще одна проблема: кнопка Clear не очищает строку ввода. Quote
Sherzod Posted January 26, 2021 Posted January 26, 2021 43 minutes ago, x11 said: Оказалось, что компонента TUnimSelect хоть и является редактируемой, но введенный текст она на сервер не передает, т.е. возвращается пустая строка: Я думаю, Вам следует создать компонент, унаследованный от TUnimSelect и добавить такую возможность... 1. Использовать событие blur для отправки введенного значения на сервер. 2. Добавить OnAjaxEvent событие или JSAddEvent... 3. Проверить, есть ли введенное значение в Items, если нет, то добавить и выбрать... Quote
x11 Posted January 26, 2021 Author Posted January 26, 2021 я не нашел пример, как использовать blur для отправки введенного значения Quote
x11 Posted January 26, 2021 Author Posted January 26, 2021 вот что я нашел, и все https://docs.sencha.com/extjs/7.0.0/modern/Ext.field.Text.html#event-blur Quote
x11 Posted January 26, 2021 Author Posted January 26, 2021 function blur(sender, e, eOpts) { ajaxRequest(sender, "eventBlur", ['text=' + что здесь]); } что написать после + ? Quote
x11 Posted January 26, 2021 Author Posted January 26, 2021 Не могу понять, зачем я взял unimSelect, если есть более продвинутая компонента unimCombobox. Там уже все это есть и работает. Quote
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.