Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249

Непонятно почему включается EditorMode у StringGrid?

16.09.2015, 15:41. Показов 1624. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу сделать для StringGrid возможность начала редактирования ячеек либо по двойному клику, либо по Enter. Завершение редактирования - выходом из редактируемой ячейки, либо нажатием Enter.

Начальные опции StringGrid:
goEditing = false
goAlwaysShowEditor = false

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm::StringGridSupportsDblClick(TObject *Sender)
{
    StringGrid->Options << goEditing << goAlwaysShowEditor;
    StringGrid->EditorMode = true;
}
void __fastcall TForm::StringGridSupportsKeyPress(TObject *Sender, System::WideChar &Key)
{
    if (Key == VK_RETURN)
    {
        if (StringGrid->EditorMode)
        {
            StringGrid->Options >> goEditing >> goAlwaysShowEditor;
            StringGrid->EditorMode = false;
        }
        else
        {
            StringGrid->Options << goEditing << goAlwaysShowEditor;
            StringGrid->EditorMode = true;
        }
    }
}
Если нажать клавишу Enter - включается режим редактирования. Повторное нажатие Enter - завершает редактирование. Проблема в том, что если нажать еще раз Enter - третий раз по счету - режим редактирования не включается. Пошаговая проверка показывает, что в обработчике OnKeyPress свойство грида EditorMode имеет значение true, хотя при втором нажатии Enter мы же установили его в false, завершив редактирование. Собственно далее режим редактирования по Enter не открывается, сколько бы раз я этот Enter не нажал. При этом по идее каждый раз я тем самым устанавливаю EditorMode в false, но тем не менее при пошаговой проверке оказывается, что EditorMode = true. Почему это происходит?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2015, 15:41
Ответы с готовыми решениями:

Тормозит пк, непонятно почему
1)intel core i5 4570 2)msi z87m gaming 3)8 gb (kingston) 4)msi gtx 970 4g gaming 5)wd black wd1003fzex 6)Блок питания THERMALTAKE...

Непонятно почему Яндекс не ...
неясно почему яндекс при добавлении сайта через адурелку пишет &lt;b&gt;Адрес ****.ru не был внесен в базу Яндекса, так как его индексация...

почему DBL_MIN=0? непонятно
хочу получить min значение типа double, но мне он почему-то выдает 0, хотя DBL_MAX работает хорошо. вот код #include&lt;float.h&gt; ...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
16.09.2015, 16:35
Чего ты привязался к EditorMode? Поменяй условие на
C++
1
if (StringGrid1->Options.Contains(goEditing))
1
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
16.09.2015, 17:09  [ТС]
Переделал код. Поставил изначально goAlwaysShowEditor = true.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm::StringGridSupportsDblClick(TObject *Sender)
{
    StringGrid->Options << goEditing;
    StringGrid->EditorMode = true;
}
void __fastcall TForm::StringGridSupportsKeyPress(TObject *Sender, System::WideChar &Key)
{
    if (Key == VK_RETURN)
    {
        if (StringGrid->Options.Contains(goEditing))
        {
            StringGrid->Options >> goEditing;
            StringGrid->EditorMode = false;
        }
        else
        {
            StringGrid->Options << goEditing;
            StringGrid->EditorMode = true;
        }
    }
}
Так все работает как надо. EditorMode используется для активации и деактивации режима редактирования. Как мне кажется это самый простой метод для этого? Или может быть есть специальная функция. Использовал раньше компоненты TMS, там у стринг грида за это отвечала логичная функция ShowInplaceEditor.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2015, 17:09
Помогаю со студенческими работами здесь

Непонятно почему не переваривает
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; main() {int K,M,N; int input; scanf(&quot;%d\n%d\n%d&quot;,&amp;K,&amp;M,&amp;N); ...

Проект непонятно почему устаревает
Пишу простенькие программки на C++ чтобы освоить язык. После того как написал код, нажимаю &quot;Компилировать&quot; (ctrl + F7), - в...

Непонятно, почему изменяется АЧХ
Если в схеме сопротивление R1 уменьшать, АЧХ в области высоких частот будет сдвигаться влево. Может кто объяснить почему так происходит?

Непонятно почему вылетает исключение
Клиент серверное приложение. Клиент непрерывно передаёт на сервер данные типа Bitmap. При передаче первого изображения всё работает, но...

Непонятно почему type mismatch
Кусок кода: 'Определяем значение последней активной чейки Dim iLastRowYou As Long iLastRowYou =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru