C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Сделать активной ячейку грида, Как сделать активной ячейку грида при по
Nick
Отправлено: 02.07.2003, 07:23


Машинист паровоза

Группа: Участник
Сообщений: 247



Как сделать активной ячейку грида при подведении
к ней курсора мыши.
Нужно сделать перетаскивание из списка номенклатуры
в определенный складскую ячейку, выполненный в виде СтрингГрида.
Георгий
Отправлено: 02.07.2003, 09:24


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



если надо, что бы при наведении курсора мыши ячейка TStringGrid получала фокус ввода, то можно так:
CODE
void __fastcall TForm1::StringGrid1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
TGridCoord gc;
TGridRect gr;
gc=this->StringGrid1->MouseCoord(X,Y);
gr.TopLeft=gc;
gr.BottomRight=gc;
this->StringGrid1->Selection=gr;
}
А если нужен Drag & Drop, то вот он — на примере перетаскивания из узла из TTreeView в TStringGrid, причём TTreeView->DragMode=dmAutomatic:
CODE
void __fastcall TForm1::TreeView1StartDrag(TObject *Sender,
     TDragObject *&DragObject)
{
TDragControlObject* dco=new TDragControlObject(this->TreeView1);
DragObject=dco;
dco->ShowDragImage();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DragOver(TObject *Sender,
     TObject *Source, int X, int Y, TDragState State, bool &Accept)
{//проверки на то, что же именно над нами тащут, пропущены
Accept=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DragDrop(TObject *Sender,
     TObject *Source, int X, int Y)
{
TGridCoord gc;
TDragControlObject *dco;
TTreeView* tv;
gc=this->StringGrid1->MouseCoord(X,Y);
dco=dynamic_cast<TDragControlObject*>(Source);
tv=dynamic_cast<TTreeView*>(dco->Control);
this->StringGrid1->Cells[gc.X][gc.Y]=tv->Selected->Text;
}


Отредактировано Георгий — 2 Jul 2003, 09:54

Вернуться в Вопросы программирования в C++Builder