Перейти к содержанию
Fire Monkey от А до Я
  • 0

не прорисовывается часть интерфейса


juppy

Вопрос

Всем привет!

Ребята: спасайте. Понимаю: что вопрос детский но не могу победить.

Выручайте...

В общем вот кусок кода:

procedure TMainClient.lbTareMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
var
  ValidateAnswer:TValidateAnswer;
begin
  if (not UpdateMouseDownT) then exit;
  UpdateMouseDownT := false;
  if (not UpdateDoT) then
  begin
    if (Layout4.Height <> 0) then
      lclCloseAnimationT;
    Exit;
  end;

  lclUpAnimationT;

  TThread.CreateAnonymousThread(procedure ()
    begin
      TThread.Synchronize (nil, 
      procedure ()
      begin
        lbTare.BeginUpdate;
        Label7.Text := 'Обновляется';
      end);

    ValidateAnswer := ValidateID;
    if ValidateAnswer = TValidateAnswer.aValid then
    begin
      ClientModule1.FDConnLocalSQLight.StartTransaction;
      try
        ClientModule1.GetTareBlanceToLocalBD;
        ClientModule1.FDConnLocalSQLight.Commit;
      except
        on E: Exception do
        begin
          ClientModule1.FDConnLocalSQLight.Rollback;
          TThread.Synchronize (nil,
          procedure ()
          begin
            ShowToastMessage('Синхронизация прервана '+E.Message,TShowMessageType.aToastDlg);
          end);
        end;
      end;

      TThread.Synchronize(nil, 
      procedure ()
      begin
        UpdateTareBalanceItems;
        lclCloseAnimationT;
        Label7.Text := 'Обновлено';
        lbTare.EndUpdate;
      end);

    end else
    begin
      TThread.Synchronize(nil, 
      procedure ()
      begin
        if (Layout4.Height <> 0) then
          lclCloseAnimationT;
        lbTare.EndUpdate;
        case ValidateAnswer of
          TValidateAnswer.aNotValid:
            ShowToastMessage('Код Регистрации Отклонен', TShowMessagetype.aToastDlg);
          TValidateAnswer.aNoConnection:
            ShowToastMessage('Нет Соедиения с Сервером Поставщика', TShowMessagetype.aToastDlg);
        end;
      end);
    end;

  end).Start;
  UpdateDoT := false; 

end;

В се работает хорошо.

Но вот есть одна проблема... 

Часть ЛистБокса не отрисовывается до окончания обновления данных.

Вот как это выглядит в приложении:https://www.youtube.com/watch?v=NeZmUKwTfEk

Видно, что внизу остается белая часть до тех пор, пока все не выполнится.

Как ее победить - не знаю!

Помогите...

Изменено пользователем juppy
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Ребя, сам разобрался. Спасибо всем переживающим ?

Перенес апдейт листбокса туда, где он должен быть.

Теперь кусочек стал выглядеть вот так:

      TThread.Synchronize(nil, 
      procedure ()
      begin
        lbTare.BeginUpdate;
        UpdateTareBalanceItems;
        Label7.Text := 'Обновлено';
        lclCloseAnimationT;
        lbTare.EndUpdate;
      end);

Теперь работает вот так: https://www.youtube.com/watch?v=XABighMePBo

Если есть замечания по коду - поделитесь...

Изменено пользователем juppy
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...