#include "LinkageList.h" static const short svGridX[8] = {20, 44, 92, 140, 164, 212, 400, 600}; static const short xExist = 260; void TLinkageList::DrawFixText() { if(LanguageEnCn==0){ TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, "联动->编程查询"); TextRender_string24(svGridX[0], Lv.Grid.Top[0] +4, clNearWhite, "第"); TextRender_string24(svGridX[2], Lv.Grid.Top[0] +4, clNearWhite, "条"); TextRender_string24(svGridX[3], Lv.Grid.Top[0] +4, clNearWhite, "共"); TextRender_string24(svGridX[5], Lv.Grid.Top[0] +4, clNearWhite, "条"); TextRender_string24(xExist, Lv.Grid.Top[0] +4, clNearWhite, "有效"); TextRender_string24(xExist+48+48, Lv.Grid.Top[0] +4, clNearWhite, "条"); TextRender_string24(svGridX[6], Lv.Grid.Top[0] +4, clNearWhite, "执行情况"); TextRender_string24(svGridX[7], Lv.Grid.Top[0] +4, clNearWhite, "正常/屏蔽"); }else{ TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, "Linkage->Expression Overview"); TextRender_string24(svGridX[0], Lv.Grid.Top[0] +4, clNearWhite, "Index"); //TextRender_string24(svGridX[2], Lv.Grid.Top[0] +4, clNearWhite, "条"); TextRender_string24(svGridX[3]-36, Lv.Grid.Top[0] +4, clNearWhite, "Total"); //TextRender_string24(svGridX[5], Lv.Grid.Top[0] +4, clNearWhite, "条"); TextRender_string24(xExist-12, Lv.Grid.Top[0] +4, clNearWhite, "Valid"); //TextRender_string24(xExist+48+48, Lv.Grid.Top[0] +4, clNearWhite, "条"); TextRender_string24(svGridX[6]+20, Lv.Grid.Top[0] +4, clNearWhite, "Executed"); TextRender_string24(svGridX[7]+20, Lv.Grid.Top[0] +4, clNearWhite, "Blocking"); } } void TLinkageList::Init() { IsShow = 0; ShowEntry = 0; Tag.Inx =0; Tag.TopInx = 0; Items.Inx = 0; Items.TopInx = 0; } void TLinkageList::RenderBackGround(void) { RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, ContentColor); } void TLinkageList::RenderBackGround(unsigned int aClr) { RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, aClr); } void TLinkageList::DrawSelf(void) { RectFillRender(Lv.Caption.Left, Lv.Caption.Top, Lv.Caption.Right, Lv.Caption.Bottom, CaptionColor); for(int i=0; i 10)return; RectFillRender(Lv.Grid.Left[iT], Lv.Grid.Top[iT], Lv.Grid.Left[iT] + Lv.Grid.Right[iT], Lv.Grid.Top[iT] + 3, ItemColor); //draw rectangle RectFillRender(Lv.Grid.Left[iT], Lv.Grid.Top[iT], Lv.Grid.Left[iT] + 3, Lv.Grid.Bottom[iT], ItemColor); //draw rectangle RectFillRender(Lv.Grid.Right[iT] -3, Lv.Grid.Top[iT], Lv.Grid.Right[iT], Lv.Grid.Bottom[iT], ItemColor); //draw rectangle RectFillRender(Lv.Grid.Left[iT], Lv.Grid.Bottom[iT] -3, Lv.Grid.Right[iT], Lv.Grid.Bottom[iT], ItemColor); //draw rectangle } void TLinkageList::Check4Selected(void) { int iT; iT = Tag.Inx + 1; if(iT == 0)return; if(iT > 10)return; RectFillRender(Lv.Grid.Left[iT], Lv.Grid.Top[iT], Lv.Grid.Left[iT] + Lv.Grid.Right[iT], Lv.Grid.Top[iT] + 3, clBlue); //draw rectangle RectFillRender(Lv.Grid.Left[iT], Lv.Grid.Top[iT], Lv.Grid.Left[iT] + 3, Lv.Grid.Bottom[iT], clBlue); //draw rectangle RectFillRender(Lv.Grid.Right[iT] -3, Lv.Grid.Top[iT], Lv.Grid.Right[iT], Lv.Grid.Bottom[iT], clBlue); //draw rectangle RectFillRender(Lv.Grid.Left[iT], Lv.Grid.Bottom[iT] -3, Lv.Grid.Right[iT], Lv.Grid.Bottom[iT], clBlue); //draw rectangle } //_____________________________________________________________________________________________________________________________ TGuiMsgReturn TLinkageList::KeyIn(unsigned char aKey) { TGuiMsgReturn aMsg = guiMsgNone, SubReturn; if(ShowEntry){ SubReturn = LinkageProgram.KeyIn(aKey); if(SubReturn == guiMsgReturn){ ShowEntry = 0; RenderBackGround(); DrawSelf(); LoadList(); DrawList(); Check4Selected(); } }else{ switch(aKey){ case VK_UP: if(Tag.Inx>0){ ClearSelected(); Tag.Inx--; Items.Inx--; Check4Selected(); }else{ if(Items.Inx>0){ ClearSelected(); Tag.Inx =0; Items.Inx--; Items.TopInx =Items.Inx; DrawList(); Check4Selected(); } } if(LanguageEnCn==0)TextDigitRender4_24(svGridX[0] + 24, Lv.Grid.Top[0] + 4, clNearWhite, ItemColor, Items.Inx+1); break; case VK_DOWN: if(Tag.Inx<9){ if(Items.Inx<(dLINKAGE_MAX_COUNT-1)){ ClearSelected(); Tag.Inx++; Items.Inx++; Check4Selected(); } }else{ Tag.Inx =9; if(Items.Inx<(dLINKAGE_MAX_COUNT-1)){ ClearSelected(); Items.Inx++; Items.TopInx =Items.Inx-9; DrawList(); Check4Selected(); } } if(LanguageEnCn==0)TextDigitRender4_24(svGridX[0] + 24, Lv.Grid.Top[0] + 4, clNearWhite, ItemColor, Items.Inx+1); break; case VK_LEFT: int GoLeft; if(Items.Inx <1){ ClearSelected(); Items.Inx =2040; Items.TopInx =2040; Tag.Inx = 0; DrawList(); Check4Selected(); }else{ GoLeft = (Items.Inx / 10 -1) * 10; if(GoLeft < 0){ GoLeft = 0; } ClearSelected(); Items.Inx =GoLeft; Items.TopInx =GoLeft; Tag.Inx = 0; DrawList(); Check4Selected(); } if(LanguageEnCn==0)TextDigitRender4_24(svGridX[0] + 24, Lv.Grid.Top[0] + 4, clNearWhite, ItemColor, Items.Inx+1); break; case VK_RIGHT: int GoInx; if(Items.Inx >= 2040){ ClearSelected(); Items.Inx =0; Items.TopInx =0; Tag.Inx = 0; DrawList(); Check4Selected(); }else{ GoInx = (Items.Inx / 10 +1) * 10; if(GoInx >= dLINKAGE_MAX_COUNT){ GoInx = dLINKAGE_MAX_COUNT-10; if(GoInx <0)GoInx = 0; } ClearSelected(); Items.Inx =GoInx; Items.TopInx =GoInx; Tag.Inx = 0; DrawList(); Check4Selected(); } if(LanguageEnCn==0)TextDigitRender4_24(svGridX[0] + 24, Lv.Grid.Top[0] + 4, clNearWhite, ItemColor, Items.Inx+1); break; case VK_EXECUTE: ShowEntry = 1; LinkageProgram.Init(); LinkageProgram.EnterMethod = 1; LinkageProgram.Show(); LinkageProgram.InitPanel(); LinkageProgram.Skip2Entry(Items.Inx+1); break; case VK_RETURN: IsShow =0; aMsg = guiMsgReturn; break; } } return aMsg; } int TLinkageList::ExtRequst(unsigned char Prm) { if(ShowEntry){ LinkageProgram.ExtRequst(Prm); } IsShow = 0; return 0; }