Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

komponenta - design time problem

[es] :: Pascal / Delphi / Kylix :: komponenta - design time problem

[ Pregleda: 1847 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mipko

Član broj: 11015
Poruke: 109
82.117.193.*



Profil

icon komponenta - design time problem15.06.2006. u 09:34 - pre 217 meseci
pozdrav,

imam sledeci poroblem. Extendujem TCustomDBGrid.
Imam neki property nazovimo ga

FocusedColor : TColor

override-ova sam DrawCell u kome se vrsi iscrtavanje grida i koristi vrednost gore pomenutog property-a - odnosno njegovog membera.

U SetFocusedColot metodi postavljam vrednost membera koji se koristi u DrawCell, pozovem invalidate - i nista se ne desi u design time. Znaci kontrola se ne iscrta ponovo i ne vidi se izmena. Probao sam da mu postujem paint, da mu pomocu invalidiram region, prozor... sve moguce, ali kontrola i dalje uporno odbija da se iscrta nanovo u design time.
U design time je dovvoljno da se klikne misem na kontrolu i ona se repaintuje i izmena FocusedColor je tu.
U Run time to sve radi.
Da li neko ima resenje ?

hvala,
mipko
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: komponenta - design time problem15.06.2006. u 10:56 - pre 217 meseci
> override-ova sam DrawCell u kome se vrsi iscrtavanje grida i koristi vrednost gore pomenutog property-a - odnosno njegovog membera.
> U SetFocusedColot metodi postavljam vrednost membera koji se koristi u DrawCell, pozovem invalidate - i nista se ne desi u design time. Znaci

Šta je SetFocusedColot?

> kontrola se ne iscrta ponovo i ne vidi se izmena. Probao sam da mu postujem paint, da mu pomocu invalidiram
> region, prozor... sve moguce, ali kontrola i dalje uporno odbija da se iscrta nanovo u design time.

Pokušaj Repaint.

> U design time je dovvoljno da se klikne misem na kontrolu i ona se repaintuje i izmena FocusedColor je tu.

Pogledaj šta se dešava kada se klikne kontrola pa ti uradi to isto iz koda.
 
Odgovor na temu

mipko

Član broj: 11015
Poruke: 109
82.117.193.*



Profil

icon Re: komponenta - design time problem15.06.2006. u 11:16 - pre 217 meseci
property FocusedColor : TColor read m_FocusedColor write SetFocusedColor;

procedure TMojaGridKomponenta.SetFocusedColor(col : TColor)
begin
m_FocusedColor := col;

***

end;

na mesto *** stavite sta god hocete od sledeceg ili kombinaciju sledecih metoda:

invalidate;
repaint;
refresh;
update;

nista se ne desava, dakle komponenta se ne iscrta nanovo u design time-u u run-time radi ali nece da se repaintuje u design time.

to zakljucujejem na osnovu koda koji treba da se izvrsi u proceduri DrawCell

TMojaGridKomponenta.DrawCell(...)
begin
inherited;
...
Canvas.Brush.Color := m_FocusedColor;
Canvas.FillRect(...)
...
end;

Nadam se da sam uspeo da objasnim o cemu se radi :)

[Ovu poruku je menjao mipko dana 15.06.2006. u 12:46 GMT+1]
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: komponenta - design time problem15.06.2006. u 14:53 - pre 217 meseci
> property FocusedColor : TColor read m_FocusedColor write SetFocusedColor;
> nista se ne desava, dakle komponenta se ne iscrta nanovo u design time-u u run-time radi ali nece da se repaintuje u design time.

> to zakljucujejem na osnovu koda koji treba da se izvrsi u proceduri DrawCell

> TMojaGridKomponenta.DrawCell(...)
> begin
> inherited;
> Canvas.Brush.Color := m_FocusedColor;
> Canvas.FillRect(...)
> end;

U DesignTimeu ne postoji fokusirana celija u dbgridu, pa ako napišeš nešto ovako biće izvršeno samo u runtime:

Code:

  if gdFocused in AState then
  begin
    Canvas.Brush.Color := FFocusedColor;
    Canvas.FillRect(ARect);
  end;


Za probu stavi "if gdFixed in AState then" i moći ćeš da gledaš promene i u designtimeu. Nemoj zaboraviti da posle promene u kodu reinstaliraš komponentu.
 
Odgovor na temu

mipko

Član broj: 11015
Poruke: 109
82.117.193.*



Profil

icon Re: komponenta - design time problem15.06.2006. u 15:09 - pre 217 meseci
Igore,

probao sam to sve... i opet ne radi
 
Odgovor na temu

mipko

Član broj: 11015
Poruke: 109
*.madnet.co.yu.



Profil

icon Re: komponenta - design time problem15.06.2006. u 20:05 - pre 217 meseci
reseno, totalno sumanuto. Starteam se ponasa uvrnuto do bola kad radi sa project group :) pa je tako izignorisao moja 2 check-ina i property se uopste nije podesavao preko setter metode.
Izvinjavam se na dizanju prasine
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: komponenta - design time problem

[ Pregleda: 1847 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.