@Romanson

AniIndicator1.enabled := true; AniIndicator1.Visible := true; как с этим работать?

AniIndicator1.enabled := true;
AniIndicator1.Visible := true; - Почему на андроид сначала делается цикл потом только идет отображение AniIndicator1? т.е. индикатора загрузки не видно вообще.

Вот пример кода

procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
var
  s1, s2, c, v, s, d: string;
  i: integer;
begin
  AniIndicator1.enabled := true;
  AniIndicator1.Visible := true;

  ListBox2.Clear;
  s2 := ListBox1.Items[ListBox1.ItemIndex];
  if length(s2) = 1 then
    s1 := s2
  else
  begin
    s1 := copy(s2, 1, 2);

    /// ----------------------
    for i := 0 to Memo1.Lines.Count - 1 do
    begin
      c := Memo1.Lines.Strings[i];
      if length(c) = 1 then
        v := c
      else
      begin
        v := copy(c, 1, 2);
        if v = s1 then
          ListBox2.Items.Add(Memo1.Lines.Strings[i]);

      end;
              AniIndicator1.enabled := false;
        AniIndicator1.Visible := false;
    end;

  end;

end;

end.
  • Вопрос задан
  • 461 просмотр
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy
Android developer at Yandex
Смею предположить, что с MainThread'ом в делфи ничего кардинального сделать не могли. Когда вы делаете его видимым, в очередь ставится сообщение о том, что его надо сделать видимым. Доходит до этого очередь только на следующем шаге Looper'a. Шаг не произойдёт, пока вы не сделали всё, что хотели в текущем шаге. Ну а к тому времени, как дело дошло до этого, вы уже скрываете.

Короче, мораль сей басни - ничего долгого не делайте в MainThread. Включили прогресс - запустили асинхронную задачу - по её окончанию скрыли прогресс.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Нужно в конце каждого цикла перерисовывать объект.
.Repaint или .Redraw или .Update ну в общем что-то из этого....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы