Jump to content

Обновить форму или компоненту в run-time


x11

Recommended Posts

На форме есть TUnimCarousel, которая наполняется картинками в событии FormShow.

Но потом пользователь может удалить и загрузить другие картинки и карусель нужно обновить. Я выполняю ту же процедуру, которая сперва удаляет все TUnimCarouselPage с дочерними картинками, а потом снова наполняет.

И вот тут проблема. Я вижу, что карусель наполнена и можно листать, но все страницы (TUnimCarouselPage) при пролистывании пустые.

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

Или я неправильно что-то делаю.

Вот процедура наполнения карусели:

procedure PhotosLoadImages;
var
  i: Integer;
  sPath, s: string;
  LList: TStringDynArray;
  UnimImage: TUnimImage;
  UnimCarouselPage: TUnimCarouselPage;
begin
  if carouselPhotos.PageCount > 0 then
    for i := pred(carouselPhotos.PageCount) downto 0 do
      carouselPhotos.Pages[i].Destroy;

    sPath := GetCurrPhotoPath;
    LList := GetListDocs(sPath);

    if Length(LList) = 0 then
      exit;

    for s in LList do
    begin
      UnimCarouselPage := TUnimCarouselPage.Create(carouselPhotos);
      UnimCarouselPage.Parent := carouselPhotos;
      UnimCarouselPage.Carousel := carouselPhotos;


      UnimImage := TUnimImage.Create(UnimCarouselPage);
      UnimImage.Parent := UnimCarouselPage;
      UnimImage.Align := alClient;
      UnimImage.Stretch := True;

      if TFile.Exists(s) then
      begin
        UnimImage.Picture.LoadFromFile(s);
        UnimImage.Hint        := s;// полный путь к картинке
        UnimCarouselPage.Hint := s;// полный путь к картинке
      end;

    end;

  if Assigned(carouselPhotos.ActivePage) then
    lbImageName.Caption := ExtractFileName(carouselPhotos.ActivePage.Hint);

end;

 

Спасибо.

Screenshot_8.jpg

Link to comment
Share on other sites

Ещё проблема.

Если в событие UnimFileUpload1.MultiCompleted() вставить вышеуказанную процедуру обновления карусели, то окно выбора файлов просто не закрывается

Link to comment
Share on other sites

В общем, если убрать из события UnimFileUpload1.MultiCompleted()  вызов функции для повторного наполнения карусели и повесить на отдельную кнопку, то карусель нормально наполняется. И дополнительно ничего обновлять не нужно.

Но хочется, чтобы карусель обновлялась автоматически после завершения загрузки всех файлов.

 

Вопрос. А событие MultiCompleted() срабатывает после загрузки ВСЕХ файлов или после загрузки каждого файла? Просто я вижу на сервере, что в папку загружается только один файл и всё, форма загрузки висит и даже на кнопку Отмена не реагирует.

Link to comment
Share on other sites

12 minutes ago, x11 said:

Вопрос. А событие MultiCompleted() срабатывает после загрузки ВСЕХ файлов или после загрузки каждого файла?

Срабатывает после загрузки всех файлов.

Link to comment
Share on other sites

может нужно поставить какую-то задержку перед procedure PhotosLoadImages? без нее нормально работает

Link to comment
Share on other sites

Прикрепил пример. Откройте на приложение смартфоне.

1. На форме логина просто нажмите Войти.

2. Нажмите Upload (первую кнопку), выберите 2-3 файла и загрузите их.

3. Если проблема не проявится, то удалите эти картинки кнопкой Удалить.

4. Снова загрузите 2-3 файла.

Скорее всего, что проблема проявится именно после удаления картинок и повторной загрузки.

UniGUI_Touch_Img_Upload.zip

Link to comment
Share on other sites

1 hour ago, x11 said:

Скорее всего, что проблема проявится именно после удаления картинок и повторной загрузки.

Кажется проблема в массиве LList...

Link to comment
Share on other sites

Удаляю картинку, потом добавляю.

На экране пусто... хотя три страницы в карусели есть. Потом пытаюсь пролистать карусель и получаю ошибку "n.getId is not a function" каждый раз когда листаю

Screenshot_3.jpg

Link to comment
Share on other sites

2 hours ago, x11 said:

Удаляю картинку, потом добавляю.

На экране пусто... хотя три страницы в карусели есть. Потом пытаюсь пролистать карусель и получаю ошибку "n.getId is not a function" каждый раз когда листаю

Я проанализирую.

  • Upvote 1
Link to comment
Share on other sites

On 7/23/2020 at 3:49 PM, x11 said:

1. На форме логина просто нажмите Войти.

2. Нажмите Upload (первую кнопку), выберите 2-3 файла и загрузите их.

Здравствуйте,

Можете ли Вы проверить только мультизагрузку файлов?

procedure TUnimForm1.UnimFileUpload1MultiCompleted(Sender: TObject;
  Files: TUniFileInfoArray);
begin

end;

Мне кажется, есть проблема при загрузке нескольких файлов (MultipleFiles = True)...

Link to comment
Share on other sites

Я вроде бы писал, что мультизагрузка нескольких фалов работает без ошибок. Если не использовать событие OnMultiCompleted

Вот, нашел.

On 7/23/2020 at 12:09 PM, x11 said:

В общем, если убрать из события UnimFileUpload1.MultiCompleted()  вызов функции для повторного наполнения карусели и повесить на отдельную кнопку, то карусель нормально наполняется.

 

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

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

Link to comment
Share on other sites

9 minutes ago, x11 said:

Я вроде бы писал, что мультизагрузка нескольких фалов работает без ошибок. Если не использовать событие OnMultiCompleted

Да, я помню.

Но, я тестирую только мультизагрузку, и она кажется не работает корректно.

Link to comment
Share on other sites

18 minutes ago, x11 said:

что мультизагрузка нескольких фалов работает без ошибок.

Пожалуйста проверьте мультизагрузку, загружайте несколько раз и проверяйте каталог. Сохраняются ли все файлы!?

Link to comment
Share on other sites

Только что загрузил 13 файлов (Wifi, мобильный chrome) без проблем. Событие MultiCompleted пустое.

Напишите, что мне сделать, как загрузить, чтобы тоже воспроизвести проблему? Какие условия?

Свойства unimFileUpload на снимке:

Screenshot_10.jpg

Link to comment
Share on other sites

1 minute ago, x11 said:

Напишите, что мне сделать, как загрузить, чтобы тоже воспроизвести проблему? Какие условия?

 

1 minute ago, Sherzod said:

загружайте несколько раз и проверяйте каталог. Сохраняются ли все файлы!?

 

Link to comment
Share on other sites

Ага, точно, проблема есть при ПОВТОРНОЙ загрузке.

Если нажать кнопку Загрузить и выбрать 2 файла и загрузить их, то все норм. Теперь я нажимаю второй раз кнопку Загрузить, выбираю еще 3 других файла и загружаю, то на сервере остается только вторые 3 файла. Теперь я нажимаю кнопку Загрузить в третий раз и выбираю 1 файл и на сервере после загрузки остается только один файл, который я загрузил в третий раз.

Т.е. каждый раз удаляются предыдущие картинки.

  • Like 1
Link to comment
Share on other sites

Вот еще что заметил. Если в папке с картинками заранее положить пару файлов (картинок), то они удаляться не будут.

Link to comment
Share on other sites

  • 2 months later...
  • 4 weeks later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...