Hola, si ver un poco mas abajo, hay un mensaje llamado domesticando al dbgrid, ahi se explica como se cuelga un componente en un dbgrid, para un stringgrid es mas sencillo, revisa el mensaje, pero mientras lo revisas hay te va un poco del codigo TRect RectTal;
if(qry_segenvio->State != dsInsert && qry_segenvio->State != dsEdit) return;
RectTal = sgrd_segenv->CellRect(sgrd_segenv->Col,sgrd_segenv->Row);
switch (sgrd_segenv->Col) {
case COL_FECHAENV:
date_fechaenv->Top = sgrd_segenv->Top + RectTal.Top + 1;
date_fechaenv->Left = sgrd_segenv->Left + RectTal.Left + 1;
date_fechaenv->Height = RectTal.Height();
date_fechaenv->Width = RectTal.Width();
date_fechaenv->Date = qry_segenvio->FieldByName("FECHA_ENV")->AsDateTime;
date_fechaenv->Visible = true;
ActiveControl=date_fechaenv;
break;
case COL_MEDIOENV:
lkcmb_medioenv->Top = sgrd_segenv->Top + RectTal.Top + 1;
lkcmb_medioenv->Left = sgrd_segenv->Left + RectTal.Left + 1;
lkcmb_medioenv->Height = RectTal.Height();
lkcmb_medioenv->Width = RectTal.Width();
lkcmb_medioenv->KeyValue = qry_segenvio->FieldByName("IDMEDIOENV")->AsInteger;
lkcmb_medioenv->Visible = true;
ActiveControl=lkcmb_medioenv;
break;
case COL_FLETERA :
lkcmb_fletera->Top = sgrd_segenv->Top + RectTal.Top + 1;
lkcmb_fletera->Left = sgrd_segenv->Left + RectTal.Left + 1;
lkcmb_fletera->Height = RectTal.Height();
lkcmb_fletera->Width = RectTal.Width();
lkcmb_fletera->KeyValue = qry_segenvio->FieldByName("IDFLETERA")->AsInteger;
lkcmb_fletera->Visible = true;
ActiveControl=lkcmb_fletera;
break;
case COL_GUIA :
edt_guia->Top = sgrd_segenv->Top + RectTal.Top + 1;
edt_guia->Left = sgrd_segenv->Left + RectTal.Left + 1;
edt_guia->Height = RectTal.Height();
edt_guia->Width = RectTal.Width();
edt_guia->Text = qry_segenvio->FieldByName("NUMGUIA")->AsString;
edt_guia->Visible = true;
ActiveControl=edt_guia;
break;