Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение содержимого ячейки (TStringGrid), C++Builder 
:(
    Опции темы
pat
Дата 22.9.2003, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.9.2003

Репутация: нет
Всего: нет



Представьте себе TStringGrid с именем SG1 и свойствами goEditing и goAlwaysShowEditor равными true, а goRangeSelect = false. Таблица изначально содержит значения. 1 редактируемый столбец. Попробуйте нажать кнопку вниз, тогда у вас курсор перейдет на ячейку ниже и содержимое ячейки выделится. Необходимо делать тоже, но не по нажатию VK_DOWN, а по энтеру.
Вот как делаю сейчас, но не работает:
Код
if(Key==VK_RETURN)
{
if(SG1->Row != SG1->RowCount-1)
{
SG1->Row++;
SendMessage(SG1->Handle, WM_KEYDOWN, VK_HOME, 0);
SendMessage(SG1->Handle, WM_KEYUP, VK_HOME, 0);
SendMessage(SG1->Handle, WM_KEYDOWN, VK_SHIFT, 0);
SendMessage(SG1->Handle, WM_KEYDOWN, VK_END, 0);
SendMessage(SG1->Handle, WM_KEYUP, VK_END, 0);
SendMessage(SG1->Handle, WM_KEYUP, VK_SHIFT, 0);
}
}


Это сообщение отредактировал(а) pat - 22.9.2003, 08:43
PM MAIL   Вверх
gray_k
Дата 22.9.2003, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: нет
Всего: 22



Ну во-первых с такими настройками в гриде не происходит вделение. Для того, чтобы происходило выделение ячейки свойство goAlwaysShowEditor должно быть false.
А для того, чтобы по интеру перемещаться вниз надо в OnKeyDown прописать следующее:
Код

   if(VK_RETURN == Key)
   {
       TGridRect myRect;
       myRect.Left = SG->Selection.Left;
       myRect.Top = SG->Selection.Top+1;
       myRect.Right = SG->Selection.Right;
       myRect.Bottom = SG->Selection.Bottom+1;
       SG->Selection = myRect;
       SG->EditorMode = true;
   }

Ограничение на максимальное количесто строк наложить не забудь.
Да и ещё. Конечно знание API-функций вещь хорошая и даже нужная, но если уж программируешь на Билдере, то ИМХО лучше пользоваться стандартными свойствами компонентов. Будет меньше глюков. Это одновременно и сила и недостаток Билдера. Хотя использовать API тоже частенько приходится, но это уже другой вопрос.



--------------------
С уважением.
Gray.
PM MAIL   Вверх
gray_k
Дата 22.9.2003, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: нет
Всего: 22



А первый код вообще непонятен. Если ты хотел проэмулировать по интеру нажатие стрелки вниз, то необходимо было написать
Код
SendMessage(SG->Handle, WM_KEYDOWN, VK_DOWN, 0);
       SendMessage(SG->Handle, WM_KEYUP, VK_DOWN, 0);

А потом ещё в OnKeyPress прописать
Код
   if(13 == Key)
       Key = 0;



--------------------
С уважением.
Gray.
PM MAIL   Вверх
pat
Дата 22.9.2003, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.9.2003

Репутация: нет
Всего: нет



Я балда. На мой вопрос ты мне, к сожалению, не ответил, но натолкнул на верную мысль. Спасибо.

P.S. Если интересно, то в первом коде я просто пытался имитировать нажатие VK_HOME, потом зажатие VK_SHIFT, нажатие VK_END и отпускание VK_SHIFT.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0866 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.