Citat:
LSDCracker: Treba mi sledece:
Pravim kalkulator i sad mi treba kod koji ce da radi slece, u eventu forme onkeyup da mi nadje koji je to taster pritisnut i onda da taj button koji je vezan za taj taster izgleda pritisnuto, a da onda izvrsi sve sto treba da uradi kada je to dugme u putanju.
Znaci imam na formi 10 tastera za brojeve, +,-,*,/ i =
Sad zelim da kad korisnik pritisne taster 1 na tastaturi program prikaze da je taster 1 pritisnut, onda doda broj 1 editu.
To bi bilo to. Verovatno znate, zato i pitam :)
Drugim rečima, treba ti sve, kao kod "klin čorbe" ;)
Citat:
Mijalko: Mislim da ce morati da pravis ownerdraw dugmice.
Ne. Nemojte da hulite ovaj alat. Borland C++ Builder ima sasvim dovoljno gotovih tipova dugmadi da ne treba owner drawn dugme za Down state.
Evo, ja ću ti započeti zadatak (staviću i u attachment), pa ti nastavi dalje:
Code:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// U Object Inspectoru-u ili ovde postavi sve TSpeedButton-e da imaju GroupIndex = 1
// U Object Inspectoru-u ili ovde postavi sve TSpeedButton-e da imaju AllowAllUp = true
// U Object Inspectoru-u ili ovde postavi Edit1::ReadOnly=true;
// U Object Inspectoru-u ili ovde postavi Form1::KeyPreview=true;
}
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
TSpeedButton *MojObjekat = NULL;
switch ( Key )
{
case VK_NUMPAD0 : MojObjekat = D0SpeedButton; break;
case VK_NUMPAD1 : MojObjekat = D1SpeedButton; break;
case VK_NUMPAD2 : MojObjekat = D2SpeedButton; break;
case VK_NUMPAD3 : MojObjekat = D3SpeedButton; break;
case VK_NUMPAD4 : MojObjekat = D4SpeedButton; break;
case VK_NUMPAD5 : MojObjekat = D5SpeedButton; break;
case VK_NUMPAD6 : MojObjekat = D6SpeedButton; break;
case VK_NUMPAD7 : MojObjekat = D7SpeedButton; break;
case VK_NUMPAD8 : MojObjekat = D8SpeedButton; break;
case VK_NUMPAD9 : MojObjekat = D9SpeedButton; break;
}
if ( MojObjekat )
{
MojObjekat->Down = true;
Edit1->Text = Edit1->Text + MojObjekat->Caption;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
TSpeedButton *MojObjekat = NULL;
switch ( Key )
{
case VK_NUMPAD0 : MojObjekat = D0SpeedButton; break;
case VK_NUMPAD1 : MojObjekat = D1SpeedButton; break;
case VK_NUMPAD2 : MojObjekat = D2SpeedButton; break;
case VK_NUMPAD3 : MojObjekat = D3SpeedButton; break;
case VK_NUMPAD4 : MojObjekat = D4SpeedButton; break;
case VK_NUMPAD5 : MojObjekat = D5SpeedButton; break;
case VK_NUMPAD6 : MojObjekat = D6SpeedButton; break;
case VK_NUMPAD7 : MojObjekat = D7SpeedButton; break;
case VK_NUMPAD8 : MojObjekat = D8SpeedButton; break;
case VK_NUMPAD9 : MojObjekat = D9SpeedButton; break;
}
if ( MojObjekat )
{
MojObjekat->Down = false;
}
}
Ostale Virtual Code ID-je koji ti zatrebaju (backspace, obične brojeve koji nisu na numeric tastaturi i sl) pogledaj u BCB Helpu: Virtual key codes