Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 5.4.2007, 18:45   #1
DelFun11
Član
 
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
Exclamation 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 !
DelFun11 je offline   Odgovor sa citatom ove poruke
Stara 5.4.2007, 22:15   #2
GoranKostic
Član
 
Član od: 15.6.2006.
Lokacija: Zajecar
Poruke: 185
Zahvalnice: 12
Zahvaljeno 24 puta na 21 poruka
Određen forumom 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
GoranKostic je offline   Odgovor sa citatom ove poruke
Stara 6.4.2007, 13:47   #3
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
Određen forumom 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;
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 8.4.2007, 0:12   #4
DelFun11
Član
 
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
Smile 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 !
DelFun11 je offline   Odgovor sa citatom ove poruke
Stara 8.4.2007, 10:57   #5
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
Određen forumom 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...
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 9.4.2007, 20:34   #6
DelFun11
Član
 
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
Određen forumom 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 !
DelFun11 je offline   Odgovor sa citatom ove poruke
Stara 9.4.2007, 20:43   #7
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
Određen forumom Re: Pomoc - Delphi !

Pokušaj da u OnCreate staviš FormX.Visible := False, a u OnActivate, ispred onog gore, FormX.Visible := True;
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 11.4.2007, 14:36   #8
DelFun11
Član
 
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
Smile 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 !
DelFun11 je offline   Odgovor sa citatom ove poruke
Stara 11.4.2007, 15:05   #9
DelFun11
Član
 
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
Smile 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 !
DelFun11 je offline   Odgovor sa citatom ove poruke
Stara 12.4.2007, 1:12   #10
DelphiGuide
Novi član
 
Član od: 12.4.2007.
Lokacija: Vojvoda Stepa/Srbija
Poruke: 26
Zahvalnice: 8
Zahvaljeno 5 puta na 4 poruka
Slanje poruke preko MSN-a korisniku DelphiGuide
Wink 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!
DelphiGuide je offline   Odgovor sa citatom ove poruke
Stara 12.4.2007, 21:39   #11
DelFun11
Član
 
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
Smile 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 !
DelFun11 je offline   Odgovor sa citatom ove poruke
Stara 12.4.2007, 22:04   #12
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
Određen forumom 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.
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 12.4.2007, 22:27   #13
DelphiGuide
Novi član
 
Član od: 12.4.2007.
Lokacija: Vojvoda Stepa/Srbija
Poruke: 26
Zahvalnice: 8
Zahvaljeno 5 puta na 4 poruka
Slanje poruke preko MSN-a korisniku DelphiGuide
Thumbs up 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:
  • Show ne prikazuje formu (ili se forma ne vidi)
  • Termination bez najave i bez objasnjenja (nema kod za gresku)
  • Na pozadinskoj formi ostaje trag koji se moze resiti samo uz Refresh svih komponenti forme (ne radi Refresh za celu formu)
  • OnTop forme cesto ne radi vec postavlja Top formu ispod Parent forme (problem je ako je forma manja od Parent forme pa se ne vidi ni jedna kontrola za zatvaranje iste a fokus baci ko zna gde pa ni Shorcut ne radi)
  • Program se prividno ugasi sa Close (nema ga na TaskBaru i na ekranu ali ostaje aktivan u sistemskim procesima)

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!
DelphiGuide je offline   Odgovor sa citatom ove poruke
Stara 12.4.2007, 23:01   #14
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
Određen forumom 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.
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 12.4.2007, 23:22   #15
DelphiGuide
Novi član
 
Član od: 12.4.2007.
Lokacija: Vojvoda Stepa/Srbija
Poruke: 26
Zahvalnice: 8
Zahvaljeno 5 puta na 4 poruka
Slanje poruke preko MSN-a korisniku DelphiGuide
Određen forumom 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.
DelphiGuide je offline   Odgovor sa citatom ove poruke
Stara 17.4.2007, 13:53   #16
DelFun11
Član
 
Član od: 22.3.2007.
Lokacija: Pančevo
Poruke: 39
Zahvalnice: 0
Zahvaljeno 13 puta na 6 poruka
Smile 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 !
DelFun11 je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


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


Sva vremena su po Griniču +2 h. Sada je 8:57.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com