Пробовал интегрировать WOW слайде в UniGUI приложение, не встает корректно. Решил сделать свой простейший слайдер.
Результат можно посмотреть здесь.
Загрузка картинок
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
procedure TSlider.DataModuleCreate(Sender: TObject); var appPath:string; begin FSlidePathesSL:=TStringList.Create; FSlidePathesSL.Clear; if TFile.Exists( UniServerModule.StartPath+'pics\slides\1.jpg' ) then FSlidePathesSL.Add('pics\slides\1.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\2.jpg' ) then FSlidePathesSL.Add('pics\slides\2.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\3.jpg' ) then FSlidePathesSL.Add('pics\slides\3.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\4.jpg' ) then FSlidePathesSL.Add('pics\slides\4.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\5.jpg' ) then FSlidePathesSL.Add('pics\slides\5.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\6.jpg' ) then FSlidePathesSL.Add('pics\slides\6.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\7.jpg' ) then FSlidePathesSL.Add('pics\slides\7.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\8.jpg' ) then FSlidePathesSL.Add('pics\slides\8.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\9.jpg' ) then FSlidePathesSL.Add('pics\slides\9.jpg'); if TFile.Exists( UniServerModule.StartPath+'pics\slides\10.jpg' ) then FSlidePathesSL.Add('pics\slides\10.jpg'); end; |
Нам нужен UniImage на форме или фрэйме. Также нам нужен UniTimer на форме или на фрэйме. Он работает только на них.
Обработка таймера. Выставляем интервал в 500 милисекунд.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
procedure TClientForm.SliderTimerTimer(Sender: TObject); var picture: tpicture; begin picture:=TPicture.Create; try SliderTimer.Tag:=SliderTimer.Tag+1; if (SliderTimer.Tag=6) then UniSession.AddJS(iSlide.JSName + '.el.fadeOut({duration: 1000})'); if SliderTimer.Tag=8 then begin // nextSlide Inc(FSlideNumber); if FSlideNumber=FSlider.SlidePathesSL.Count-1+1 then FSlideNumber:=0; picture.LoadFromFile(UniServerModule.StartPath+FSlider.SlidePathesSL[FSlideNumber]); iSlide.Picture.Bitmap:=nil; iSlide.Picture.Assign(picture); end; if SliderTimer.Tag=8 then begin UniSession.AddJS(iSlide.JSName + '.el.fadeIn({duration: 1000})'); SliderTimer.Tag:=0; end; finally picture.Free; end; end; |
Можно использовать и jQuery, но я обошелся встроенными функциями библиотеки ExtJS.
Также можно использовать 2 UniImage вместо одного. Но я пока решил не усложнять.