Jump to content

Программно заполнить unimDBLookupComboBox и выбрать значение


x11

Recommended Posts

On 8/4/2020 at 12:05 PM, Sherzod said:

Вы можете проанализировать и использовать этот подход:

@Sherzod

получаю ошибку, что надо обработать событие OnGetKeyValue.

Ок, а как в этом событии получить ID выбранной строки (выранной записи)?

 

Screenshot_14.jpg

Link to comment
Share on other sites

еще одна проблема: я вижу только 2 строки, а не три, хотя, исходя из кода, должно быть три строки, из них две строки одинаковые.

Т.е. как будто выполняется группировка.

procedure TfmmSearchParams.comboStreetsAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings);
begin
  if EventName = 'data' then
    if Params['root'].AsString = 'items' then
    begin
      //Здесь Вы можете использовать JSON модули
      UniSession.SendResponse('[{id: 5, val: "testVal"}, {id: 7, val: "testVal1"}, {id: 8, val: "testVal1"}]');
    end;
end;

Screenshot_15.jpg

Link to comment
Share on other sites

On 8/4/2020 at 12:05 PM, Sherzod said:

Вы можете проанализировать и использовать этот подход:

Вот еще странность. Добавляю 4 записи, но вижу 3:

UniSession.SendResponse('[{id: 5, val: "testVal"}, {id: 7, val: "testVal1"}, {id: 8, val: "testVal1"}, {id: 9, val: "testVal"}]');

 

Добавляю 5 записей, но вижу 4:

UniSession.SendResponse('[{id: 4, val: "testVal"}, {id: 5, val: "testVal"}, {id: 7, val: "testVal1"}, {id: 8, val: "testVal1"}, {id: 9, val: "testVal"}]');

 

Screenshot_19.jpg

Screenshot_20.jpg

Link to comment
Share on other sites

фильтр не работает и в список попадает только первые 4 записи

procedure TfmmSearchParams.comboStreetsAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings);
begin
  if EventName = 'data' then
    if Params['root'].AsString = 'items' then
    begin
      // вставка записей
      UniSession.SendResponse('[{id: 4, val: "Val4"}, {id: 5, val: "Record5"}, {id: 7, val: "testVal1"}, {id: 8, val: "testVal1"}, {id: 9, val: "testVal9"}, {id: 9, val: "testVal9"}]');
    end;
end;

 

Screenshot_21.jpg

Link to comment
Share on other sites

Очень надеюсь, что в ближайшем обновлении будут исправлены все проблемы с TUnimDBLookupComboBox.

Очень актуально. Поймите, из-за этого проект стоит уже полгода :sad:

Link to comment
Share on other sites

  • 2 weeks later...
  • 5 months later...
On 10/2/2020 at 1:34 PM, Sherzod said:

Я проверю.

Подскажите, я правильно понимаю, что неправильную работу механизма RemoteQuery разработчики исправлять не будут?

 

Link to comment
Share on other sites

  • 3 months later...
On 7/27/2020 at 1:12 PM, x11 said:

На форме есть много списков типа TnimDBLookupComboBox. Все они работают в режиме RemoteQuery, т.е.:
 

RemoteQuery := True;

RemoteQueryRetainResult := True;

При загрузке формы нужно у некоторых списков указать значение по умолчанию, т.е. чтобы, когда форма откроется, у этих списков уже было что-то выбрано и заполнено поле KeyValue. Чтобы потом, это значение KeyValue считать при сохранении объекта в базу.

Как это правильно сделать?

Вот мой код (DoOnNewRecord вызывается в FormShow)

TStrIntPair = record
    key: integer;
    val: string;
  end;
...
...  
  
procedure TfmmForm1.DoOnNewRecord;
Var
  StrIntPair: TStrIntPair;
begin
// валюта по умолчанию
  StrIntPair := UniMainModule.GetDefaultCarrency;
  OutputDebugString(PWideChar(StrIntPair.val));

  if StrIntPair.key <> 0 then
  begin
    comboCurr.Items.Add(StrIntPair.val);
    comboCurr.KeyValue  := StrIntPair.key;
    comboCurr.Text      := StrIntPair.val;
    comboCurr.ItemIndex := 0;

  end;

end;

 

В отладчике вижу, что структура StrIntPair заполнена. Например, StrIntPair.key имеет значение 2.

Но после открытия формы список пустой и валюта не выбрана. На снимке видно, что ничего не выбрано, а слово "валюта" - это placeholder (EmptyText).

 

Screenshot_1.jpg

Ответ на первоначальный вопрос!?

Link to comment
Share on other sites

7 minutes ago, Sherzod said:

Ответ на первоначальный вопрос!?

Не совсем понял. Это вы спрашиваете или вы утверждаете, что это есть ответ на мой вопрос?

Link to comment
Share on other sites

Как вариант, можно сделать очередной костыль в виде выпадающей панели, на которой будет находиться uniDBGrid с данными (Колонки ID + NAME).

Но, как правильно сделать, чтобы панель выпадала рядом с кнопкой, как будто это обычный список и пряталась?

 

Screenshot_5.jpg

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...