![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Таблица как в 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;