Novo

Forum kao aplikacija na telefonu

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

  • 9 odgovora
  • 4.435 pregleda

Najnovija ↓

Kako uglaviti sliku u program 14.04.2015. u 14:45 · pre 140 meseci #1
Radim svoju kotrolu koja ima gumbe (tSpeedButton). Na gumbe idu slike.

Radi se o varijanti DBNavigator-a

Kako postaviti default slike na gumbe tako da ih ne treba dodjeljivati pri kreiranju programa u kom se kontrola koristi?
Tj. kada se kontrola postavi na formi da se autmatski prikažu i slike na gumbima.
Korisnik kontrole ne motra imati na svom disku željene slike.
Re: Kako uglaviti sliku u program 14.04.2015. u 15:12 · pre 140 meseci #2
Mozes slike (ili jednu veliku sliku) ubaciti kao resurs fajl koji ces onda ucitati kada se komponenta startuje.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Kako uglaviti sliku u program 14.04.2015. u 15:39 · pre 140 meseci #3
Citat:
savkic: Mozes slike (ili jednu veliku sliku) ubaciti kao resurs fajl koji ces onda ucitati kada se komponenta startuje.


Ovdje imaš primjer:

Resource
Potpis
F
Re: Kako uglaviti sliku u program 15.04.2015. u 09:48 · pre 140 meseci #4
Pokušao sam napraviti kako piše, ali ne prolazi.

Da li je bitno što sliku trebam uglaviti u kontrolu, a ne program, tj. nema forme?

U unit-u gdje mi je kontrola, dodao sam:
Code:

implementation
{$R *.DFM} 
{$R ikone.res}



Ako dodam {$R *.DFM} program javi: [dcc32 Error] E1026 File not found: 'Panel1.DFM'
Ako ga ne dodam, javi: ... Resource novi_minus.res not found

Res file sam kreirao s resource editorom (skinu s neta-a, free)
Re: Kako uglaviti sliku u program 15.04.2015. u 12:38 · pre 140 meseci #6
Baš i ne...

ovo je kako user komponenti dodjeliti ikonu.

Meni treba: kako u user komponenti, koja na sebi ima gumbe, tom gumbu dodjeliti default bitmap koji se prikazuje pri postavljanju komponente na formu, a bez da programer morad dodeljivati slikicu.

Kako sam na početku napisao:
radim dbnavigator kontrolu, za nju mi trebaju slike na gumbima (First, last, next, delete....) koje su unaprijed definirane, tako da kad stavim dbpanel na formu odmah gumbi imaju slikice. Po potrebi se mogu zamjeniti.

Napravio sam da se može slika odabrati i dodjeliti svakom gumbu posebno, ali to moram raditi za sve gumbe, za svaki dbnavigator koji koristim.
Re: Kako uglaviti sliku u program 15.04.2015. u 14:59 · pre 140 meseci #7
Sad sam na brzimu ispisao, trebalo bi da radi. Koristi Image Editor iz Delphi-ja, kod mene radi bez problema.

Code:

unit MySpeebBtn;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ExtCtrls, Buttons;

    type
        TMySpeedBtn = class(TSpeedButton)
        public
             constructor Create(AOwner: TComponent); override;
     end;

procedure Register ;

implementation

 {$R resource.res}

procedure Register;
begin
  RegisterComponents('MySpeedBtn', [TMySpeedBtn]);
end;


{ TMySpeedBtn }

constructor TMySpeedBtn.Create(AOwner: TComponent);
var
   slika: TBitmap;
begin
   inherited create(Aowner);
   slika  := TBitmap.Create;
   slika.LoadFromResourceName(HInstance,'BTNBATERY');
   Glyph  := slika;
   Height := slika.Height;
   Width  := slika.Width
   slika.Free;
end;

end.

Potpis
Nikad izvini!
Re: Kako uglaviti sliku u program 15.04.2015. u 15:54 · pre 140 meseci #8
Zahvaljujem, radi :)

ako se stavi umjesto:
Code:

   ...
   slika  := TBitmap.Create;
   slika.LoadFromResourceName(HInstance,'BTNBATERY');
   Glyph  := slika;
   ...


direktno učitavanje slike:
Code:

   Glyph := LoadFromResourceName(HInstance,'BTNBATERY');


ne dobije se ispravan prikaz.
Koristim slike za enable/diseble prikaz, tj dvije slike slijepljene po širini.
Na tvoj način radi, a direktno učitvanje ne, tj. ne kako bi trebalo: ne prikazuje se slika za disable gumb, a za enable prikaže obje polovice slike.

(Stavio bih sliku da znam kako...)


U glavno, hvala, upotrijebit ću tako...
Re: Kako uglaviti sliku u program 15.04.2015. u 20:58 · pre 140 meseci #9
Nadam se da ce ti ovo skratiti muke:
Code:
unit MySpeebBtn;

interface

uses
 SysUtils, Classes, Controls, Buttons,Graphics;

    type TTip=(tFirst,tLast,tNext,tPrior,tDelete);

    type
        TMySpeedBtn = class(TSpeedButton)
        private
            fTip : TTip;
            procedure SetTip(const Value : TTip);
            procedure SetBitmap(const Value : TTip);
        public
             constructor Create(AOwner: TComponent); override;
        published
             property Tip: TTip read fTip write SetTip;
     end;

procedure Register ;

implementation

 {$R resource.res}

procedure Register;
begin
  RegisterComponents('MySpeedBtn', [TMySpeedBtn]);
end;

{ TMySpeedBtn }

constructor TMySpeedBtn.Create(AOwner: TComponent);
begin
   inherited create(Aowner);
   SetBitmap(tFirst);
end;

procedure TMySpeedBtn.SetBitmap(const Value: TTip);
var
   slika  : TBitmap;
   ImgList: TImageList;
begin
   fTip:=Value;
   slika:=TBitmap.Create;
   ImgList:=TImageList.Create(nil);
   ImgList.Height:=32; // podesi sirinu i visinu slike
   ImgList.Width:=32;
   case  fTip of
        tFirst  :   slika.LoadFromResourceName(HInstance,'FIRST');
        tLast   :   slika.LoadFromResourceName(HInstance,'LAST');
        tNext   :   slika.LoadFromResourceName(HInstance,'NEXT');
        tPrior  :   slika.LoadFromResourceName(HInstance,'PRIOR');
        tDelete :   slika.LoadFromResourceName(HInstance,'DELETE');
     end;
   ImgList.Add(slika,nil);
   if Enabled then
     ImgList.GetBitmap(0,slika)
   else
     ImgList.GetBitmap(1,slika);
   Glyph  := slika;
   Height := 32;   // podesi sirinu dugmica
   Width  := 32;
   ImgList.Free;
   slika.Free;
end;

procedure TMySpeedBtn.SetTip(const Value: TTip);
begin
     fTip:=Value;
     SetBitmap(Value);
end;

end.
Potpis
Nikad izvini!
Re: Kako uglaviti sliku u program 16.04.2015. u 08:35 · pre 140 meseci #10
Zahvaljujem na pomoći.

Dobra ideja sa TImageList, nije mi palo na pamet...
Samo ću ImgList: TImageList i učitavanje ImgList-a staviti u klasu vlasnika TMySpeedBtn.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme