[ LSDCracker @ 19.05.2008. 15:31 ] @
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 :)
[ Sima_Strahota89 @ 19.05.2008. 17:34 ] @
Citat:
...Znaci imam na formi 10 tastera za brojeve, +,-,*,/ i =...


Dodaj i taster "," (zapeta) trebace ti za decimalne brojeve.

Citat:
...Sad zelim da kad korisnik pritisne taster 1 na tastaturi program prikaze da je taster 1 pritisnut...


Zasto bi pokazivao da je taster 1 pritisnut kada ce ti se 1 pojaviti u editu?

Citat:
...onda doda broj 1 editu....


Edit1->Text=Edit1->Text+"1";

[ Mijalko @ 20.05.2008. 08:09 ] @
Mislim da ce morati da pravis ownerdraw dugmice.
[ X Files @ 20.05.2008. 09:54 ] @
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
[ X Files @ 20.05.2008. 10:13 ] @
A kad budeš hteo da uključiš i miša, kao paralelno sredstvo za unos brojeva, napravi dve metode:
OnSpeedButtonMouseDown
OnSpeedButtonMouseUp
... na samo jednom TSpeedButton dugmentu:
Code:

void __fastcall TForm1::D7SpeedButtonMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    TSpeedButton *KojiTasterJePritisnut = dynamic_cast<TSpeedButton *>(Sender);

    if ( KojiTasterJePritisnut )
    {
       KojiTasterJePritisnut->Down = true;
       Edit1->Text = Edit1->Text + KojiTasterJePritisnut->Caption;
    }
}

void __fastcall TForm1::D7SpeedButtonMouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    TSpeedButton *KojiTasterJePritisnut = dynamic_cast<TSpeedButton *>(Sender);

    if ( KojiTasterJePritisnut && Button == mbRight )
    {
        KojiTasterJePritisnut->Down = false;
    }
}

... i samo ih pridruži ostalim tasterima (ne treba da kopiras ovaj kod za svaki taster, samo selektuj iz padajuce liste u dogadjajima).
[ LSDCracker @ 20.05.2008. 15:08 ] @
Hvala vam momci puno, od dalje mogu sam :)