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

Вниз

сделать активной ячейку StringGrid   Найти похожие ветки 

 
Mishutka   (2011-04-06 17:43) [0]

Доброго дня!
Не обходимо сделать ячейку активной для записей.
Делаю следуюшее:
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-06 23:07) [1]


> сделать активной ячейку StringGrid

Grid.Row = xxx;
Grid.Col = yyy;


 
Германн ©   (2011-04-07 02:16) [2]

Спамить только не надо!

> Плохиш ©   (06.04.11 23:07) [1]
>
>

Автору не это нужно.
Хотя что автору нужно я может и не понимаю.
Но "интуитивно" я понимаю. Требуется вызвать InplaceEditor без реального нажатия на кнопку мышки.


 
Mishutka   (2011-04-07 09:10) [3]


> Германн ©   (07.04.11 02:16) [2]


Вот вот...


 
Плохиш ©   (2011-04-07 10:02) [4]


> Автору не это нужно.

Судя по степени коверкования русского языка, автору дешевле нанять программиста и переводчика.


 
sniknik ©   (2011-04-07 10:05) [5]

> Требуется вызвать InplaceEditor без реального нажатия на кнопку мышки.
у стринггдида он всегда "вызван", если разрешено редактирование. (не нужно ентер жать как в дбгриде), т.что вряд ли, хотя автор и соглашается.

> и если каретка находится в другой ячейке то код не работает
т.е. как? если например в ячейке 1:1 жмешь на буквы и он их пропускает, а если в 4:1 то нет? так? что значит в другой? если обработчик не на ячейку, а на весь компонент... ему пофигу какая ячейка.


 
Mishutka   (2011-04-07 11:47) [6]


> у стринггдида он всегда "вызван", если разрешено редактирование.
>  (не нужно ентер жать как в дбгриде), т.что вряд ли, хотя
> автор и соглашается.


В принципе уменя он разрешен только для отдельной колонки но пусть даже если он будет разрешен для всех проблема не в этом


> т.е. как? если например в ячейке 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


 
Mishutka   (2011-04-07 11:48) [7]


> If (key<>#8)  then if not(Key in ["0".."9", DecimalSeparator])
> then Key := #0;  


Оно ему мешает


 
Германн ©   (2011-04-07 12:58) [8]


> sniknik ©   (07.04.11 10:05) [5]
>
> > Требуется вызвать InplaceEditor без реального нажатия
> на кнопку мышки.
> у стринггдида он всегда "вызван", если разрешено редактирование.
>

Да точно. Значит требуется выйти из InplaceEditorа без реального нажатия на кнопку мышки.


 
Германн ©   (2011-04-07 13:06) [9]


> требуется выйти из InplaceEditorа без реального нажатия
> на кнопку мышки.
>

Хм. Тоже очень просто. Надо бредовый код
StringGrid1.Selection := TGridRect(rect(4, 1, 4, 1));

Заменить на нормальный
 StringGrid1.Row:=1;
 StringGrid1.Col:=4;


 
oldman ©   (2011-04-07 13:34) [10]

Удалено модератором


 
Плохиш ©   (2011-04-07 13:40) [11]


> Германн ©   (07.04.11 13:06) [9]
>
> Заменить на нормальный
>  StringGrid1.Row:=1;
>  StringGrid1.Col:=4;

А кто это утверждал, что не это автору нужно? :o)


 
Mishutka   (2011-04-07 14:08) [12]


> Германн ©   (07.04.11 13:06) [9]


Ухты! так же работает. а я из за поста 2 проверять не стал...


 
sniknik ©   (2011-04-07 14:25) [13]

> Надо бредовый код
это не бредовый, просто не то..., это выделение участка, по случаю и "курсор" переставляет.

> А кто это утверждал, что не это автору нужно? :o)
не будем показывать пальцем но это был бегемотик... :)  © мультфильм какой то.


 
Германн ©   (2011-04-07 20:55) [14]

Удалено модератором


 
Германн ©   (2011-04-08 03:23) [15]

Удалено модератором


 
Германн ©   (2011-04-08 03:37) [16]

Удалено модератором


 
Плохиш ©   (2011-04-08 09:53) [17]

Удалено модератором



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

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

Наверх




Память: 0.51 MB
Время: 0.009 c
15-1301662532
DVM
2011-04-01 16:55
2011.07.17
Ограничение на число подключений не серверных ОС Windows


15-1301380921
RGV
2011-03-29 10:42
2011.07.17
Скайп


1-1259225003
Циркуль
2009-11-26 11:43
2011.07.17
Непредсказуемый порядок обхода контролов


15-1301662418
Baks
2011-04-01 16:53
2011.07.17
Как лучше записать несколько TBitmap в один файл


13-1126787622
MeF Dei Corvi
2005-09-15 16:33
2011.07.17
Порядок создания статических классов