Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Таблица как в Excel [Delphi, Windows]


Vedun ©   (2007-07-19 14:09:00) 

Можно ли сделать так, чтобы контрол mdwXLGrid при вводе в ячейки информации вел себя так, как таблица excel? Например, помешаем курсор в ячейку, начинаем вводить с клавиатуры число, ячейка переходит в режим ввода. Закончив ввод, нажимаем, например, стрелку 'вниз', курсор таблицы переходит в ячейку на 1 ряд ниже.
Можно ли такое реализовать? Если да, подскажите как.


Vedun   (2007-07-20 14:46:00) [1]

Понял. Спасибо.


mdw   (2007-07-20 11:23:00) [2]

Читайте документацию.

Editor.SelStart:= 1;


Vedun   (2007-07-19 22:58:00) [3]

Спасибо. Все хорошо, кроме одного.
После

procedure TMainForm.XLGridChar(Sender: PControl; var Key: KOLChar; Shift: Cardinal);
begin
  if Key in ['0'..'9'] then begin
    XLGrid.BeginEdit;
    Editor.Text:= Key;
  end;
end;

курсор ввода в Edit-е помещается в начало строчки, перед введенной цифрой, и дальше число вводится неправильно. Первая цифра оказывается последней.
Как перевести его в конец строки?


mdw   (2007-07-19 14:46:00) [4]

Можно.

> Например, помешаем курсор в ячейку, начинаем вводить с клавиатуры
> число, ячейка переходит в режим ввода.

Для грида определяем событие XLGrid.OnChar:= XLGridChar;
в нем проверяем символ, и если нужно переходим в режим редактирования

procedure TMainForm.XLGridChar(Sender: PControl; var Key: KOLChar; Shift: Cardinal);
begin
   if Key in ['0'..'9'] then begin
     XLGrid.BeginEdit;
     Editor.Text:= Key;
   end;
end;
Где Editor - редактор для грида (TEdibBox).


> Закончив ввод, нажимаем, например, стрелку 'вниз', курсор
> таблицы переходит в ячейку на 1 ряд ниже.


Для Editor определить OnKeyDown, примерно так:
procedure TMainForm.EditorKeyDown(Sender: PControl; var Key: Integer;
 Shift: Cardinal);
begin
   case Key of
     VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN: begin
       XLGrid.EndEdit(True);
       XLGrid.Perform(WM_KEYDOWN, Key, 0);
     end;
     VK_ESCAPE: XLGrid.EndEdit(False);
     VK_RETURN, VK_F2: XLGrid.EndEdit(True);
   end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо