IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> StringGrid, обработка компонента
Tan
сообщение 10.11.2007 16:05
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Всем приветы! У меня следующая ситуация, есть 3 столбика (но работа происходит с 2мя первыми) и сколько - то строк в компоненте stringgrid. В главной программе есть параметр, от которого зависит какие значения можно вводить в ячейки стрингрида. Допустим, этот параметр amount. Итак, возможны 2 ветки : 1) 0 < amount <= 9 - значит в ячейку стрингрида можно вводить только цифры от 1 до 9. 2) 10<=amount <=15 - значит в ячейку можно вводить как цифры от 1 до 9, так и числа от 10 до 15. На OnKeyPress я отлавливаю введённые пользователем цифры. А на OnSetEditText я пытаюсь выполнить большую часть описанного, но неособо выходит : вот этой процедурой обрабатывается событие OnSetEditText

procedure TExecute.SDAS(Sender: TObject; ACol, ARow: Integer; const Value: String);
 begin
           case execute.StringGrid2.Col of //работаем с 2мя первыми столбиками
                  0..1 :
                 case (amount) of
                          1..9 : If ( Length(Value) > 1 ) then StringGrid2.Cells[ACol, ARow] := Value[1]; \\1 ветка
                          10..15 : If ( Length(Value) > 2 ) then                                                             \\2 ветка
                     begin
                       if StrToInt (Value[1]) = 1 then
                          if value[2] In ['1','2','3','4','5'] then
                             StringGrid2.Cells[ACol, ARow] := Value[1] + Value[2] else
                                                          StringGrid2.Cells[ACol, ARow] := Value[1];


                     end;
                 end;
             end;
 end;

Помогите пожалуйста добить это дело.

Сообщение отредактировано: Tan - 10.11.2007 16:06


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Tan
сообщение 10.11.2007 19:19
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Вот я уже продвинулся, но ещё что - то не так, возможно вы заметите, что именно :
procedure TExecute.SDAS(Sender: TObject; ACol, ARow: Integer; const Value: String);
 begin
           case execute.StringGrid2.Col of
                  0..1 :
                         case (amount) of
                               1..9 :    If ( Length(Value) = 1 ) then StringGrid2.Cells[ACol, ARow] := Value[1];
                           10..15 :                                                                             
                                         If ( Length(Value) >= 2 ) then
                                           begin
                                            If ( ( StrToInt (value[1]) = 1 ) and ( ( StrToInt(Value[2] ) ) <= ( amount mod 10 ) ) )
                                                 Then  StringGrid2.Cells[ACol, ARow] := Value[2]
                                                   Else StringGrid2.Cells[ACol, ARow] := Value[1];

                                            end;

                        end;

             end;
 end;

procedure TExecute.FormKeyPress(Sender: TObject; var Key: Char);   //Correct
  begin
    case execute.StringGrid2.Col of
     0..1 :
              case (amount) of
                1..9 : If Not ( Key In ['0'.. chr(ord('0') + amount) ] ) then Key := #0;
              10..15 : If Not ( Key In ['0'.. '9'] ) then Key := #0;
           end;
    end;
  end;


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 28.07.2025 5:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"