[ E42 @ 27.01.2009. 11:34 ] @
Pozdrav svima,
dakle kako nekom tasteru dodeliti neku funkciju u BCB 6 npr:
kada pritisnem Enter ili tastere za strelice da desi kod:
Canvas->Rectangle(100,100,200,300); //iscrtavanje pravougaonika
ili neka druga naredba?
hvala
[ X Files @ 27.01.2009. 12:23 ] @
Mozes upotrebiti dogadjaje TForm klase: OnKeyDown, OnKeyPress, OnKeyDown.

Primer (Form1 je glavna forma):

1. kroz Object Instector postavi osobinu KeyPreview = true.
(ovo je bitno da osigura da dogadjaj pritiska tastera bude vidljiv cak iako fokus bude na nekim drugim kontrolama na formi koje imaju svoje sopstvene OnKey dogadjaje)

2. Dodaj slederci kod u OnKeyDown, tako da sve zajedno bude:
Code:

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
   if ( Key == 'A' ) // <--- Testira da li je pritisnut taster A
        Canvas->Rectangle(100,100,200,300); //iscrtavanje pravougaonika
}


Pretrazi Help po kljucnim recima "Virtual key codes" da vidis kako se testiraju specijali tasteri. Takodje, moguce je kontrolisati i Shift i Control, direktno iz dogadjaja.

Dalje, ono sto treba da znas o Canvasu je da ta promena koju si uradila NIJE TRAJNA. Svako Refreshovanje (minimizovanje/maksimizovanje ili prelaz drugim prozorom preko iscrtanog pravougaonika) ce obrisati tvoju grafiku.

Da bi se to sprecilo, kod za crtanje bi nekako trebalo spakovati u OnPaint dogadjaj.

Alternativa OnPaint-u je:
- koriscenje gotovih objekata tipa TShape
- koriscenje PaintBox objekta, mada se svodi opet na OnPaint
- crtanje preko nekog TImage objekta
- i sl.

Sve zavisi sta zelis da postignes.