Jump to content

Компонента для одновременного выбора и ввода текста


x11

Recommended Posts

Как реализовать что-то вроде гибрида между 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;

то выбрать ничего нельзя, ну просто нет реакции на кнопку, нажимаешь и ничего не происходит.

Привязки к базе данных не требуется.

Link to comment
Share on other sites

20 minutes ago, x11 said:

В unimSelect нельзя вводи, а только выбирать можно

Поможет ли этот конфиг...

procedure TMainmForm.UnimFormCreate(Sender: TObject);
begin
  UnimSelect1.JSInterface.JSConfig('editable', [True]);
end;

 

  • Like 1
Link to comment
Share on other sites

программным путем хочу заполнить свойство text

selTimeToSubway.JSInterface.JSConfig('editable', [True]);

на снимках видно, что в поле есть значение "школа", но оно не попадает в свойство text

Screenshot_16.jpg

Screenshot_15.jpg

Screenshot_14.jpg

Link to comment
Share on other sites

И еще вопрос.

Можно ли для unimSelect применить свойство InputType, чтобы можно было вводить с клавиатуры только цифры, т.е. такое же свойство, как у unimEdit?

Спасибо.

Link to comment
Share on other sites

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;

 

  • Like 1
Link to comment
Share on other sites

Только цифры:

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;

 

  • Like 1
Link to comment
Share on other sites

  • 3 months later...
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;

 

Screenshot_6.jpg

uniGUI_test_Editable.zip

Link to comment
Share on other sites

43 minutes ago, x11 said:

Оказалось, что компонента TUnimSelect хоть и является редактируемой, но введенный текст она на сервер не передает, т.е. возвращается пустая строка:

Я думаю, Вам следует создать компонент, унаследованный от TUnimSelect и добавить такую возможность...

1. Использовать событие blur для отправки введенного значения на сервер.
2. Добавить OnAjaxEvent событие или JSAddEvent...
3. Проверить, есть ли  введенное значение в Items, если нет, то добавить и выбрать...

Link to comment
Share on other sites

Не могу понять, зачем я взял unimSelect, если есть более продвинутая компонента unimCombobox.

Там уже все это есть и работает.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...