Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

StringGrid.Как запретить в определенной ячейке вводить символы, кроме 0,1...9?

4.8K
28 октября 2007 года
anty
89 / / 29.10.2006
Подскажите как в StringGrid`e сделать так, чтобы, например, в 1-м столбце можно было вводить только символы от 0 до 9, а во втором любые?
И еще хочу найти сумму по 5 столбу, и вывести во 2-ю таблицу, пишу

 
Код:
int sum=0;
for(i=1;i<StringGrid1->RowCount-1;i++)
 sum+=StrToInt(StringGrid1->Cells[4]);

StringGrid2->Cells[1][1]=sum;

Счетает не правельно, точней не суммирует последню строку, а если написать цикл вот так:

 
Код:
for(i=1;i<StringGrid1->RowCount;i++)
или так
for(i=1;i<=StringGrid1->RowCount-1;i++)

то выдает ошибку, в чем дело? =\
3.2K
29 октября 2007 года
nikipelovav
152 / / 12.04.2006
Имея размер цикла N всегда пиши for ( i=0; i<N; 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";
}
4.8K
30 октября 2007 года
anty
89 / / 29.10.2006
еще проблема:
Код:
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]);
}


Когда так то в столбцы с именем Цена и Кол-во вводятся тока цифры, что и нужно было.Но теперь пытаясь перемножить их, не перемножает, ошибка. Почему?
3.2K
30 октября 2007 года
nikipelovav
152 / / 12.04.2006
Ради эксперемента в методе StringGrid1SetEditText отобрази
с помощью ShowMessage содержимое ячеек и определись
с причиной ошибки: преобразование в число или модификация
[4-й] ячейки в момент модификации [2/3-й].
11K
29 августа 2008 года
zbestr
40 / / 07.04.2006
Вешаешь StringGrid`y на
Цитата:

KeyPress(TObject *Sender, char &Key)
{
bool Number = isdigit(Key)||;
if ( Number == false )
{
Key = 0;
};
}


(Key == '\b') - разрешает использовать BackSpace

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог