void __fastcall TFormPdf::StringGridNew1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{

    TGridCoord cell = StringGridNew1->MouseCoord(X,Y); //セル位置取得

    if(cell.X < 0 || cell.Y < 0 || StringGridNew1->m_pData->Count == 0) return;

//固定列またはデータが無い場合、処理終了

    if (Button==mbLeft && !Shift.Contains(ssCtrl) && !Shift.Contains(ssShift)){

        TPdfData_DATA *p;
        for (int i=0;i<StringGridNew1->m_pData->Count;i++){

            p=(TPdfData_DATA*)StringGridNew1->m_pData->Items[i];

            if (i==cell.Y-1) {
                p->bSelect=true;
            }
            else {
                p->bSelect=false;
            }
        }
    }
    else if (Button == mbLeft && Shift.Contains(ssCtrl)){ //Ctrlキーを押下
        if (cell.Y > StringGridNew1->m_pData->Count) return;
        TPdfData_DATA *p=(TPdfData_DATA*)StringGridNew1->m_pData->Items[cell.Y - 1] ;

        if (p->bSelect) p->bSelect=false;
        else p->bSelect=true;
    }
    else if (Button==mbLeft && Shift.Contains(ssShift)){ //Shiftキーを押下
        if (cell.Y > StringGridNew1->m_pData->Count) return;

        TPdfData_DATA *p;
        for (int i=cell.Y-1; i >= 0; i--){
            p=(TPdfData_DATA*)StringGridNew1->m_pData->Items[i];

            if (p->bSelect) break;
            else p->bSelect=true;
        }
    }

    StringGridNew1->Refresh();
}