Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TStringGrid 
:(
    Опции темы
numega
Дата 30.9.2005, 11:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











как можно сделать обработчик события по двойному щелчку мыши на на первом столбце
и чтоб в обработчик передавалось номер строки
  Вверх
BreakPointMAN
Дата 30.9.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я бы сделал как-нибудь так:
в обработчик события OnMouseUp StringGrid'а поместил бы что-то типа следующего кода:
Код

   //    Сохраним в свойстве Tag компонента StringGrid
   // координаты курсора мыши на момент отпускания
   // кнопки мыши

   StringGrid1->Tag=X+(Y<<16);

а в обработчик OnDblClick что-то типа следующего кода:
Код

   //    Восстановим координаты курсора мыши на момент
   // отпускания кнопки из свойства Tag компонента
   // StringGrid во временные переменные X и Y
   int Y=StringGrid1->Tag>>16;
   int X=StringGrid1->Tag & 0xFFFF;
   //    Узнаем, над какой именно ячейкой StringGrid'а
   // находится точка с координтами X и Y
   int ACol, ARow;
   StringGrid1->MouseToCell(X,Y,ACol,ARow);

   ShowMessage("ACol == "+IntToStr(ACol)+", ARow =="+IntToStr(ARow));

Наверняка можно как-то проще узнать координаты курсора мыши, но что-то на ум пока ничего другого не приходит... %)

Еще, как вариант, - использовать свойства StringGrid'а момента времени исполнения Col и Row - они возвращают текущий номер столбца и строки, а при двойном щелчке так или иначе то, на чем щелкнули, должно стать текущим... ...но! это не сработает для фиксированных строк и столбцов, они текущими не станут, и значения Col и Row при двойном щелчке на них останутся теми же...




--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
BreakPointMAN
Дата 4.10.2005, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



угу... век живи - век учись... smile
в обработчике OnMouseUp StringGrid'а можно вообще ничего не писать, а обработчик OnDblClick сделать таким:
Код

void __fastcall TForm1::StringGrid1DblClick(TObject *Sender)
{
   TPoint M=StringGrid1->ScreenToClient(Mouse->CursorPos);
   int ACol, ARow;
   StringGrid1->MouseToCell(M.x,M.y,ACol,ARow);

   ShowMessage("ACol == "+IntToStr(ACol)+", ARow =="+IntToStr(ARow));
}


Это сообщение отредактировал(а) BreakPointMAN - 4.10.2005, 23:05


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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