| 
| 
 | Вопрос # 3 236/ вопрос открыт / | 
 |  Здравствуйте эксперты!
 Подскажите пжлста почему не работает мой обработчик события?
 
 А если поставить Parent = Form1, то обрабатывается, но смещаются координаты при отображении ComboBoxa.
 
 Заранее спасибо!
 Приложение:Переключить в обычный режим Unit1.h ....public: // User declarations__fastcall TForm1(TComponent* Owner);//TComboBox *cmb;void __fastcall OnSelectValue(TObject *Sender);}; Unit1.cpp ....void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,int ARow, bool &CanSelect){int i; if (cmb != NULL)delete cmb;cmb = new TComboBox(Form1);cmb->Parent = StringGrid1;cmb->Style = csDropDown;cmb->DropDownCount = 10;cmb->Width = 55;cmb->Height = 128;cmb->Left = StringGrid1->DefaultColWidth*ACol + StringGrid1->CellRect(ACol,
ARow).Width()-55; //Left+10;cmb->Top = StringGrid1->CellRect(ACol, ARow).Top+1;for (i=0; i<256; i++)cmb->Items->Add(i);//cmb->OnSelect = TForm1::OnSelectValue; }//---------------------------------------------------------------------------void __fastcall TForm1::OnSelectValue(TObject *Sender){TComboBox *cmb; StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row] = cmb->Text; } 
|  |   Вопрос задал: Muratov Radik (статус: Посетитель)Вопрос отправлен: 29 сентября 2009, 10:58
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 29 сентября 2009, 14:32; участников в обсуждении: 2. 
|   | Вадим К (статус: Академик), 29 сентября 2009, 11:21 [#1]:Классическая проблема. StringGrid неправильно передает события до своих дочерних компонентов. Поэтому возможны самые разные спец эффекты. Надо либо просчитывать координаты (это совсем не сложно), либо писать своего StringGrid'a, который будет в качестве редактора реализовывать Combobox. Я в свое время делал хитрый "костыль". На форму ставил панель, делал ее без границ, StringGrid ставил в нее и делал ему Align = alClient. А для Combobox'а родителем ставил панель. Правда и тут спец эффектов хватает, но можно заставить работать.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 29 сентября 2009, 11:40 [#2]:Спасибо за совет! Да, с панелью тот же глюк с координатами.
 |  
|   | Вадим К (статус: Академик), 29 сентября 2009, 11:46 [#3]:А у панельки границу сделали нулевой? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 29 сентября 2009, 13:02 [#4]:BorderWidth = 0; BorderStyle = bsNone;
 |  
|   | Вадим К (статус: Академик), 29 сентября 2009, 13:04 [#5]:Координаты смещаются на постоянное число пикселей и/или зависит от положения StringGrid'a ? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 29 сентября 2009, 13:29 [#6]:Да верно. |  
|   | Вадим К (статус: Академик), 29 сентября 2009, 13:57 [#7]:э.... кажется мой вопрос предполагал альтернативу. И ответ "да верно" просто невозможен логически. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 29 сентября 2009, 14:08 [#8]:Сорри, в связке и/или увидел только и. Вобщем число постоянно и зависит от положения. |  
|   | Вадим К (статус: Академик), 29 сентября 2009, 14:16 [#9]:Если правильно помню, то оно как раз и равно положению StringGrid'a. И если грид лежит прямо на форме, то кто мешает просто пересчитывать эти координаты. Хотя странно, если комбобокс лежит на панели и грид растянут на всю ее... Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 29 сентября 2009, 14:32 [#10]:Я так и сделал. Пересчитываю координаты. Спасибо большое за отклик. Думаю можно вопрос закрыть. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |