Czy jest jakaś możliwość wczytania dużego zdjęcia do Timage zanim pojawi się główny formularz mojej aplikacji?
Z tego co kojarzę i pamiętam z Delphi to masz procedurę FormCreate lub zdarzenie OnCreate.
Umieszczasz na ich początku co tam chcesz i już ;)
no tak, ale to nie rozwiązuje mojego problemu, bo i tak uruchamia się formularz a później trwa ładowanie mojego zdjęcia.
Przydałoby się coś takiego jak preloading zdjęcia, ale nie wiem jak coś takiego zrobić..
A jak Ty się chcesz odnosić do nieutworzonego formularza?
Ładuj obrazek w OnCreate.
no ale kiedy ładuje duży obrazek w OnCreate pokazuje się formularz całkowicie zacięty, dopiero po paru sekundach wszystko wraca do normy. a ja chciałbym tego uniknąć
Spróbuj użyć Application.ProcessMessages, a najlepiej to będzie chyba pokazać SplashScreena w osobnym wątku(jeśli to forma główna).
Swoją drogą jaki Ty obrazek ładujesz, że Ci się forma zacina?
No obraz ma wymiary 8000x8000.
Może jesteś w stanie nakierować mnie w jaki sposób zrobić coś takiego:
No obraz ma wymiary 8000x8000.
Pracujesz w agencji reklamowej czy po prostu rajcuje się ilość Mpix? [rotfl]
Co chcesz osiągnąć? Taki pasek postępu?
powiedzmy że rajcują mnie Mpix :-P
a chce osiągnąć ten formularz "Postępy". co prawda mam już takie okno które wyskakuje ale podczas wczytywania obrazka ale jest nieaktywne(zawieszone).
a ja bym chciał sobie wcisnąć Anuluj, kiedy będę już znudzony czekaniem na załadowanie do końca obrazka
timage ma taki event jak OnProgress ale on nie daje mozliwosci przerwania ladowania obrazka.
pozagladaj do funkcji "loadfromfile" i <ort>sproboj </ort>napisac wlasna wersje ktora umozliwia przerwanie ladowania.
a co do zawieszonego okna to przy zmianie progressu dawaj application.ProcessMessages; ewentualnie jeszcze jakies form.update; (przed application.processmessages)
Naprawdę nie wiem po co Ci taki wielki obraz. Jeśli tworzysz jakiś program graficzny i masz problem w tym miejscu, to zaniechaj :)
Juhas napisał(a)
Naprawdę nie wiem po co Ci taki wielki obraz. Jeśli tworzysz jakiś program graficzny i masz problem w tym miejscu, to zaniechaj :)
To jest totalnie na maxa zrąbane rozwiązanie problemu typowe dla słabiaków. Nie wolno się poddawać. Jak potrzebujesz wczytać obrazek na forme przed pokazaniem jej, to w Project -> View Source przed linijką
:Application.CreateForm(TForm1, Form1);
wpisz linijkę:
application.ShowMainForm := false; <-- tą linijkę
Application.CreateForm(TForm1, Form1);
Dzięki temu forma nie pokaże się aż do jej ręcznego pokazania. Możesz pokazać ją po załadowaniu obrazka poprzez
form1.Show
Jeżeli chcesz pasek i twierdzisz że nie da się przerwać ładowania, to się mylisz. Możesz użyć do tego zadania wątku, który będzie wczytywał obrazek, możesz w każdej chwili spauzować lub przerwać wątek, przerywając tym samym wczytywanie obrazka, tylko pamiętaj o zwolnieniu zmiennych. Większe programy bez wątków to beznadzieja, więc zainteresuj sie nimi ;)
Legalnl napisał(a)
Juhas napisał(a)
Naprawdę nie wiem po co Ci taki wielki obraz. Jeśli tworzysz jakiś program graficzny i masz problem w tym miejscu, to zaniechaj :)
To jest totalnie na maxa zrąbane rozwiązanie problemu typowe dla słabiaków. Nie wolno się poddawać.
Gościu, chodzi mi o to, że za chwile będzie się pytał o wszystko, bo nic nie będzie potrafił zrobić. I ten program będzie tak naprawdę nasz, a nie jego. Idąc dalej - nie piszę się najpierw systemu operacyjnego, tylko milion innych programów i programików, które Cię świetnie przygotują do napisania tego systemu.