#include "UserSet.h" #include "Runtime.h" #define TextTopOffSet 6 #define ListLineCnt 10 #define dAddrSdram_UserCodeP0 (dAddrSdRam_Commom) #define dAddrSdram_UserCodeP1 (dAddrSdRam_Commom + 2048) #define dAddrSdram_DescpBufP0 (dAddrSdRam_Commom + 4096) #define dAddrSdram_DescpBufP1 (dAddrSdRam_Commom + 20480) void TUserSet::Init(int x1, int y1, int aW, int aH, int OwnerX, int OwnerY, u32 aColor) { #define CH 30 //Caption Height unsigned short Left,Right, Top, Bottom, Width, Height, i; Bound.SetBySize(OwnerX + x1, OwnerY + y1, aW, aH); Left = Bound.Left +3; Top = Bound.Top+3; Width = aW - 7; Height = aH - 7; Right = Bound.Right -4; Bottom = Bound.Bottom -4; Caption.Init(Left,Top,Width, CH, 0, 0, clWhite, clMaroon); Content.Set(Left, Top+CH, Right, Bottom); SText.Init (519, Top, 280, CH, 0, 0, clWhite, clMaroon); VScrollBarBox.Set(Right-20 +1, Top+CH, Right, Bottom); Color = aColor; #undef CH ActiveLineNum=0; Load0.Count=0; Load1.SelectedIndex=0; Lv.ColHeight = 33; Lv.TopIndex=0; Lv.RowCount = 9; Lv.FixColTop = Content.Top; Lv.FixColBottom = Lv.FixColTop + Lv.ColHeight; Lv.ColTop[0] = Lv.FixColBottom + 1; Lv.ColBottom[0] = Lv.ColTop[0] + Lv.ColHeight -1; Lv.ColLeft[0] = 1; Lv.ColRight[0] = Lv.ColWidth[0] +1; for(i=1; i<12; i++){ Lv.ColTop[i] = Lv.ColTop[i -1] + Lv.ColHeight; Lv.ColBottom[i] = Lv.ColBottom[i-1] + Lv.ColHeight; } for(i=1;i Content.Bottom)y2 = Content.Bottom; if(x == Lv.SelectedCol){ RectFillRender(Content.Left, y, Content.Right, y2, SelectedColor); }else{ if(x & 1){ RectFillRender(Content.Left, y, Content.Right, y2, OddColor); }else{ RectFillRender(Content.Left, y, Content.Right, y2, Color); } } y = y2 + 1; if(y>Content.Bottom)break; } } void TUserSet::DrawSelf(void) { unsigned int x, y, x2, y2, w, h; VertLineRender(Bound.Left, Bound.Top, Bound.Height -1, 0xFFFFFFFF); VertLineRender(Bound.Right -1, Bound.Top +1, Bound.Height -2, 0xFF808080); VertLineRender(Bound.Right, Bound.Top, Bound.Height, 0xFF404040); HorizLineRender(Bound.Left, Bound.Top, Bound.Width - 1, 0xFFFFFFFF); HorizLineRender(Bound.Left +1, Bound.Bottom -1, Bound.Width - 2, 0xFF808080); HorizLineRender(Bound.Left, Bound.Bottom, Bound.Width, 0xFF404040); x = Bound.Left +2 ; x2 = Bound.Right -2; y = Bound.Top +2; y2 = Bound.Bottom - 2; w = Bound.Width -4; h = Bound.Height - 4; VertLineRender (x, y, h-1, 0xFF808080); HorizLineRender (x, y, w-1, 0xFF808080); VertLineRender (x+1, y+1, h-2, 0xFF404040); HorizLineRender (x+1, y+1, w-2, 0xFF404040); VertLineRender (x2-1, y+1, h-2, 0xFFD4D0C8); HorizLineRender (x+1, y2-1, w-2, 0xFFD4D0C8); VertLineRender (x2, y, h, 0xFFFFFFFF); HorizLineRender (x, y2, w, 0xFFFFFFFF); RenderContent(); } void TUserSet::DrawCaption(void) { Caption.Show(); if(ViewPath == 0){ DrawCaption1(); }else{ DrawCaption2(); } } void TUserSet::DrawCaption1(void) { if(IsProgram){ TMyString::sFromStr("按查询键进入子部件设置", SText.Text); }else{ TMyString::sFromStr(" 按查询键进入子部件 ", SText.Text); } SText.Show(); } void TUserSet::DrawCaption2(void) { if(IsProgram){ TMyString::sFromStr("按确定键确认保存", SText.Text); }else{ TMyString::sFromStr(" ", SText.Text); } SText.Show(); } void TUserSet::LoadTextToTemp(unsigned int aAddr) { int i; for(i=0; i<32; i++){ CommomGuiTempText[i] = *(volatile unsigned char *)(aAddr + i); } CommomGuiTempText[32]='\0'; } void TUserSet::DrawList(void) { int i,j, aTop, aImg; unsigned int idx, addr, aP0, aP1, aCode; unsigned int aClr; unsigned char aType; if(1){ RenderContent(); aTop = Lv.FixColTop + TextTopOffSet; if(ViewPath == 0){ if(Load0.Count <1)return; SetListColWidth(30,80,60,80,500,1,1,1,1); TextRender_string24(Lv.ColLeft[1],aTop,TextColor, "类型" ); TextRender_string24(Lv.ColLeft[2],aTop,TextColor, "序号" ); TextRender_string24(Lv.ColLeft[3],aTop,TextColor, " 用户码"); TextRender_string24(Lv.ColLeft[4],aTop,TextColor, " 描述"); idx = Lv.TopIndex ; for(i=0; i -1){ RestoreFromEdit(); if(aIndex < Lv.TopIndex){ Lv.TopIndex = aIndex; }else{ Lv.SelectedCol--; } Load0.SelectedIndex = aIndex; ReDraw(); SetEditStart(); } break; case VK_DOWN: aIndex = Load0.SelectedIndex +1; if(aIndex < Load0.Count){ RestoreFromEdit(); if(aIndex > (Lv.TopIndex + ListLineCnt -1) ){ Lv.TopIndex++; }else{ Lv.SelectedCol++; } Load0.SelectedIndex = aIndex; ReDraw(); SetEditStart(); } break; case VK_TAB: /*if(IsEditUsercode){ RestoreFromEdit(); IsEditUsercode = 0; IsEditDescp = 1; ReDraw(); SetEditStart(); }else{ RestoreFromEdit(); IsEditUsercode = 1; IsEditDescp = 0; ReDraw(); SetEditStart(); }*/ break; case VK_EXECUTE: ShowIfSave(); break; } }else if(ViewPath == 1){ switch(aKey){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '*': case '#': case VK_LEFT: case VK_RIGHT: case VK_DELETE: vEdit.KeyIn(aKey); vEdit.Show(); vEdit.ShowCursor(clNearWhite); break; case VK_UP: aIndex = Load1.SelectedIndex -1; if(aIndex > -1){ RestoreFromEdit(); if(aIndex < Lv.TopIndex){ Lv.TopIndex = aIndex; }else{ Lv.SelectedCol--; } Load1.SelectedIndex = aIndex; ReDraw(); SetEditStart(); } break; case VK_DOWN: aIndex = Load1.SelectedIndex +1; if(aIndex < Load1.Count){ RestoreFromEdit(); if(aIndex > (Lv.TopIndex + ListLineCnt -1) ){ Lv.TopIndex++; }else{ Lv.SelectedCol++; } Load1.SelectedIndex = aIndex; ReDraw(); SetEditStart(); } break; case VK_TAB: /*if(IsEditUsercode){ RestoreFromEdit(); IsEditUsercode = 0; IsEditDescp = 1; ReDraw(); SetEditStart(); }else{ RestoreFromEdit(); IsEditUsercode = 1; IsEditDescp = 0; ReDraw(); SetEditStart(); }*/ break; case VK_EXECUTE: ShowIfSave(); break; } } if(aKey == VK_RETURN){ RestoreFromEdit(); OnEditing = 0; ReDraw(); } }else{ if(aKey == VK_TAB){ } if(VK_UP == aKey){ if(ViewPath ==0){ aIndex = Load0.SelectedIndex -1; if(aIndex > -1){ if(aIndex < Lv.TopIndex){ Lv.TopIndex = aIndex; }else{ Lv.SelectedCol--; } Load0.SelectedIndex = aIndex; ReDraw(); } }else if(ViewPath ==1){ aIndex = Load1.SelectedIndex -1; if(aIndex > -1){ if(aIndex < Lv.TopIndex){ Lv.TopIndex = aIndex; }else{ Lv.SelectedCol--; } Load1.SelectedIndex = aIndex; ReDraw(); } } }else if(VK_DOWN == aKey){ if(ViewPath ==0){ aIndex = Load0.SelectedIndex +1; if(aIndex < Load0.Count){ if(aIndex > (Lv.TopIndex + ListLineCnt -1) ){ Lv.TopIndex++; }else{ Lv.SelectedCol++; } Load0.SelectedIndex = aIndex; ReDraw(); } }else if(ViewPath ==1){ aIndex = Load1.SelectedIndex +1; if(aIndex < Load1.Count){ if(aIndex > (Lv.TopIndex + ListLineCnt -1) ){ Lv.TopIndex++; }else{ Lv.SelectedCol++; } Load1.SelectedIndex = aIndex; ReDraw(); } } }else //Page up or Down____________________________ if(aKey == VK_LEFT){ if(ViewPath == 0){ GridX = 0; }else if(ViewPath == 1){ GridX = 0; } }else if(aKey == VK_RIGHT){ if(ViewPath == 0){ GridX = 0; }else if(ViewPath == 1){ GridX = 1; } }else if(aKey == VK_EXECUTE){ //Open path Device if(IsProgram){ ShowIfSave(); } }else if(aKey == VK_F1 ){ //Setup Device Property if(IsProgram){ if(ViewPath == 0){ SetEditStart(); }else if(ViewPath == 1){ SetEditStart(); } } }else if(aKey == VK_F2){ if(ViewPath == 0){ if(Load0.addr[Load0.SelectedIndex] != 0){ BkP0TopIndex = Lv.TopIndex; ClearPath1(); LoadPath1(); ViewPath = 1; ReDraw(); } } }else if(aKey == VK_RETURN){ if(ViewPath == 0){ aMsg = guiMsgReturn; }else if(ViewPath == 1){ ClearPath0(); LoadPath0(); Lv.TopIndex = BkP0TopIndex; Lv.SelectedCol = Load0.SelectedIndex - Lv.TopIndex; ViewPath = 0; ReDraw(); }else if(ViewPath > 1){ ClearPath1(); LoadPath1(); ViewPath = 1; ReDraw(); } } } //____________________________________________________________________<- List View return aMsg; } void TUserSet::ClearPath0(void) { unsigned int i; Load0.Count =0; for(i=0;i<64;i++){ Load0.addr[i] =0; } Load0.SelectedIndex = 0; Lv.TopIndex = 0; } void TUserSet::ClearPath1(void) { unsigned int i; for(i=0;i<256;i++){ Load1.addr[i] = 0; } Load1.Count = 0; Load1.SelectedIndex = 0; Lv.TopIndex = 0; } void TUserSet::LoadPath0Item(unsigned char aP) { if(Load0.Count < 65){ Load0.addr[Load0.Count] = aP; Load0.Count++; } } void TUserSet::LoadPath1Item(unsigned char aP) { if(Load1.Count < 256){ Load1.addr[Load1.Count]= aP; Load1.Count++; } } void TUserSet::LoadPath0(void) { int i; for(i=0; i用户码->根设备", Caption.Text); TMyString::sAddOnStr(" 按设置键开始设置", Caption.Text); Caption.FullRedraw(); } void TUserSet::LoadPath1(void) { unsigned int i; unsigned char aP0, aLim; aP0 = Load0.addr[Load0.SelectedIndex]; if(aP0 == 0)return; if(aP0 > 64) return; Load1.Count = 0; if(aP0 < 41){ ClearPath1(); Load1.P0 = aP0; aP0 = aP0-1; for(i=0; i< dEP_MAX_COUNT_PER_PORT; i++){ if(Port[aP0].ExistTable[i] == 0xA5) LoadPath1Item(i+1); } }else if(aP0 < 49){ ClearPath1(); Load1.P0 = aP0; aP0 = aP0 -40 -1; aLim = HandCtlBoard[aP0].fData.HandCtl.ResistedCount; for(i=0; i< aLim; i++){ LoadPath1Item(i+1); } }else if(aP0 < 57){ ClearPath1(); Load1.P0 = aP0; aP0 = aP0 -48 -1; aLim = DirectCtlBoard[aP0].fData.HandCtl.ResistedCount; for(i=0; i< aLim; i++){ LoadPath1Item(i+1); } } TMyString::sFromStr("系统设置->用户码->终端设备", Caption.Text); TMyString::sAddOnStr(" 按设置键开始设置", Caption.Text); Caption.FullRedraw(); Lv.SelectedCol = 0; Lv.TopIndex = 0; }