Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 2.825 pregleda

Najnovija ↓

Glyph.LoadResourceFromID 09.09.2003. u 18:50 · pre 281 mesec #1
Pisao sam jednom, ali je nešto sjebano, nema posta.

Kao prvo, skoro uvek radim CLX aplikacije, radi moguќnosti da rade i na Windowsu i na Linuxu (praktično još nisam testirao).

Kao tastere koristim BitBtn, radi Glyph-a.

CLX komponente (tastere, panele....) imaju property Bitmap.

Glyphove vadim na taj način što uzmem neke bezvezne šortkate, smenim ikonu (satvim neku sa shell32.dll), print screen i u Photoshopu snimim kao .gif, .jpg, .bmp, .png...... nije bitno.

Ako u aplikaciji imam 50 tastera, i na svakog stavim Bitmap i Glyph (da pretpostavimo to je oko 1K), aplikacija ќe biti veќa za 50K.

Ima li neko pametnije rešenje? Da slike stavim u neki fajl, i njih da postavnjam kao Glyphove i Bitmape, normalno sa jednoj komandi, da ne mora za svakog tastera da pišem nešto u stilu:

procedure TMainForm.onActivate.......

Taster1.Glyph.LoadFromFile('./images/slika1.gif');
Taster2.Glyph.LoadFromFile('./images/slika2.gif');
Taster3.Glyph.LoadFromFile('./images/slika3.gif');
Taster4.Glyph.LoadFromFile('./images/slika4.gif');

Hvala unapred.
Potpis
routing protocols enable routers to route routed protocols!
Re: Glyph.LoadResourceFromID 10.09.2003. u 09:38 · pre 281 mesec #2
Postoji varijanta da resurse stavis u dll pa da ih onda grupno odatle ucitavas ( ali to je opet ucitavanje ). Nisam siguran kao to funkcionise sa CLX-om. Mozes da napravis neke pomocne funkcije koju pozivas jednom prilikom kreiranja forme:


procedure LoadPictures( Form : TForm );
begin
... ides kroz komponente na prosledjenoj formi, rekurzivno (u dubinu) i
za svaku komponentu ucitavas sliku iz samog exe-a (resource) ili dll-a
na osnovu naziva komponete i putanje u odnosu na formu:

Neki button moze imati putanju konkretnu putanju:

"Form1.Button3"

po tome mozes nazvati resource i tako prilikom ucitavanja imas finu automatiku.
end;

Nadam se da sam ovo dobro opisao. Sa ovakvim sistemom nemas mnogo posla osim onog koji bi u svakom slucaju morao da radis ( da svakom dugmencetu stavljas sliku u design time-u) Ako treba jos detalja javi pa da vidimo, ako nadjem vremena mozda razradim celu stvar.
Re: Glyph.LoadResourceFromID 10.09.2003. u 18:58 · pre 281 mesec #3
Danke bite!

A kako se kreira resource file, i kako bi se ucitavala slikica? Ne znam tacno kako da iskoristim .LoadFromResourceID. Radio sam sa LoadFromFile, ali sa LoadFromResourceID nisam.

U svakom slucaju hvala.
Potpis
routing protocols enable routers to route routed protocols!
Re: Glyph.LoadResourceFromID 17.09.2003. u 18:49 · pre 281 mesec #4
Mozda bi najbolje bi bilo da izvedes svoju TMyBitBtn klasu iz TBitBtn - u tom slucaju bi mogao da napravis svoj ModalResult, svoj Kind i naravno svoje slicice.

Evo primera kako da ucitas bitmapu iz EXE ili DLL resursa:

Code:

Procedure UcitajBitmapu (Button : TBitBtn; ImeResursa : String; DLL : String = '');
var ResInstanca : THandle;
Begin
 ResInstanca = 0; // inicijalizacija
 If DLL = '' Then // ako zelis da ucitava iz aplikacije, izostavi DLL parametar
  ResInstanca := Application.Handle
 Else 
  ResInstanca := LoadLibrary(DLL); // ako DLL parametar postoji, onda ucitaj DLL
 If ResInstanca<>0 Then Begin
  Button.Glyph.LoadFromResourceName(ResInstanca, ImeResursa); // ovde se ucitava bitmapa
  If DLL='' Then FreeLibrary(ResInstanca) // Ako DLL parametar postoji, oslobodi DLL iz memorije
 End;
End;


Funkciju pozivas sa:

UcitajBitmapu (BitBtn1, 'Ime_Resursa', 'Resursi.dll') - ako ucitavas iz DLL-a
UcitajBitmapu (BitBtn1, 'Ime_Resursa') - ako ucitavas resurs iz EXE fajla

nadam se da sam pomogao
Potpis
Kopernikus r3c DCIP, TotalTV, SS2 2.6d
Tanjir 120cm, twin LNB, SuperJack, 53e-45w
Re: Glyph.LoadResourceFromID 18.09.2003. u 02:07 · pre 281 mesec #5
I ja se nadam da si pomogao. Sad ne mogu da isprobam kod, ali kao ideja je od pomoci.

Hvala
Potpis
routing protocols enable routers to route routed protocols!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme