Дабл клик на строке StringGrid'a
От: Vertx  
Дата: 03.04.03 15:21
Оценка:
Есть StringGrid, в нем выделяется целиком строка. Нужно, чтобы при двойном клике крысой на строку вся инфа из этой строки помещалась в кучу эдитов. Как сделать дабл клик на строке? Не надо смеяться, я только учусь
Re: Дабл клик на строке StringGrid'a
От: Slicer [Wirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 03.04.03 16:22
Оценка:
То есть? А в чем проблема-то? Событие OnDblClick, вешаешь обработчик — и все дела. Что-то не так работает?

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[2]: Дабл клик на строке StringGrid'a
От: Vertx  
Дата: 03.04.03 18:34
Оценка:
Здравствуйте, Slicer [Wirkwood], Вы писали:

SW>То есть? А в чем проблема-то? Событие OnDblClick, вешаешь обработчик — и все дела. Что-то не так работает?


SW>Проблема в том, как сделать так, чтобы при дабл клике считывалась инфа с выделенной строки. В справке смотреть лень, а завтра прогу сдавать надо, блин.
Re[3]: Дабл клик на строке StringGrid'a
От: Аноним  
Дата: 03.04.03 19:11
Оценка:
Здравствуйте, Vertx, Вы писали:

V>Здравствуйте, Slicer [Wirkwood], Вы писали:


SW>>То есть? А в чем проблема-то? Событие OnDblClick, вешаешь обработчик — и все дела. Что-то не так работает?


SW>>Проблема в том, как сделать так, чтобы при дабл клике считывалась инфа с выделенной строки. В справке смотреть лень, а завтра прогу сдавать надо, блин.



Я так понимаю — как правильно вытащить строку при двойном клике на StringGride. Так вот, IMHO я не ошибусь если посоветую
использовать функцию MouseToCell (хелп самостоятельно смотри там все предельно просто), а использовать эту функцию как раз
нужно в обработчике события OnDblClick, как уже было сказано.
Re[4]: Дабл клик на строке StringGrid'a
От: ArtDenis Россия  
Дата: 03.04.03 19:26
Оценка: 9 (1)
Здравствуйте, <Аноним>, Вы писали:

А>Я так понимаю — как правильно вытащить строку при двойном клике на StringGride. Так вот, IMHO я не ошибусь если посоветую

А>использовать функцию MouseToCell (хелп самостоятельно смотри там все предельно просто), а использовать эту функцию как раз
А>нужно в обработчике события OnDblClick, как уже было сказано.

Ну вот, начали огород городить...

Делается это очень просто (пример на билдере):

В обработчике OnBdlClick:

int row = StringGrid->Row;

Edit1->Text = StringGrid->Cells[0][row];
Edit2->Text = StringGrid->Cells[1][row];
Edit3->Text = StringGrid->Cells[2][row];
Edit4->Text = StringGrid->Cells[3][row];
// ...
// ... И так до посинения в пальцах :-)


Для тех кто не знает, события компонентов задаются на вкладке "Events" Object Inspector'a. И вообще, книжки читать надо

Денис.
... << RSDN@Home 1.0 beta 6a >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[5]: Дабл клик на строке StringGrid'a
От: Руслан Россия  
Дата: 04.04.03 18:28
Оценка:
Здравствуйте, ArtDenis, Вы писали:


AD>Делается это очень просто (пример на билдере):


AD>В обработчике OnBdlClick:


AD>
AD>int row = StringGrid->Row;

Edit1->>Text = StringGrid->Cells[0][row];
Edit2->>Text = StringGrid->Cells[1][row];
Edit3->>Text = StringGrid->Cells[2][row];
Edit4->>Text = StringGrid->Cells[3][row];
AD>// ...
AD>// ... И так до посинения в пальцах :-)
AD>


Огород — не огород...не знаю...хотел бы согласиться с данным предложением НО...
Дело в том, что событие OnDblClick возникает также в том случае если мышой кликаешь на нулевые row и сolumn'сы, а в ваше int row = StringGrid->Row;
передается тот номер строки, которая является на данный момент активной (на нулевую индекс перескакивать не хочет ), с одной стороны — это правильно..а с другой стороны нужно для корректности еще проверочку ставить все же..и вообще..не только книжки читать надо ...
Re[6]: Дабл клик на строке StringGrid'a
От: ArtDenis Россия  
Дата: 04.04.03 18:41
Оценка:
Здравствуйте, Руслан, Вы писали:

Р>Дело в том, что событие OnDblClick возникает также в том случае если мышой кликаешь на нулевые row и сolumn'сы, а в ваше int row = StringGrid->Row;

Р>передается тот номер строки, которая является на данный момент активной (на нулевую индекс перескакивать не хочет ), с одной стороны — это правильно..а с другой стороны нужно для корректности еще проверочку ставить все же..и вообще..не только книжки читать надо ...

Согласен. Был не прав. Исправлюсь.

void __fastcall TForm1::StringGridDblClick(TObject *Sender)
{
  TPoint cur;
  int col, row;

  cur = StringGrid->ScreenToClient(Mouse->CursorPos);
  StringGrid->MouseToCell(cur.x, cur.y, col, row);
  if (row < StringGrid->FixedRows) return; // Вот она - проверочка
  Edit1->Text = StringGrid->Cells[0][row];
  Edit2->Text = StringGrid->Cells[1][row];
  Edit3->Text = StringGrid->Cells[2][row];
  Edit4->Text = StringGrid->Cells[3][row];
}


А фраза насчёт книжек относилась к Vertx.

Денис.
... << RSDN@Home 1.0 beta 6a >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.