![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
XLGrid: Редактирование. [Delphi, KOL, Windows]
серый мЫш © (2005-03-27 09:07:00)Что-то я никак не могу заставить таблицу редактироваться без дополнительных действий. Мне нужно, чтобы выделенная клетка после нажатия на бкву/цифру начинала редактироваться, но без F2/Enter/double-click нажатие на бкву/цифру не приносит никакого результата. Честно пытался разобраться в исходном коде контрола, но, видно, я пока птица не того полета... Есть надежда, что в скором времени такая функция появится, но я боюсь, что мне это понадобится еще раньше. Может кто уже сталкивался с этой проблемой и решил ее? Не поможете ли?
mdw (2005-04-18 11:16:00) [1]Кстати, как менять фокус, а то я уже замучился с ним, родимым.
Position:= MakePoint(Col, Row).
По поводу редактирования. Открываем KOLmdvXLGrid.pas и читаем, подробно описано.
серый мЫш (2005-04-16 22:21:00) [2]Кстати, как менять фокус, а то я уже замучился с ним, родимым. Position.X не редактируется, Selected тоже что-то не то...
серый мЫш (2005-04-16 22:11:00) [3]Кстати, как менять фокус, а то я уже замучился с ним, родимым. Position.X не редактируется, Selected тоже что-то не то...
серый мЫш (2005-03-27 20:21:00) [4]2 ECM
Спасибо, работает.
2 <Falcon>
Я примерно так и делаю, но проверку делаю не на окончание редактирования, а на его начало. У меня должны быть только цифровые значения в клетках, так чтобы потом проверку не делать, я лучше сейчас сделаю одним махом.
<Falcon> (2005-03-27 15:03:00) [5]Вот так навскидку:
procedure TForm1.Grid1KeyDown(Sender: PControl; var Key: Integer;
Shift: Cardinal);
begin
case KEY of
VK_RETURN:
Grid1.EndEdit(True,True);
VK_ESCAPE:
Grid1.EndEdit(False,True);
else
Grid1.BeginEdit;
end;
end;
procedure TForm1.Grid1BeginEdit(Sender: PControl; ACol, ARow: Integer;
var AShowControl, ATextControl: PControl; var AIndents: TRect);
begin
AShowControl:= EditBox1;
end;
Только при этом первый символ не будет вводиться. Поэтому его нужно либо вводить в эдит принудительно, типа:
Grid1.Cells[Grid1.Position.X,Grid1.Position.Y].Text:=Char(Key) и потом ставить курсор в нужную позицию, либо еще как, придумай.
Ну и если нужно, то туда же добавить смену фокуса по ячейкам по завершению редактирования содержимого ячейки.
ECM (2005-03-27 11:09:00) [6]Создай обработчик события OnKeyDown(Up) и в нем вызови BeginEdit
(cам не проверял - надо устанавливать mdvXLGrid).
Если не нужны все навороты XLGrid - попробуй EcmListEdit
http://kolibdb.100free.com/KOLEcmListEdit.zip(54kB)
там это уже заложено в компоненте (демо прилагается)