Novo

Forum kao aplikacija na telefonu

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

  • 5 odgovora
  • 3.749 pregleda

Najnovija ↓

Kako da uradim ovo? 19.05.2008. u 16:31 · pre 224 meseca #1
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 :)
Re: Kako da uradim ovo? 19.05.2008. u 18:34 · pre 224 meseca #2
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";

Re: Kako da uradim ovo? 20.05.2008. u 10:54 · pre 224 meseca #4
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
Re: Kako da uradim ovo? 20.05.2008. u 11:13 · pre 224 meseca #5
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).
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme