Почему не отрабатывает мой обработчик
Подскажите пжлста почему не работает мой обработчик события?
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;
}
А если поставить Parent = Form1, то обрабатывается, но смещаются координаты при отображении ComboBoxa.
Заранее спасибо!
Потаму, что у тебя комбобокс не принадлежит форме Form1, в котрой есть обработчик.
Цитата: Airhand
Потаму, что у тебя комбобокс не принадлежит форме Form1, в котрой есть обработчик.
И как сделать, чтобы все работало?
Разобраться с координатами и радоваться жизни. :) Когда компонент принадлежит другому компоненту, за начало отсчета координат берется левый верхний угол родительского компонента, а не экрана. :) Вот и посчитайте, где у вас комбобокс должен висеть.
Спасибо, так и сделал. Считаю координаты :)