📄 lgxgridformoredocview.cpp
字号:
{
this->Lgxs[NowId].PrintView();
}
}
void CLgxgridForMoreDocView::OnPrintSetup() //打印设置
{
if(NowId>0)
{
this->Lgxs[NowId].SetPrintShow();
}
}
void CLgxgridForMoreDocView::OnPrint() //打印
{
if(NowId>0)
{
this->Lgxs[NowId].PrintYes();
}
}
void CLgxgridForMoreDocView::OnCopy()
{
if(NowId>0)
{
Lgxs[NowId].Copy();
}
}
void CLgxgridForMoreDocView::OnPase()
{
if(NowId>0)
{
Lgxs[NowId].Plaster();
}
}
void CLgxgridForMoreDocView::OnCut()
{
if (NowId>0)
{
Lgxs[NowId].Copy();
int i1,i2,j1,j2;
i1=Lgxs[NowId].GetNrow();
i2=Lgxs[NowId].GetNrowEnd();
j1=Lgxs[NowId].GetNlist();
j2=Lgxs[NowId].GetNlistEnd();
for(int i=i1;i<=i2;i++)
{
for(int j=j1;j<=j2;j++)
{
Lgxs[NowId].SetData(i,j,"");
}
}
}
}
void CLgxgridForMoreDocView::OnUnite()
{
if (NowId>0)
{
int i1,i2,j1,j2;
i1=Lgxs[NowId].GetNrow();
i2=Lgxs[NowId].GetNrowEnd();
j1=Lgxs[NowId].GetNlist();
j2=Lgxs[NowId].GetNlistEnd();
Lgxs[NowId].GridUnite(i1,j1,i2,j2,0);
}
}
void CLgxgridForMoreDocView::OnDelData()
{
if (NowId>0)
{
int i1,i2,j1,j2;
i1=Lgxs[NowId].GetNrow();
i2=Lgxs[NowId].GetNrowEnd();
j1=Lgxs[NowId].GetNlist();
j2=Lgxs[NowId].GetNlistEnd();
for(int i=i1;i<=i2;i++)
{
for(int j=j1;j<=j2;j++)
{
Lgxs[NowId].SetData(i,j,"");
}
}
}
}
void CLgxgridForMoreDocView::OnSplit()
{
if(NowId>0)
{
int i1,j1;
i1=Lgxs[NowId].GetNrow();
j1=Lgxs[NowId].GetNlist();
Lgxs[NowId].SplitGrid(i1,j1);
}
}
BOOL CLgxgridForMoreDocView::OnDragDropXYLgxs(UINT nID,float x, float y) //如果你觉得实时移动不好,请用这个
{
CPoint Point,SelfPoint;
CRect MRect;
int i;
i=nID-1008;
GetCursorPos(&Point); //获得鼠标当前位置
SelfPoint=Point;
ScreenToClient(&SelfPoint); //鼠标相对于窗口的位置
Lgxs[i].SetWindowPos(&Lgxs[i],SelfPoint.x-3,SelfPoint.y-3,0,0,1);
Lgxs[i].BringWindowToTop();
NowId=(int)nID-1008;
CLgxgridForMoreDocDoc* MyDoc;
MyDoc=this->GetDocument();
Lgxs[i].GetWindowRect(MRect);
ScreenToClient(&MRect);
MyDoc->GData[i].Left=MRect.left;
MyDoc->GData[i].Top=MRect.top;
return true;
}
BOOL CLgxgridForMoreDocView::OnDragOverXYLgxs(UINT nID,float x, float y) //移动表格
{
CPoint Point,SelfPoint;
int i;
i=nID-1008;
GetCursorPos(&Point); //获得鼠标当前位置
SelfPoint=Point;
ScreenToClient(&SelfPoint); //鼠标相对于窗口的位置
Lgxs[i].SetWindowPos(&Lgxs[i],SelfPoint.x-3,SelfPoint.y-3,0,0,1);
Lgxs[i].BringWindowToTop();
return true;
}
BOOL CLgxgridForMoreDocView::OnClickLgxs(UINT nID)
{
return true;
}
void CLgxgridForMoreDocView::OnIntoGrid()
{
Lists=Rows=Left=Top=0;
CGridInto Mgridinto;
Mgridinto.DoModal();//显示对话框
if(Mgridinto.Onyes==1)
{
Rows=Mgridinto.Rows;
Lists=Mgridinto.Lists;
Left=Mgridinto.Left;
Top=Mgridinto.Top;
if(Rows>0 && Lists>0)
{
if (id+1<=1013)
{
xi=xi+1;//ID递增
id=1008+xi;
CLgxgridForMoreDocDoc* Mdoc=this->GetDocument();
Mdoc->Grids=xi;
Mdoc->GData[xi].Lists=Lists;
Mdoc->GData[xi].Rows=Rows;
Mdoc->GData[xi].Left=Left;
Mdoc->GData[xi].Top=Top;
Mdoc->GData[xi].Height=288;
Mdoc->GData[xi].Width=294;
NowId=xi;
CLgxgridForMoreDocView::GridAdd(xi,Lists,Rows,Left,Top,288,294);//添加一个表格
}
else
{
MessageBox("在一个文档内,你不能创建多于5个表格!");
}
}
}
}
BOOL CLgxgridForMoreDocView::OnMouseDownLgxs(UINT nID,short Button, short Shift, float x, float Y)
{
NowId=(int)nID-1008;
Lgxs[NowId].BringWindowToTop();
return true;
}
void CLgxgridForMoreDocView::GridAdd(int xi,int Lists,int Rows,int Left,int Top,int Height,int Width)
{
CString Name;
Lgxs[xi].Create(NULL, WS_VISIBLE, CRect(Left,Top,Width+Left,Height+Top), this,xi+1008);//创建控件对象
Lgxs[xi].ShowWindow(SW_HIDE);//初始化是隐藏表格,使用不能看到表格创建的过程
Lgxs[xi].BringWindowToTop();//表格置顶
for(int i=1;i<=Lists;i++)
{
Name.Format("%d",i);
Lgxs[xi].hadd(Name,1,500,true,NULL);
}
Lgxs[xi].SetdRows(Rows);//设置行数
Lgxs[xi].SetSlwok(true);//设置列宽可移动
Lgxs[xi].ShowWindow(SW_SHOW);//显示表格
}
void CLgxgridForMoreDocView::OnLwChangLgxs(UINT nID,long Lid, long Lw)
{
// 把列宽的改变保存到文档
CLgxgridForMoreDocDoc* Mdoc=this->GetDocument();
bool Fok=false;
for(int i=1;i<=Mdoc->Lws;i++)//查找该列变动是否已登记
{
Fok=false;
if(Mdoc->Ldata[i].Gid==(int)nID-1008 && Mdoc->Ldata[i].Ls==Lid)
{
Fok=true;
Mdoc->Ldata[i].Lw=Lw;
break;
}
}
if(Fok==false)
{
Mdoc->Lws=Mdoc->Lws+1;
Mdoc->Ldata[Mdoc->Lws].Gid=(int)nID-1008;
Mdoc->Ldata[Mdoc->Lws].Ls=Lid;
Mdoc->Ldata[Mdoc->Lws].Lw=Lw;
}
}
void CLgxgridForMoreDocView::OnUnChangLgxs(UINT nID,long d1r, long d1l, long d2r, long d2l)
{
// 登记合并单元格的改动
CLgxgridForMoreDocDoc* Mdoc=this->GetDocument();
bool Fok=false;
for(int i=1;i<=Mdoc->Us;i++)//查找变动是否已登记
{
Fok=false;
if(Mdoc->UData[i].Gid==(int)nID-1008 && Mdoc->UData[i].d1r==d1r && Mdoc->UData[i].d1l==d1l)
{
Fok=true;
Mdoc->UData[i].d2r=d2r;
Mdoc->UData[i].d2l=d2l;
break;
}
}
if(Fok==false)
{
if(Mdoc->Us+1<=500)
{
Mdoc->Us=Mdoc->Us+1;
Mdoc->UData[Mdoc->Us].Gid=(int)nID-1008;
Mdoc->UData[Mdoc->Us].d1r=d1r;
Mdoc->UData[Mdoc->Us].d1l=d1l;
Mdoc->UData[Mdoc->Us].d2r=d2r;
Mdoc->UData[Mdoc->Us].d2l=d2l;
}
else
{
MessageBox("在一个文档内,合并单元格的个数不得多于500个。");
}
}
}
void CLgxgridForMoreDocView::OnSpChangLgxs(UINT nID,long d1r, long d1l)
{
// 登记合并单元格的改动
CLgxgridForMoreDocDoc* Mdoc=this->GetDocument();
for(int i=1;i<=Mdoc->Us;i++)//查找变动是否已登记
{
if(Mdoc->UData[i].Gid==(int)nID-1008 && Mdoc->UData[i].d1r==d1r && Mdoc->UData[i].d1l==d1l)
{
Mdoc->UData[i].d2r=0;
Mdoc->UData[i].d2l=0;
break;
}
}
}
BOOL CLgxgridForMoreDocView::OnDataChangLgxs(UINT nID,long hid, long lid, LPCTSTR oldData, LPCTSTR newData)
{
// 登记数据的改动
CLgxgridForMoreDocDoc* Mdoc=this->GetDocument();
bool Fok=false;
for(int i=1;i<=Mdoc->Datas;i++)//查找变动是否已登记
{
Fok=false;
if(Mdoc->Data[i].Gid==(int)nID-1008 && Mdoc->Data[i].hid==hid && Mdoc->Data[i].lid==lid)
{
Fok=true;
Mdoc->Data[i].Data=newData;
break;
}
}
if(Fok==false)
{
if(Mdoc->Datas+1<=1500000)
{
Mdoc->Datas=Mdoc->Datas+1;
Mdoc->Data[Mdoc->Datas].Gid=(int)nID-1008;
Mdoc->Data[Mdoc->Datas].hid=hid;
Mdoc->Data[Mdoc->Datas].lid=lid;
Mdoc->Data[Mdoc->Datas].Data=newData;
}
else
{
MessageBox("在一个文档内,数据量不能多于1500000个。");
}
}
return true;
}
void CLgxgridForMoreDocView::OnHW()
{
if(NowId>0)
{
SetHW Setghw;
CLgxgridForMoreDocDoc* Mdoc=this->GetDocument();
Mdoc=this->GetDocument();
Setghw.Height=Mdoc->GData[NowId].Height;
Setghw.Width=Mdoc->GData[NowId].Width;
Setghw.DoModal();
if(Setghw.Onyes=1)
{
CRect MRect;
Lgxs[NowId].GetWindowRect(MRect);
ScreenToClient(&MRect);
MRect.bottom=MRect.top+Setghw.Height;
MRect.right =MRect.left+Setghw.Width;
Lgxs[NowId].MoveWindow(MRect,true);
//将改动保存到文档
Mdoc->GData[NowId].Left=MRect.left;
Mdoc->GData[NowId].Top=MRect.top;
Mdoc->GData[NowId].Height=Setghw.Height;
Mdoc->GData[NowId].Width=Setghw.Width;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -