[Delphi] Przed uruchomieniem programu

0

Czy jest jakaś możliwość wczytania dużego zdjęcia do Timage zanim pojawi się główny formularz mojej aplikacji?

0

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ż ;)

0

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ć..

0

A jak Ty się chcesz odnosić do nieutworzonego formularza?
Ładuj obrazek w OnCreate.

0

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ąć

0

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?

0

No obraz ma wymiary 8000x8000.

Może jesteś w stanie nakierować mnie w jaki sposób zrobić coś takiego:
user image

0

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?

0

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

0

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)

0

Naprawdę nie wiem po co Ci taki wielki obraz. Jeśli tworzysz jakiś program graficzny i masz problem w tym miejscu, to zaniechaj :)

0
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 ;)

0
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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1