Jump to content

Recommended Posts

Posted

Задача такая, на форме есть около 10-15 списков, где пользователь что-то там выбирает.

Я знаю, что все заполнения всех списков надо выполнять в onCreate/onShow.

Но тогда показ формы может тормозить, будет задержка.

Поэтому я решил использовать TTask, как описано здесь

Т.е. я хочу заполнять все списки в отдельных потоках и это получится так, что списки заполнятся уже ПОСЛЕ создания и показа формы.

Сейчас работает так (без TTask):

UnimFormShow()
begin
  FillTypes(GetSuperTypeID(self.CurrentSuperType));
  FillRef('STREETS', comboStreets);
  FillRef('STATE', comboState);
...
...

и т.д.

Я пытаюсь переделать так:

UnimFormShow(Sender: TObject);
var
   taskTypes, taskStreets: ITask;
begin

  taskTypes := TTask.Create(procedure()
   begin
      FillTypes(GetSuperTypeID(self.CurrentSuperType));
   end);
   taskTypes.Start;


  taskStreets := TTask.Create(procedure()
   begin
      FillRef('STREETS', comboStreets);
   end);
   taskStreets.Start;

...

 

И каждая процедура, которая заполняет комбобокс заканчивается так - обновлением списка:

  finally
    comboTypes.EndUpdate;
    comboTypes.Refresh;
    q.Close;
    FreeAndNil(q);
  end;

 

Проблема в том, что списки как бы пустые, я по ним щелкаю, они не открываются...

Posted
22 hours ago, x11 said:

Проблема в том, что списки как бы пустые, я по ним щелкаю, они не открываются...

А что если сделать как на этом демо примере?:

\FMSoft\Framework\uniGUI\Demos\Desktop\ComboBox Remote Data

 

Posted

Не совсем понял, на что именно намекаете?

Вы предлагаете добавить отдельную кнопку на форму и нажимать ее перед выбором?

Или что?

Posted

Логика такова:

procedure TMainForm.UniFormCreate(Sender: TObject);
var
  I: Integer;
begin
  // create combo items
  UniComboBox1.Items.Clear;
  for I := 0 to 100 do
    UniComboBox1.Items.Add(IntToStr(I));

  // since RemoteQuery is true data will be sent only when user clicks the trigger
end;

 

  • Like 1

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