[ LSDCracker @ 01.06.2008. 13:55 ] @
Treba mi pomoc.
Code:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCalc *Calc;
//---------------------------------------------------------------------------
__fastcall TCalc::TCalc(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B0Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '0';
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B1Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '1';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B2Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '2';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B3Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '3';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B4Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '4';
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B5Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '5';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B6Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '6';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B7Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '7';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B8Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '8';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B9Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '9';        
}
//---------------------------------------------------------------------------




void __fastcall TCalc::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(Key==VK_NUMPAD0){
        //B0->SetFocus();
        Edit1->Text=Edit1->Text+"0";
        }
if(Key==VK_NUMPAD1){
        //B1->SetFocus();
        Edit1->Text=Edit1->Text+"1";
        }
if(Key==VK_NUMPAD2){
        //B2->SetFocus();
        Edit1->Text=Edit1->Text+"2";
        }
if(Key==VK_NUMPAD3){
        //B3->SetFocus();
        Edit1->Text=Edit1->Text+"3";
        }
if(Key==VK_NUMPAD4){
        //B4->SetFocus();
        Edit1->Text=Edit1->Text+"4";
        }
if(Key==VK_NUMPAD5){
        //B5->SetFocus();
        Edit1->Text=Edit1->Text+"5";
        }
if(Key==VK_NUMPAD6){
        //B6->SetFocus();
        Edit1->Text=Edit1->Text+"6";
        }
if(Key==VK_NUMPAD7){
        //B7->SetFocus();
        Edit1->Text=Edit1->Text+"7";
        }
if(Key==VK_NUMPAD8){
       // B8->SetFocus();
        Edit1->Text=Edit1->Text+"8";
        }
if(Key==VK_NUMPAD9){
        //B9->SetFocus();
        Edit1->Text=Edit1->Text+"9";
        }
if(Key==VK_MULTIPLY){
        //BPUTA->SetFocus();
        }
if(Key==VK_DIVIDE){
        //BPODELJENO->SetFocus();
        }
if(Key==VK_ADD){
        //BPLUS->SetFocus();
        }
if(Key==VK_SUBTRACT){
        //BMINUS->SetFocus();
        }

}
//---------------------------------------------------------------------------

void __fastcall TCalc::FormActivate(TObject *Sender)
{
 BNL->SetFocus();
 //Edit1->SetFocus();
 //Meni->SetFocus();
 }
//---------------------------------------------------------------------------


void __fastcall TCalc::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(Key==VK_RETURN){
          //BJEDNAKO->SetFocus();
          Edit1->Undo();
        }
if(Key==VK_SEPARATOR){
        //BZAREZ->SetFocus();
        }
}
//---------------------------------------------------------------------------



void __fastcall TCalc::BNLClick(TObject *Sender)
{
Edit1->Clear();
}
//---------------------------------------------------------------------------


Gde se ovde stavljaju globalne promenjive?
Znaci treba mi 3 promenjive tipa double i jedan int.
Gde da definisem promenjive koje cu moci da koristim bilo gde kasnije?
Hvala^^
[ LSDCracker @ 01.06.2008. 23:11 ] @
Imal koga ko zna, ljudi meni ovo hitno treba.
Sorry ako je ovaj posthunt ili kako vec zabranjen, al meni stvarno hitno treba obavestenje gde da stavim promenjive koje cu moci da koristim u bilo kom eventu.
Ajd please sto pre odgovor. Mora da neko zna.
[ X Files @ 02.06.2008. 06:58 ] @
Globalne promenljive mozes uvesti ispod TCalc *Calc;
Code:

// ...
TCalc *Calc;
double d1;
double d2;
double d3;
int i1;
// ...

... pri čemu u drugom CPP fajlu (ako ćeš ih tamo i koristiti) treba da to i 'javiš':

--- Neki drugi CPP fajl ---
Code:

// ...
extern double d1;
extern double d2;
extern double d3;
extern int i1;
// ...


Ipak, globalne promenljive samo govore da nisi dovoljno dobro projektovao sistem. Razmisli čemu semantički (logički) pripadaju te promenljive... Verovatno samoj TCalc klasi. Tada treba da ih staviš u HEADER.

--- TCalc (Unit1.h) ---
Code:

// ...
public: // recimo, u javnoj sekciji
double d1;
double d2;
double d3;
int i1;
// ...


Iz drugog CPP fajla, pristupaš promenljivima ovako:
--- Neki drugi CPP fajl ---
Code:

// ...
#include "Unit1.h"
// ...
ShowMessage( Calc->d1 );
ShowMessage( Calc->d2 );
ShowMessage( Calc->d3 );
ShowMessage( Calc->i1 );
// ...

[ X Files @ 02.06.2008. 07:11 ] @
Što se tiče ovog koda, može bolje:
Code:

Ovaj deo koda se može značajno racionalizovati:
//---------------------------------------------------------------------------
void __fastcall TCalc::B0Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '0';
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B1Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '1';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B2Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '2';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B3Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '3';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B4Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '4';
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B5Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '5';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B6Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '6';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B7Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '7';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B8Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '8';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B9Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '9';        
}


Napraviš ovaj događaj za samo JEDNO dugme, a ostalim dugmadima ga samo pridružiš (izabereš iz padajuće liste)
Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TButton *KojiTasterJePritisnut = dynamic_cast<TButton *>(Sender);

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

Iz tvog koda se ne vidi kog tipa je taster. U mom primeru je TButton. Ako se radi o TSpeedButton onda izvrši zamenu. Kod polazi od pretpostavke da ono što piše na tasteru bude i preslikano na klik. Ako to nije slučaj, može se rešiti recimo sa Tag osobinom, ali to je već druga priča.

[ LSDCracker @ 02.06.2008. 15:24 ] @
Hvala za ovo, bas mi je ovo trebalo.
Ako negde jos zapnem, javim!
Hvala jos jednom!