|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
5.4.2007, 18:45 | #1 |
Član
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
|
Pomoc - Delphi !
Pozdrav svima ! Imam u stvari dva problema. 1.) Da li neko zna ili ako moze da mi kaze kako da dodjem do efekta kada se prozor polako pojavljuje, mislim da je to property koji se zove blended, nasao sam taj efekat ali u nekim nazalost run-time komponentama.2.) Imam 5 modula koji su pisani u VB-u, da li nekako postoji nacin da im pristupim iz Delphi-ja? Vrlo mi je vazno. Zapravo ti moduli se nalaze u .mdb fajlu ali kako im pristupiti da bih imao kontrolu nad njima? Unapred hvala svima koji su zainteresovani za resavanje mog problema. PozZ !
|
5.4.2007, 22:15 | #2 |
Član
Član od: 15.6.2006.
Lokacija: Zajecar
Poruke: 185
Zahvalnice: 12
Zahvaljeno 24 puta na 21 poruka
|
Re: Pomoc - Delphi !
1) U okviru property forme imas alfablend (true/false) i alfablendvalue (0-255) propertije. Postavis alfablend na true, i alfablandvalue na neku vrednost i dobices prozirnu (polu-prozirnu) formu. Igranjem sa timer komponentom po aktiviranju forme u cujem ontime dogadjaju ces povecavati alfablendvalue od 0 do 255 dobices efekat postepenog pojavljivanja forme.
Poslednja ispravka: GoranKostic (5.4.2007 u 22:15) Razlog: sitna ispravka teksta |
6.4.2007, 13:47 | #3 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Pomoc - Delphi !
1) Najlakše je ovako:
Kod:
i := 0; while (i< 255) do begin FormX.AlphaBlendValue := i; Inc(i, 10); Sleep(50); Application.ProcessMessages; end; |
8.4.2007, 0:12 | #4 |
Član
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
|
Re: Pomoc - Delphi !
Hvala Vam momci mnogo pre svega. Radim neke lepe projekte pa sam hteo da se reklamni prozor pojavljuje na taj nacin. Ali sto se tice drugog problema, ako ste negde videli da tako nesto moze, jako bi mi pomoglo.
HVALA ! PozZ ! |
8.4.2007, 10:57 | #5 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Pomoc - Delphi !
E da, ovo gore treba da ubaciš u OnActivate event, jer ako staviš u OnCreate, nećeš videti ništa.
Što se tiče druge stvari, ako možeš da ih preradiš u Visual Basicu, onda napravi od njih ActiveX ili DLL biblioteke pošto ne verujem da može direktno... |
9.4.2007, 20:34 | #6 |
Član
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
|
Re: Pomoc - Delphi !
Hvala voodo !
Prvo sam code postavio na OnShow ali to ti je isti efekat kao i na OnCreate. Sam sam provalio da code treba postaviti na OnActivate ali... kada se pokrene prozor prvo kao da se u delicu sekunde pojavi nesto, ne znam sta pa tek onda ide "efekat" nazovimo blend koji radi ok. Sad pokusavam da nekako otklonim taj da kazem crni prozor jer mi se cini da tako otprilike izgleda. U svakom slucaju hvala na pomoci ! A sto se tice drugog problema pokusacu da nesto izvedem sto si mi rekao. HVALA ! PozZ ! |
9.4.2007, 20:43 | #7 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Pomoc - Delphi !
Pokušaj da u OnCreate staviš FormX.Visible := False, a u OnActivate, ispred onog gore, FormX.Visible := True;
|
11.4.2007, 14:36 | #8 |
Član
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
|
Re: Pomoc - Delphi !
Voodoo odmah da ti kazem da sam probao ali nije to resenje. Resenje je da u property-ju prozora, AlphaBlendValue postavis na 0. Jer kada prozor postane aktivan on izcitava vrednost koju ima u propertiju a ona je 255, zato prozor da kazem trepne pa tek onda pocinje efekat koji smo trazili.
Mislim da sam to uradio kako sam i zamislio. Ako hoces dacu ti i code. Odmah da ti kazem da nisam postavio code na OnActivate, vec prozor u kojem se pojavljuje reklamna slika se dinamicki kreira iz glavnog prozora. Zip fajl ima 700kb pa ne mogu da ti odmah ovde to dobacim da vidis. Ako hoces daj mi E-mail adresu pa cu da ti posaljem. PozZ ! |
11.4.2007, 15:05 | #9 |
Član
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
|
Re: Pomoc - Delphi !
Ovaj code postavis na OnShow glavnog prozora :
Procedure TGlavniProzor.FormShow(Sender : TObject); Var i : Integer: Begin BlendProzor := TBlendProzor.Create(Application); BlendProzor.Show; //Nikako ShowModal jer nece da ti vrati fokus na glavni prozor While (i < 255) do begin BlendProzor.AlphaBlendValue := i; Inc(i , 10); Sleep(50); Application.ProcessMessages; end; Sleep(500); While (i > 0) do begin Dec(i, 10); BlendProzor.AlphaBlendValue := i; Sleep(50); Application.ProcessMessages; end; FreeAndNil(BlendProzor); end; //Nadam se da nisam nesto promasio - probaj ! |
12.4.2007, 1:12 | #10 |
Novi član
|
Re: Pomoc - Delphi !
Postoji i drugo, po meni lepse resenje... (barem je po mom ukusu)
Snimis formu koja treba da "blenduje" kao sliku i ukrcas je unutar EXE-a kao resurs. Onda napises funkciju tipa: function: GetBlendedBitmap(FormImage, BgndImage: Bitmap; TranspLevel: Byte): Bitmap; Funkcija treba da Bitmap sliku koju vuce iz resursa u odredjenom nivou transparentnosti vraca kao rezultat. Pri tome ke FormImage slika koja treba da se pojavi (Bitmap), BgndImage slika koja predstavlja deo desktop pozadine prekriven tvojom formom (na odredjenim koordinatama) i TranspLevel parametar koji odredjuje nivo transparentnosti (0 - tvoja slika se ne vidi, 100 - tvoja slika u potpunosti prekriva pozadinu. Obrada Bitmap slika u Delphiju je relativno brza ali da bi program prilagodio svacijim potrebama ne bi bilo lose da definises neki Bitmap Array sa brojem elemenata koji ti treba da bi prikazao animaciju. Startujes program sa nevidljivom formom ili je izbacis izvan granica desktopa, Pustis jednu for petlju da proracuna slike sa odredjenom transparentnoscu 0% (original pozadina), 5%, 10%, ... 95%, 100% (tvoja slika). Ovako dobijas 19 + 2 slike za animaciju sto ti je dovoljno. Sve rezultate ukrcas u Array. I tek onda pomocu druge for petlje pustis animaciju. Sledece sto treba da uradis je da svoju formu centriras direktno na koordinate slike a samu sliku sakrijes. Mozes (ali ne moras) da koristis i trik za uklanjanje aplikacije sa TaskBar-a kako neko ne bi slucajno kliknuo i minimizirao aplikaciju i tako pokvario mukotrpno pravljeni "efekat". Resenje deluje komplikovano ali je u principu dosta jednostavno za realizaciju i nema TREPERENJA slike niti fleseva formi u pogresno vreme. Koriscenje AlphaBlend-a nije bas elegantno resenje. P.S. Ne znam koliko iskustva imas sa radom na Bitmap slikama ali uz malo Googlanje mozes da potrazis nesto gotovog koda koji ce ti odraditi posao. Na kraju uvek mozes da me kontaktiras a ja cu u skladu sa slobodnim vremenom da ti pomognem ako zelis da se upustis u ovakav nacin programiranja. Obrati paznju i na velicinu Bitmapa, da ne bi bilo Memory Overflow! Upamti da jednostavna resenje ne moraju obavezno da budu i najbolja. Bolje je malo se pomuciti pa odraditi posao kako treba. Pozdrav... Poslednja ispravka: DelphiGuide (12.4.2007 u 1:15) Razlog: Gramatika! |
12.4.2007, 21:39 | #11 |
Član
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
|
Re: Pomoc - Delphi !
Hvala DelphiGuide !
U svakom slucaju ovo sto si mi dao kao resenje jeste elegantinije i naravno bolje ali meni nije cilj animacija vec samo mala reklamica prilikom pojavljivanja glavnog prozora aplikacije. Ja pravim poslovne softvere pa mi "ono moje" resenje deluje kao najbolje i bilo je upuceno za Voodoo-a. Ali moram da ti se zahvalim jer cu tvoje resenje svakako uzeti u obzir, nikad ne znam kada mi moze zatrebati tako generalizovano resenje. Sa bitmap-om nisam toliko radio, jer mi je ciljna grupa ekonomija, baze i bla, bla, bla ... naravno i novac. Pozdrav DelphiGuide ! |
12.4.2007, 22:04 | #12 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Pomoc - Delphi !
Čekaj stani, znači ovo gore treba da napravi 19 slika pre puštanja? Pa da to nije malo prevelika potrošnja memorije za jednu tako prostu operaciju?
Ajde na Win9x, ali ako već 2000/XP podržavaju blendovanje forme, zašto to ne iskoristiti? Ako ništa, em je brže, em to Windows radi pa je samim tim i efikasnije, gledajući mem. potrošnju... A što se tiče treperenja, namesti DoubleBuffered property forme na True i neće ga biti. |
12.4.2007, 22:27 | #13 |
Novi član
|
Re: Pomoc - Delphi !
Nije preveliko... prosto zato što ti ne praviš efekat za ceo ekran već za, da kažemo, prozor srednje veličine.
Blendovanje forme u delphi-ju ima svoje propratne efekte pa ne znam da li si i koliko radio sa tim. Problemi nastaju uglavnom kada radiš aplikacije sa više formi pa se dešava da bug-uje i obično su problemi tipa:
Ovaj Bug sa AlphaBlend-om sam primetio na Delphi 7 Enterprise Edition verziji i nikada nije resen iz nepoznatih razloga. Ne kazem, i daleko od toga, da je tvoje resenje pogresno ali ti dajem samo drugi nacin da dodjes do njega. Ja bih se samo odlucio za ovo drugo resenje koje je eto malo memorijski zahtevnije (neznatno ) ali sto se tice opterecenja samog EXE fajla nije posebno primetno. Pozz, nisam mislio nista zlonamerno! |
12.4.2007, 23:01 | #14 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Pomoc - Delphi !
Ma nema frke, nego ja više volim rešenja koja troše što manje, pa makar imao i 2 GB RAM-a
Može li se ovo gore izbeći ukidanjem mogućnosti zatvaranja prozora, tako što se u OnClosing stavi da vraća False tokom trajanja animacije? A potom kad se animacija izvrti, jednostavni se vrati AlphaBlend na False. |
12.4.2007, 23:22 | #15 |
Novi član
|
Re: Pomoc - Delphi !
Problem nije u samoj animaciji vec u koriscenju AlphaBlend property-ja. Iskreno, mnogo puta sam nailazio na ovaj problem i u nekim slucajevima i ne moze da se resi. Ono sto iritira je sto i kaad se zzavrsi aplikacija program napravi neke greske u memoriji koje kad-tad dovedu do nasilne terminacije. Prvom prilikom kada aplikacija pozove AlphaBlend := True, verovatno program cita iz nekog Win DLL-a rutine za WinBlend. Zna se i to da Delphi ne "saradjuje" najbolje sa DLL-ovima koji nisu njegovi (pisani na C++, VB, itd). Zato Delphi programeri pozivaju strane DLL-ove jako retko a gotovo nikada ne prave DLL binarne baze rutina (to je tek SEX u kome samo kompajler uziva ). Zato i sam kada imam potrebu da spakujem neke rutine za kasnije koriscenje to uradim preko BPL a ne DLL biblioteke (BPL je upotrebljiv samo za Delphi). Da ne odlutam od teme, problem je sto AlphaBlend pri pozivu napravi neki bug u memoriji i ne moze se resiti ni kada se vrati vrednost na False. Tvoje pitanje se verovatno odnosilo na sprecavanje zatvaranja programa za vreme trajanja animacije ali kako program puca bez prijavljivanja greske i pravi neku vrstu Force-Termination zatvaranja, ne verujem da bi CanClose moglo da spreci zatvaranje aplikacije. |
17.4.2007, 13:53 | #16 |
Član
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
|
Re: Pomoc - Delphi !
Ono sto kaze DelphiGuide verujem da je zaista profi resenje mada zbog vremenskog ogranicenja i moram priznati ne bas takvog profi znanja kao sto ima DelphiGuide moram da se priklonim strani Voodoo-a. Procitao sam sve ono sto ste napisali pa sam jedno 150 puta pokretao aplikaciju da vidim da li ce se dogoditi neka greska u memoriji ali se nista nije dogodilo ... za sad. Sve radi OK i svaki put kada pokrenem .exe. Video sam i kakve je moj profa radio reklamne prozore za aplikacije pa AlphaBlend cini mi se nije nista posebno. U svakom slucaju podrzavam svako kreativno resenje koje zaista radi jer krajnji korisnik nema obavezu da razume problem memorije.
Pozdrav momci ! |
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Pitanje i POMOC :) ! | uslijazaninje | Osnovne komponente | 3 | 20.3.2007 14:39 |
Pomoc za one kojima je stvarno potrebna... | dados | Brbljaonica | 0 | 15.3.2007 18:27 |
Potrebna mi je pomoc | SlobodanZizovic | Šta da kupim? | 1 | 19.2.2007 4:26 |
Koji 3D engine za Delphi 7 ? | Arakis | Pravljenje igara | 2 | 25.4.2006 20:13 |
Treba mi pomoc oko konfiguracije | polarnimeda | Šta da kupim? | 8 | 10.11.2005 19:00 |