Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.07.17;
Скачать: [xml.tar.bz2];

Вниз

сделать активной ячейку 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
2-1301928036
novichek
2011-04-04 18:40
2011.07.17
ADO поле Int64


1-1258987492
Diplomat
2009-11-23 17:44
2011.07.17
Удалить сведения об ранее подключенных устройствах


4-1248840141
Armature_Current
2009-07-29 08:02
2011.07.17
Ошибка функции ReadFile при работе с COM-портом


2-1302510695
MAX
2011-04-11 12:31
2011.07.17
изменить структуру dbf


15-1301693932
Германн
2011-04-02 01:38
2011.07.17
ShowFocus у TButton в "Мастерах" ака Wizards





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский