![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сделать активной ячейку StringGrid [D7, XP]
Mishutka © (2011-04-06 17:43:00)Доброго дня!
Не обходимо сделать ячейку активной для записей.
Делаю следуюшее:
StringGrid1.Options:=StringGrid1.Options+[goEditing];
StringGrid1.Selection := TGridRect(rect(4, x, 4, x));
StringGrid1.SetFocus;
Проблема в том что вводить можно только цыфры (минуя проверку «бакспейса») procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
If (key<>#8) then
if not(Key in ['0'..'9', DecimalSeparator]) then Key := #0;
end;
и если каретка находится в другой ячейке то код не работает
Решил проверку крывым но достаточно эффективным методом меняя фокусы:
Edit1.SetFocus;
StringGrid1.Options:=StringGrid1.Options+[goEditing];
StringGrid1.Selection := TGridRect(rect(4, 1, 4, 1));
StringGrid1.SetFocus;
Есть ли более правильный метод решения данной проблемы?
Плохиш (2011-04-08 09:53:00) [1]Удалено модератором
Германн (2011-04-08 03:37:00) [2]Удалено модератором
Германн (2011-04-08 03:23:00) [3]Удалено модератором
Германн (2011-04-07 20:55:00) [4]Удалено модератором
sniknik (2011-04-07 14:25:00) [5]> Надо бредовый код
это не бредовый, просто не то..., это выделение участка, по случаю и "курсор" переставляет.
> А кто это утверждал, что не это автору нужно? :o)
не будем показывать пальцем но это был бегемотик... :) © мультфильм какой то.
Mishutka (2011-04-07 14:08:00) [6]
> Германн © (07.04.11 13:06) [9]
Ухты! так же работает. а я из за поста 2 проверять не стал...
Плохиш (2011-04-07 13:40:00) [7]
> Германн © (07.04.11 13:06) [9]
>
> Заменить на нормальный
> StringGrid1.Row:=1;
> StringGrid1.Col:=4;
А кто это утверждал, что не это автору нужно? :o)
oldman (2011-04-07 13:34:00) [8]Удалено модератором
Германн (2011-04-07 13:06:00) [9]
> требуется выйти из InplaceEditorа без реального нажатия
> на кнопку мышки.
>
Хм. Тоже очень просто. Надо бредовый код
StringGrid1.Selection := TGridRect(rect(4, 1, 4, 1));
Заменить на нормальный
StringGrid1.Row:=1;
StringGrid1.Col:=4;
Германн (2011-04-07 12:58:00) [10]
> sniknik © (07.04.11 10:05) [5]
>
> > Требуется вызвать InplaceEditor без реального нажатия
> на кнопку мышки.
> у стринггдида он всегда "вызван", если разрешено редактирование.
>
Да точно. Значит требуется выйти из InplaceEditorа без реального нажатия на кнопку мышки.
Mishutka (2011-04-07 11:48:00) [11]
> If (key<>#8) then if not(Key in ['0'..'9', DecimalSeparator])
> then Key := #0;
Оно ему мешает
Mishutka (2011-04-07 11:47:00) [12]
> у стринггдида он всегда "вызван", если разрешено редактирование.
> (не нужно ентер жать как в дбгриде), т.что вряд ли, хотя
> автор и соглашается.
В принципе уменя он разрешен только для отдельной колонки но пусть даже если он будет разрешен для всех проблема не в этом
> т.е. как? если например в ячейке 1:1 жмешь на буквы и он
> их пропускает, а если в 4:1 то нет? так? что значит в другой?
> если обработчик не на ячейку, а на весь компонент... ему
> пофигу какая ячейка.
т.е. если например в ячейке 1:1 установить курсор а затем запустить код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
// StringGrid1.Options:=StringGrid1.Options+[goEditing];
StringGrid1.Selection := TGridRect(rect(4, 1, 4, 1));
StringGrid1.SetFocus;
end;
при том что у onkeypress StringGrid’а выполняется:
If (key<>#8) then
if not(Key in ['0'..'9', DecimalSeparator]) then Key := #0;
то курсор как мигал так и мигает в ячейке 1:1
sniknik (2011-04-07 10:05:00) [13]> Требуется вызвать InplaceEditor без реального нажатия на кнопку мышки.
у стринггдида он всегда "вызван", если разрешено редактирование. (не нужно ентер жать как в дбгриде), т.что вряд ли, хотя автор и соглашается.
> и если каретка находится в другой ячейке то код не работает
т.е. как? если например в ячейке 1:1 жмешь на буквы и он их пропускает, а если в 4:1 то нет? так? что значит в другой? если обработчик не на ячейку, а на весь компонент... ему пофигу какая ячейка.
Плохиш (2011-04-07 10:02:00) [14]
> Автору не это нужно.
Судя по степени коверкования русского языка, автору дешевле нанять программиста и переводчика.
Mishutka (2011-04-07 09:10:00) [15]
> Германн © (07.04.11 02:16) [2]
Вот вот...
Германн (2011-04-07 02:16:00) [16]Спамить только не надо!
> Плохиш © (06.04.11 23:07) [1]
>
>
Автору не это нужно.
Хотя что автору нужно я может и не понимаю.
Но "интуитивно" я понимаю. Требуется вызвать InplaceEditor без реального нажатия на кнопку мышки.
Плохиш (2011-04-06 23:07:00) [17]
> сделать активной ячейку StringGrid
Grid.Row = xxx;
Grid.Col = yyy;