Void __fastcall tMainForm::buSelectClick(tObject *Sender)
{
StringGrid1->RowCount=2;
StringGrid1->ColCount=9;
StringGrid1->Cells[0][0]="Фирма поставщика";
StringGrid1->Cells[1][0]="Фирма потребителя";
StringGrid1->Cells[2][0]="Товарный кредит";
StringGrid1->Cells[3][0]="Наименование товара";
StringGrid1->Cells[4][0]="Кол-во ед товара";
StringGrid1->Cells[5][0]="Вес ед товара";
StringGrid1->Cells[6][0]="Цена ед товара";
StringGrid1->Cells[7][0]="Платежные реквизиты";
StringGrid1->Cells[8][0]="Дата отгрузки";
Select();
}
Выделите мышкой кнопку «Первая», перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::buFirstClick(TObject *Sender)
{
MyODBC->SetCur(MyODBC->SqlExecRetS(hDbc,hStmt,"FETCH first from mycursor",Memo1,StringGrid1),StringGrid1);
}
Выделите мышкой кнопку «Предыдущая», перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::buPriorClick(TObject *Sender)
{
MyODBC->SetCur(MyODBC->SqlExecRetS(hDbc,hStmt,"FETCH prior from mycursor",Memo1,StringGrid1),StringGrid1);
}
Выделите мышкой кнопку «Следующая», перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::buNextClick(TObject *Sender)
{
MyODBC->SetCur(MyODBC->SqlExecRetS(hDbc,hStmt,"FETCH next from mycursor",Memo1,StringGrid1),StringGrid1);
}
Выделите мышкой кнопку «Последняя», перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::buLastClick(TObject *Sender)
{
MyODBC->SetCur(MyODBC->SqlExecRetS(hDbc,hStmt,"FETCH last from mycursor",Memo1,StringGrid1),StringGrid1);
}
Выделите мышкой компонент StringGrid1, перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnDblClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::StringGrid1DblClick(TObject *Sender)
{
TGridOptions go = StringGrid1->Options;
go >> goRowSelect;
StringGrid1->Options = go;
}
При двойном щелчке мыши на строке мы свойству goRowSelect присваеваем значение false для того, чтобы вся строка целиком больше не могла выделяться, а только одна ячейка, когда пользователь наводит на нее курсор. Это необходимо тогда, когда нужно изменить значение какой-либо ячейки.
Выделите мышкой компонент StringGrid1, перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnSelectCell. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
SelectedStroka=ARow;
}
При помощи этого события мы определяем, какая строка выделена в данный момент и присваиваем ее номер переменной SelectedStroka.
Добавим в класс TMainForm новый метод. Для этого выделяем класс TMainForm, нажимаем правой кнопкой мыши и в появившимся меню выбираем New Method …
Далее заполняем появившееся окно в соответствии с рисунком:
В редакторе кода напишем содержание функции:
void TMainForm::SetStrGr(TStringGrid * StringGrid)
{
TGridOptions go;
go << goFixedVertLine;
go << goFixedHorzLine;
go << goHorzLine;
go << goVertLine;
go << goRangeSelect;
go << goRowSizing;
go << goColSizing;
go << goEditing;
go << goRowSelect;
StringGrid->Options = go;
}
Эта функция нужна для того, чтобы вернуть String Gridu возможность выделения всей строки, когда пользователь наводит на нее курсор.
Выделите мышкой кнопку «Удалить», перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::buDeleteClick(TObject *Sender)
{
MyODBC->SqlExecutePrepare(hDbc,hStmt,"DELETE FROM postov WHERE p_name_firmy_postavchika='"+StringGrid1->Cells[0][SelectedStroka]+"' and p_name_firmy_potrebitelya='"+StringGrid1->Cells[1][SelectedStroka]+"'",Memo1);
Select();
}
Выделите мышкой кнопку «Модифицировать», перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::buUpdateClick(TObject *Sender)
{
SetStrGr(StringGrid1);
MyODBC->SqlExecutePrepare(hDbc,hStmt,"UPDATE postov set p_name_firmy_postavchika='"+StringGrid1->Cells[0][SelectedStroka]+"',p_name_firmy_potrebitelya='"+StringGrid1->Cells[1][SelectedStroka]+"',p_tovarniy_kredit="+StringGrid1->Cells[2][SelectedStroka]+",p_name_tovara='"+StringGrid1->Cells[3][SelectedStroka]+"',p_kol_vo_ed_tovara="+StringGrid1->Cells[4][SelectedStroka]+",p_ves_ed_tovara="+StringGrid1->Cells[5][SelectedStroka]+",p_cena_ed_tovara="+StringGrid1->Cells[6][SelectedStroka]+",p_plategnye_rekvizity='"+StringGrid1->Cells[7][SelectedStroka]+"',p_data_otgruzky='"+StringGrid1->Cells[8][SelectedStroka]+"' WHERE p_name_firmy_postavchika='"+StringGrid1->Cells[0][SelectedStroka]+"' and p_name_firmy_potrebitelya='"+StringGrid1->Cells[1][SelectedStroka]+"'",Memo1);
Select();
}
Выделите мышкой кнопку «Добавить», перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::buAddClick(TObject *Sender)
{
StringGrid1->RowCount++;
}
Выделите мышкой кнопку «Вставить», перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnClick. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
void __fastcall TMainForm::buInsertClick(TObject *Sender)
{
SetStrGr(StringGrid1);
MyODBC->SqlExecutePrepare(hDbc,hStmt,"INSERT INTO postov (p_name_firmy_postavchika,p_name_firmy_potrebitelya, p_tovarniy_kredit,p_name_tovara,p_kol_vo_ed_tovara,p_ves_ed_tovara,p_cena_ed_tovara, p_plategnye_rekvizity,p_data_otgruzky) VALUES('"+StringGrid1->Cells[0][SelectedStroka]+"','"+StringGrid1->Cells[1][SelectedStroka]+"',"+StringGrid1->Cells[2][SelectedStroka]+",'"+StringGrid1->Cells[3][SelectedStroka]+"',"+StringGrid1->Cells[4][SelectedStroka]+","+StringGrid1->Cells[5][SelectedStroka]+","+StringGrid1->Cells[6][SelectedStroka]+",'"+StringGrid1->Cells[7][SelectedStroka]+"','"+StringGrid1->Cells[8][SelectedStroka]+"')",Memo1);
Select();
}
Выделите мышкой главную форму, перейдите на страничку Events инспектора объектов и дважды щелкните по событию OnCreate. В редакторе кода откроется пустой обработчик этого события, в который необходимо ввести операторы:
