int sum=0;
for(i=1;i<StringGrid1->RowCount-1;i++)
sum+=StrToInt(StringGrid1->Cells[4]);
StringGrid2->Cells[1][1]=sum;
StringGrid.Как запретить в определенной ячейке вводить символы, кроме 0,1...9?
И еще хочу найти сумму по 5 столбу, и вывести во 2-ю таблицу, пишу
Код:
Счетает не правельно, точней не суммирует последню строку, а если написать цикл вот так:
Код:
for(i=1;i<StringGrid1->RowCount;i++)
или так
for(i=1;i<=StringGrid1->RowCount-1;i++)
или так
for(i=1;i<=StringGrid1->RowCount-1;i++)
то выдает ошибку, в чем дело? =\
А если индексы в перебираемых массивах не используют 0,
тогда пиши что-то вроде Cells[i+1].
По поводу ввода чисел - ЧИТАЙ СПРАВКУ! ;)
Код:
Write an OnGetEditMask event handler to provide the in-place editor
with an edit mask that describes the valid input strings a user can
type into a cell. Set the Value parameter to the string that describes
the edit mask for the cell specified by the ACol and ARow parameters.
If the cell does not have an edit mask, set the Value parameter to an empty string.
This example specifies an edit mask in a string grid to limit the cells
that contain telephone numbers, as indicated by a label cell in the first row:
void __fastcall TForm1::StringGrid1GetEditMask(TObject *Sender, long ACol, long ARow, AnsiString &Value)
{
if (StringGrid1->Cells[ACol, 0] == "Phone Number")
Value = "!\(999\)000-0000;1";
}
with an edit mask that describes the valid input strings a user can
type into a cell. Set the Value parameter to the string that describes
the edit mask for the cell specified by the ACol and ARow parameters.
If the cell does not have an edit mask, set the Value parameter to an empty string.
This example specifies an edit mask in a string grid to limit the cells
that contain telephone numbers, as indicated by a label cell in the first row:
void __fastcall TForm1::StringGrid1GetEditMask(TObject *Sender, long ACol, long ARow, AnsiString &Value)
{
if (StringGrid1->Cells[ACol, 0] == "Phone Number")
Value = "!\(999\)000-0000;1";
}
Код:
void __fastcall TForm1::StringGrid1GetEditMask(TObject *Sender, long ACol, long ARow, AnsiString &Value)
{
if (StringGrid1->Cells[ACol][0] == "Цена" || StringGrid1->Cells[ACol][0] == "Кол-во" )
Value = "000000";
}
void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol,
int ARow, const AnsiString Value)
{
int sum=0;
if(StringGrid1->Cells[2][ARow]!="" && StringGrid1->Cells[3][ARow]!="" )
{StringGrid1->Cells[4][ARow]=StrToInt(StringGrid1->Cells[3][ARow])*StrToInt(StringGrid1->Cells[2][ARow]);
}
{
if (StringGrid1->Cells[ACol][0] == "Цена" || StringGrid1->Cells[ACol][0] == "Кол-во" )
Value = "000000";
}
void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol,
int ARow, const AnsiString Value)
{
int sum=0;
if(StringGrid1->Cells[2][ARow]!="" && StringGrid1->Cells[3][ARow]!="" )
{StringGrid1->Cells[4][ARow]=StrToInt(StringGrid1->Cells[3][ARow])*StrToInt(StringGrid1->Cells[2][ARow]);
}
Когда так то в столбцы с именем Цена и Кол-во вводятся тока цифры, что и нужно было.Но теперь пытаясь перемножить их, не перемножает, ошибка. Почему?
с помощью ShowMessage содержимое ячеек и определись
с причиной ошибки: преобразование в число или модификация
[4-й] ячейки в момент модификации [2/3-й].
Цитата:
KeyPress(TObject *Sender, char &Key)
{
bool Number = isdigit(Key)||;
if ( Number == false )
{
Key = 0;
};
}
(Key == '\b') - разрешает использовать BackSpace