При компиляции проекта выскакивает ошибка [BCC32 Error] Unit1.cpp(58): E2235 Member function must be called or its address taken
| Код | void __fastcall TForm1::Button1Click(TObject *Sender) { if(!Table1->Active) Table1->Active=true; Table1->Append(); Table1->FieldByName("EmployeeKod")->AsString=Edit4->Text; Table1->FieldByName("Name")->AsString=Edit1->Text;
Table1->FieldByName("OneDayRate")->AsFloat=StrToFloat(Edit2->Text);
Table1->FieldByName("Tax")->AsFloat=StrToFloat(Edit3->Text);
Table1->Post(); Edit1->Clear; // ОШИБКА Edit2->Clear; // ОШИБКА Edit3->Clear; // ОШИБКА Edit4->Clear; // ОШИБКА Edit4->SetFocus(); } //---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender) { Form1->Close; // ОШИБКА } //---------------------------------------------------------------------------
|
Весь код:
| Код | //--------------- Расчёт заработной платы Unit1.cpp ------------- //
#include <vcl.h> #pragma hdrstop
#include "Unit1.h" //#include "Unit1_WorkWithTTable.h"
//-------------------------------------------------------//
#pragma package (smart_init) #pragma resource "*.dfm"
TForm1 *Form1;
//Функция расчёта заработной платы одного работника //
float Sal (float OneDayRate, float Tax, float AmountDays) // OneDayRate - ставка одного дня, // Tax - процент налога, // AmountDays - количество отработанных дней
{ return (OneDayRate * AmountDays * (1-Tax/100)); }
//--------------------------------------------------//
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
}
//--------------------------------------------------------------------//
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key==VK_RETURN) Edit2->SetFocus(); } //--------------------------------------------------------------//
void __fastcall TForm1::Button1Click(TObject *Sender) { if(!Table1->Active) Table1->Active=true; Table1->Append(); Table1->FieldByName("EmployeeKod")->AsString=Edit4->Text; Table1->FieldByName("Name")->AsString=Edit1->Text;
Table1->FieldByName("OneDayRate")->AsFloat=StrToFloat(Edit2->Text);
Table1->FieldByName("Tax")->AsFloat=StrToFloat(Edit3->Text);
Table1->Post(); Edit1->Clear; // ОШИБКА Edit2->Clear; // ОШИБКА Edit3->Clear; // ОШИБКА Edit4->Clear; // ОШИБКА Edit4->SetFocus(); } //---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key==VK_RETURN) Edit3->SetFocus(); } //---------------------------------------------------------------------------
void __fastcall TForm1::Edit3KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key== VK_RETURN) Button1->SetFocus(); } //---------------------------------------------------------------------------
void __fastcall TForm1::Edit4KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key== VK_RETURN) Edit1->SetFocus(); } //---------------------------------------------------------------------------
void __fastcall TForm1::Edit5KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key==VK_RETURN) Edit6->SetFocus(); } //---------------------------------------------------------------------------
void __fastcall TForm1::Edit6KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key == VK_RETURN) Button2->SetFocus(); } //---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender) { /* Сначала свойство AutoCalcFields устанавливается в fals (отключает) событие OnCalcFields (это будет иметь эффект, когда таблица неактивна, иначе событие OnCalcFields всё равно возникает. После нахождения требуемой записи свойство включает событие, чтобы можно было обработать вычислимое поле */
if (!Table1->Active) Table1->Active=true; TLocateOptions Options; /* TLocateOptions - это псевдоним (typedef) специального класса-шаблона Set, у которого есть операция "<<" (включить в экземпляр Set:) (в данном случае экземпляром является Options). Поэтому ниже Options добавляются режимы loPartialKey и loCaseInsensitive. Предварительно Options очищается */ Options.Clear(); Options << loPartialKey << loCaseInsensitive; /* поиск по частичному совпадению ключа, регистры символов не имеют значения. Edit2; Edit4 - это соответственно поля поиска по конъюнкции со значениями этих полей */
if (!Table1->Locate("EmployeeKod", Edit5->Text,Options)) // здесь указывается имя значения поля // ShowMessage("Не найдено поле с табельным номером" + Edit5->Text); else { Table1->Edit(); Table1->FieldByName("AmountDays")->AsFloat=StrToFloat(Edit6->Text); Table1->FieldByName("Salary")->AsFloat=Sal(Table1->FieldByName("OneDayRate")->AsFloat, Table1->FieldByName("Tax")->AsFloat, StrToFloat(Edit6->Text)); Table1->Post(); } } //---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender) { Table1->Open(); } //---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender) { Form1->Close; // ОШИБКА } //---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender) { /* Здесь не применяется метод EmptyTable(), т.к. он требует соблюдения довольно жестких условий и поэтому не всегда проходит */ if(!Table1->Active) Table1->Active=true; while(!Table1->Eof) Table1->Delete(); Table1->Close(); } //---------------------------------------------------------------------------
|
Списал с учебника. *dfm файла не было - компоненты на форме расположил по картинке.
Вопрос: - по какой причине возникает ошибка [BCC32 Error] Unit1.cpp(58): E2235 Member function must be called or its address taken? - как её устранить? |