604
社区成员
发帖
与我相关
我的任务
分享
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGrid1DblClick(TObject *Sender)
{
ShowMessage(ADOQuery1->FieldByName("ID")->AsString);
}
void __fastcall MyDrawColumnCell(TObject *Sender, const TRect &Rect,
int DataCol, TColumn *Column, TGridDrawState State)
{
TDBGrid *DBGrid=((TDBGrid*)Sender);
TVirtualTable *VirtualTable=((TVirtualTable*)(DBGrid->DataSource->DataSet));
if(!MyVirtualTableExists(VirtualTable))
{
DBGrid->DefaultDrawColumnCell(Rect,DataCol,Column,State);
return;
}
if(DBGrid->Canvas->TextWidth(Column->Field->DisplayText)>Column->Field->Tag)
{
Column->Field->Tag=DBGrid->Canvas->TextWidth(Column->Field->DisplayText);
for(int i=0;i<DBGrid->FieldCount;i++)
{
if(DBGrid->Columns->Items[i]->FieldName==Column->Field->DisplayName)
{
if(Column->Title->Caption=="序号")
{
DBGrid->Columns->Items[i]->Width=30;
}
else if(Column->Title->Caption.Trim()=="")
{
DBGrid->Columns->Items[i]->Width=15;
}
else if(Column->Field->Tag==0)
{
DBGrid->Columns->Items[i]->Width=1;
}
else
{
if(DBGrid->Canvas->TextWidth(DBGrid->Columns->Items[i]->Title->Caption)>Column->Field->Tag)
Column->Field->Tag=DBGrid->Canvas->TextWidth(DBGrid->Columns->Items[i]->Title->Caption);
DBGrid->Columns->Items[i]->Width=Column->Field->Tag+10;
}
}
}
}
DBGrid->DefaultDrawColumnCell(Rect,DataCol,Column,State);
if(Column->Title->Caption=="序号")
{
AnsiString Str=IntToStr(DBGrid->DataSource->DataSet->RecNo);
DBGrid->Canvas->FillRect(Rect);
DrawText(DBGrid->Canvas->Handle,Str.c_str(),Str.Length(),(RECT*)&Rect,DT_SINGLELINE|DT_VCENTER|DT_CENTER);
}
AnsiString ID ;
...
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGrid1DblClick(TObject *Sender)
{
ShowMessage(ID);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGrid1CellClick(TColumn *Column)
{
ID = ADOQuery1->FieldByName("ID")->AsString ;
}