Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Переход через поле в DBGrid   Найти похожие ветки 

 
kyn66 ©   (2006-03-22 10:07) [0]

При переходе в TEDit использую:

procedure TReestrFrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if Key = #13 then
  begin
    SelectNext(Sender as TWinControl, True, True );
    Key := #0;
  end;
end;


По такому принципу мне нужно сделать переходы по полям Grid-а. Делаю так :


procedure TReestrFrm.Rep01DBGridKeyPress(Sender: TObject;
 var Key: Char);
begin
 if Key = #13 then
  try
    if Grid.Columns.Grid.SelectedIndex < Grid.Columns.Count - 1 then
     Grid.Columns[Grid.Columns.grid.SelectedIndex + 1].Field.FocusControl
    else
     begin
       Tab.Next;
        Grid.Columns[0].field.FocusControl
     end;
  finally
    Key := #0;
  end;
end;


Однако ситуация такая, что в гриде 9 столбцов. И по порядку они идут как 1-количество, 2-сумма, 3-доход и т.д. Та вот, поле доход у меня автовычисляемое и имеет атрибут Readonly. Т.е. мне нужно, чтобы по нажатии Enter поля доходов пропускакивали. Ведь здесь я не могу указать TAborder := 0;


 
clickmaker ©   (2006-03-22 10:35) [1]


> пропускакивали

забавное словцо.
Проверяй поле на ридонли. Если оно, индекс увеличивай не на 1, а на 2


 
kyn66 ©   (2006-03-22 10:39) [2]

> clickmaker 8-)))
Я так и начал делать, но совсем запутался. Ведь там у меня ешшо идет проверка на последний столбец, если последний, то переходить на первый в следующей строке. А вот это последний как раз и есть "доходный".

procedure TReestrFrm.Rep01DBGridKeyPress(Sender: TObject;
 var Key: Char);
begin
 if Key = #13 then
  try
    if (Grid.Columns.Grid.SelectedIndex < Grid.Columns.Count - 1) and
       (Grid.Columns.Grid.Fields[Grid.SelectedIndex + 1] <> nil) then
     begin
       if (not Grid.Columns.Grid.Fields[Grid.SelectedIndex + 1].ReadOnly) and
          (Grid.Columns.Grid.Fields[Grid.SelectedIndex + 2] <> nil) then
        Grid.Columns[Grid.Columns.grid.SelectedIndex + 1].Field.FocusControl
       else
        Grid.Columns[Grid.Columns.grid.SelectedIndex + 2].Field.FocusControl
     end
    else
     begin
       Tab.Next;
        Grid.Columns[0].field.FocusControl
     end;
  finally
    Key := #0;
  end;
end;


 
Плохиш ©   (2006-03-22 11:01) [3]


procedure TReestrFrm.Rep01DBGridKeyPress(Sender: TObject;
var Key: Char);
var
    idxNew: Integer;
begin
if Key = #13 then
 try
   idxNew := Grid.SelectedIndex;
   repeat
      Inc(idxNew);
      if idxNew = Grid.FieldCount then
      begin
        idxNew:=0;
        tab.Next;
      end;
   until (not Grid.Fields[idxNew].ReadOnly) or
          (tab.eof and idxNew = (Grid.FieldCount-1));
   Grid.SelectedIndex := idxNew;
 finally
   Key := #0;
 end;
end;


 
kyn66 ©   (2006-03-22 12:05) [4]

>Плохиш
Не верно работает. Сделал вот так, но код какойто ........ый 8-(

 if Key = #13 then
  try
    if (Grid.Columns.Grid.SelectedIndex < Grid.Columns.Count - 1) then
     begin
       if (not Grid.Columns.Grid.Fields[Grid.SelectedIndex + 1].ReadOnly) then
        begin
          Grid.Columns[Grid.Columns.grid.SelectedIndex + 1].Field.FocusControl;
        end
       else
        begin
          if (Grid.Columns.Grid.Fields[Grid.SelectedIndex + 2] <> nil) then
           begin
             Grid.Columns[Grid.Columns.grid.SelectedIndex + 2].Field.FocusControl;
           end
          else
           begin
             Tab.Next;
              Grid.Columns[0].field.FocusControl
           end;
        end;
     end
    else
     begin
       Tab.Next;
        Grid.Columns[0].field.FocusControl
     end;
  finally
    Key := #0;
  end;


 
Плохиш ©   (2006-03-22 12:13) [5]


> kyn66 ©   (22.03.06 12:05) [4]
> >Плохиш
> Не верно работает.

И в чём "неверность" заключается?


 
kyn66 ©   (2006-03-22 13:23) [6]

>>Плохиш
"Доходные столбцы" не проскакивают, идут все подряд. Вот рабочий вариант, тока повторения имеются, ч хотел как-нить без них

 if Key = #13 then
  try
    if (Grid.Columns.Grid.SelectedIndex < Grid.Columns.Count - 1) then
     begin
       if (not Grid.Columns.Grid.Fields[Grid.SelectedIndex + 1].ReadOnly) then
        Grid.Columns[Grid.Columns.grid.SelectedIndex + 1].Field.FocusControl
       else
        if (Grid.Columns.Grid.Fields[Grid.SelectedIndex + 2] <> nil) then
         Grid.Columns[Grid.Columns.grid.SelectedIndex + 2].Field.FocusControl
        else
          begin
            Tab.Next;
            Grid.Columns[IIF(RepKod in RupsSet, 0, 1)].field.FocusControl
          end;
     end
    else
     begin
       Tab.Next;
       Grid.Columns[IIF(RepKod in RupsSet, 0, 1)].field.FocusControl
     end;
  finally
    Key := #0;
  end;



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
2-1145691993
News
2006-04-22 11:46
2006.05.14
параметры ОЗУ


15-1145426710
Chaser
2006-04-19 10:05
2006.05.14
INI файлы и учетные записи


15-1145442317
DelphiN!
2006-04-19 14:25
2006.05.14
Как перейти по ссылке на JScript


15-1145342859
Жека из Харькова
2006-04-18 10:47
2006.05.14
ПОМОГИТЕ ПОЖАЛУЙСТА!!!


1-1144319180
sally
2006-04-06 14:26
2006.05.14
TThread и "пожирание" процессорного времени