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 |
|
|