Aptem |
Отправлено: 26.08.2003, 11:41 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Привет, всем !
Скажите, кто может, можно ли и если можно, то как сделать, чтобы кликнув правой кнопкой мыши на любой ячейке StringGid'а вызывалось PopUp Menu. Меню разное, взависимости от данных, находящихся в ячейке, то есть какие-то строки меню Enabled = true, а какие-то Enabled = false.
Надеюсь вопрос понятен !
Спасибо за внимание !!!
Отредактировано Aptem — 26/08/2003, 12:52
|
|
Георгий |
Отправлено: 26.08.2003, 19:41 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
вопрос не только хорошо понятен, но и не сложен — смотри код:
CODE | void __fastcall TForm1::StringGrid1ContextPopup(TObject *Sender,
TPoint &MousePos, bool &Handled)
{
AnsiString str;
str.printf("Ùåë÷¸ê ìûøêîé x=%d y=%d",MousePos.x,MousePos.y);
this->Memo1->Lines->Add(str);
int ACol,ARow;
this->StringGrid1->MouseToCell(MousePos.x,MousePos.y,ACol,ARow);
str.printf("ýòî ïîïàäàåò íà ÿ÷åéêó ACol=%d ARow=%d",ACol,ARow);
this->Memo1->Lines->Add(str);
//âêëþ÷àåì âñå ïóíêòû
for (int i=0;i<this->PopupMenu1->Items->Count;i++)
this->PopupMenu1->Items->Items[i]->Enabled=true;
//îòêëþ÷àåì ïóíêò ìåíþ = # ñòîëáöà
this->PopupMenu1->Items->Items[ACol]->Enabled=false;
} |
а для закрепления вот весь проект:
|
|
Aptem |
Отправлено: 27.08.2003, 04:44 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Все конечно понятно, спасибо, но вот примерчик не пошел. Требует дополнительные packages !
|
|
Георгий |
Отправлено: 27.08.2003, 08:34 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
у меня BCB5 pro. сделана полная установка и никаких дополнительных package не установлено.
Теперь вместе с исходниками лежит нормальный exe.
|
|
Aptem |
Отправлено: 27.08.2003, 10:17 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Огромное спасибочки... разобрался!
Но возникла новая проблема:
Когда всплывает меню над гридом, кнопка мыши как бы остается нажатой и если поводить мышкой по меню, то будут выделяться строки грида. Другими словами, как можно отключить выделение ячеек.
|
|
Gedeon |
Отправлено: 27.08.2003, 12:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Вот это запрещает выделение если свойство Options->goRangeSelect в инспекторе объектов установлено в false, его можно менять и в коде, но сейчас у меня нет времени в этом ковыряться.
CODE |
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
//StringGrid1->Options.
CanSelect = false;
}
//---------------------------------------------------------------------------
|
|
|
Георгий |
Отправлено: 27.08.2003, 20:15 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
Aptem
А у меня, когда я вожу мышкой по меню, ячейки не выделяются ( при любом Options->goRangeSelect ) возможно где-то что-то другое глючит? |
|