x11 Posted May 28, 2020 Posted May 28, 2020 Задача такая, на форме есть около 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; Проблема в том, что списки как бы пустые, я по ним щелкаю, они не открываются... Quote
Sherzod Posted May 29, 2020 Posted May 29, 2020 22 hours ago, x11 said: Проблема в том, что списки как бы пустые, я по ним щелкаю, они не открываются... А что если сделать как на этом демо примере?: \FMSoft\Framework\uniGUI\Demos\Desktop\ComboBox Remote Data Quote
x11 Posted May 29, 2020 Author Posted May 29, 2020 Не совсем понял, на что именно намекаете? Вы предлагаете добавить отдельную кнопку на форму и нажимать ее перед выбором? Или что? Quote
Sherzod Posted May 29, 2020 Posted May 29, 2020 Логика такова: 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; 1 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.