//--------------------------------------------------------------------------- #include #pragma hdrstop #include "YarnCompositionData.h" #include "Main_F.h" #include "Simulation_F.h" #include "GuideBar.h" #include //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define IDS_COMPOSITION StringTable[0] #define IDS_BAR StringTable[1] #define IDS_NAME StringTable[2] #define IDS_PERCENT StringTable[3] #define IDS_TOTAL StringTable[4] #define IDS_COLOR StringTable[5] #define IDS_WPI StringTable[6] #define IDS_CPC StringTable[7] #define IDS_GREY_FABRIC StringTable[8] #define IDS_SIMULATED StringTable[9] #define IDS_WIDTH StringTable[10] #define IDS_G_PER_Y StringTable[11] #define IDS_TOTAL_HINT StringTable[12] #define IDS_YARN_NUM StringTable[13] #define IDS_YARN_USE StringTable[14] #define IDS_BEAM StringTable[15] #define IDS_YARN_TOTAL_USE StringTable[16] //--------------------------------------------------------------------------- TYarnCompositionData_F *YarnCompositionData_F; //--------------------------------------------------------------------------- __fastcall TYarnCompositionData_F::TYarnCompositionData_F(TComponent* Owner) : TForm(Owner) { YarnStringGrid->DoubleBuffered = true; TotalStringGrid->DoubleBuffered = true; } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::FormPaint(TObject *Sender) { TotalStringGrid->ColCount = 5; TotalStringGrid->DefaultRowHeight = 25; TotalStringGrid->ColWidths[0] = 105; TotalStringGrid->ColWidths[1] = 200; TotalStringGrid->ColWidths[2] = 200; TotalStringGrid->ColWidths[3] = 105; TotalStringGrid->ColWidths[4] = 105; YarnStringGrid->ColCount = 10; YarnStringGrid->DefaultRowHeight = 25; YarnStringGrid->ColWidths[0] = 53; YarnStringGrid->ColWidths[1] = 80; YarnStringGrid->ColWidths[2] = 150; YarnStringGrid->ColWidths[3] = 50; YarnStringGrid->ColWidths[4] = 50; YarnStringGrid->ColWidths[5] = 70; YarnStringGrid->ColWidths[6] = 60; YarnStringGrid->ColWidths[7] = 60; YarnStringGrid->ColWidths[8] = 60; YarnStringGrid->ColWidths[9] = 80; TotalStringGrid->Width=720; YarnStringGrid->Width=740; SetYarnUseList(); YarnStringGrid->RowCount = Main->texlayer->YarnList->Count+1+10; } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::AddYMToStr(AnsiString &str, YARNMATERIAL ym, AnsiString ymDirect){ switch(ym){ case ymPO: { str+="P/F "; break; } case ymNY: { str+="N/F "; break; } case ymNONE: { break; } case ymSPANDEX: { str+="SPANDEX "; break; } case ymCOTTON: { str+="COTTON "; break; } case ymDirectInput: { str+=ymDirect; //ÀåÁø¸¸: ½Ç Á¾·ù Á÷Á¢ÀÔ·ÂÀ» À§ÇØ str+=" "; break; } default: { break; } } } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::AddYPToStr(AnsiString &str, YARNPROPERTY yp, AnsiString ypDirect){ switch(yp){ case ypSD: { str+="SD"; break; } case ypFD: { str+="FD"; break; } case ypCD: { str+="CD"; break; } case ypSPK: { str+="SPK"; break; } case ypBRT: { str+="BRT"; break; } case ypPDD: { str+="PDD"; break; } case ypNONE: { str+=""; break; } case ypSDY: { str+="SDY"; break; } case ypAMT: { str+="AMT"; break; } case ypDirectInput: { str+=ypDirect;//ÀåÁø¸¸: ½Ç Á¾·ù Á÷Á¢ÀÔ·ÂÀ» À§ÇØ break; } default: { break; } } } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::YarnStringGridDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { SetYarnUseList(); AnsiString str=""; YarnStringGrid->Canvas->Font->Size=10; switch(ACol){ case 0: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str=IDS_BAR; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnStringGrid->Canvas->Font->Color=clWhite; YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str="L"+IntToStr(yu->layer_num+1); } break; } case 1: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str=IDS_YARN_NUM; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str=AnsiString((char)('A'+yu->yarnIndex)); } break; } case 2: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str="Spec."; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ //todo:diekun 2007.01.08. À̰÷¿¡¼­ À̸§À» ¼ÂÆÃÇØÁØ´Ù! ±âÁ¸ À̸§ÀÌ ¾îµð ÀúÀåµÇ´ÂÁö ã±â! YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; Yarn *yarn=(Yarn *)Main->texlayer->YarnList->Items[yu->yarnIndex]; if(yarn->name[0] == NULL) { AddYMToStr(str,yarn->ym,yarn->ymDirect); str+=IntToStr((int)yarn->denier); str+="/"; str+=IntToStr(yarn->filament); str+=" "; AddYPToStr(str,yarn->yp,yarn->ypDirect); }else{ str = yarn->name; } } break; } case 3: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str=IDS_YARN_USE; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str=IntToStr(yu->use); } break; } case 4: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str=IDS_BEAM; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str=IntToStr(yu->beam); } break; } case 5: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str=IDS_YARN_TOTAL_USE; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str=IntToStr(yu->total_use); } break; } case 6: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str="m/yard"; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str=MyFloatToStr(yu->MPY,2); } break; } case 7: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str="g/yard"; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str=MyFloatToStr(yu->GPY,2); } break; } case 8: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str="%"; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str=MyFloatToStr(yu->percent,2); } break; } case 9: { if(ARow==0){ YarnStringGrid->Canvas->Font->Color=clWhite; str="mm/RACK"; break; } if(ARow>0&&ARow-1texlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[ARow-1]; str=IntToStr(yu->mmPerRACK); } break; } } if(YarnStringGrid->Cells[ACol][ARow]!="")YarnStringGrid->Cells[ACol][ARow]=""; int x = ((Rect.right-Rect.left) - YarnStringGrid->Canvas->TextWidth(str)) / 2; int y = ((Rect.bottom-Rect.top) - YarnStringGrid->Canvas->TextHeight(str)) / 2; YarnStringGrid->Canvas->TextOut(Rect.Left + x, Rect.Top + y, str); } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::TotalStringGridDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { AnsiString str=""; TotalStringGrid->Canvas->Font->Size=10; switch(ACol){ case 0: { TotalStringGrid->Canvas->Font->Color=clWhite; if(ARow==0){ str=""; break; } if(ARow==1){ str=IDS_GREY_FABRIC; break; } if(ARow==2){ str=IDS_SIMULATED; break; } } case 1: { if(ARow==0){ TotalStringGrid->Canvas->Font->Color=clWhite; str=IDS_WPI; break; } if(ARow==1){ str=IntToStr(Main->maindata.gauge); break; } if(ARow==2){ str=MyFloatToStr(SimulationForm->sd.gauge,2); break; } } case 2: { if(ARow==0){ TotalStringGrid->Canvas->Font->Color=clWhite; str=IDS_CPC; break; } if(ARow==1){ str=MyFloatToStr(Main->maindata.cpc,2); break; } if(ARow==2){ str=MyFloatToStr(SimulationForm->sd.cpc,2); break; } } case 3: { if(ARow==0){ TotalStringGrid->Canvas->Font->Color=clWhite; str=IDS_WIDTH; break; } if(ARow==1){ str=MyFloatToStr(Main->maindata.width,2); break; } if(ARow==2){ str=MyFloatToStr(SimulationForm->sd.width,2); break; } } case 4: { if(ARow==0){ TotalStringGrid->Canvas->Font->Color=clWhite; str=IDS_G_PER_Y; break; } if(ARow==1){ double gpy=0; for(int i=0;itexlayer->YarnUseList->Count;i++){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[i]; gpy+=yu->GPY; } str=MyFloatToStr(gpy,2); break; } if(ARow==2){ str="-"; break; } } default: break; } if(TotalStringGrid->Cells[ACol][ARow]!="")TotalStringGrid->Cells[ACol][ARow]=""; int x = ((Rect.right-Rect.left) - TotalStringGrid->Canvas->TextWidth(str)) / 2; int y = ((Rect.bottom-Rect.top) - TotalStringGrid->Canvas->TextHeight(str)) / 2; TotalStringGrid->Canvas->TextOut(Rect.Left + x, Rect.Top + y, str); } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::YarnStringGridClick(TObject *Sender) { if(YarnStringGrid->Col!=3&&YarnStringGrid->Col!=4&&YarnStringGrid->Col!=5){ YarnStringGrid->Col=5; } } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::YarnStringGridKeyPress(TObject *Sender, char &Key) { if(Key==VK_RETURN){ if(YarnStringGrid->Row-1texlayer->YarnUseList->Count){ if(YarnStringGrid->Cells[YarnStringGrid->Col][YarnStringGrid->Row]=="")return; YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[YarnStringGrid->Row-1]; if(YarnStringGrid->Col==3){ yu->use=StrToInt(YarnStringGrid->Cells[YarnStringGrid->Col][YarnStringGrid->Row]); YarnStringGrid->Col=4; } else if(YarnStringGrid->Col==4){ yu->beam=StrToInt(YarnStringGrid->Cells[YarnStringGrid->Col][YarnStringGrid->Row]); YarnStringGrid->Col=5; yu->total_use=yu->use*yu->beam; } else if(YarnStringGrid->Col==5){ yu->total_use=StrToInt(YarnStringGrid->Cells[YarnStringGrid->Col][YarnStringGrid->Row]); } SetYarnUseList(); } YarnStringGrid->Repaint(); TotalStringGrid->Repaint(); } } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::FormCreate(TObject *Sender) { SetFont(); StringTable.Create(BaseDir, Language, "Composition"); Caption=IDS_COMPOSITION; YarnStringGrid->Hint=IDS_TOTAL_HINT; } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::SetFont() { SetSmallFont(Font); } //--------------------------------------------------------------------------- void __fastcall TYarnCompositionData_F::SetYarnUseList(){ int check=0; while(checktexlayer->YarnUseList->Count){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[check]; if(yu->yarnIndex>=Main->texlayer->YarnList->Count){//¾ø´Â ½ÇÀ» °¡¸®Å°´Â ³à¼®À» »©°í Main->texlayer->YarnUseList->Remove(yu); delete yu; continue; } if(yu->layer_num>=Main->texlayer->TexList->Count){//¾ø´Â ·¹À̾ °¡¸®Å°´Â ³à¼®À» »©°í Main->texlayer->YarnUseList->Remove(yu); delete yu; continue; } Tex *tex=(Tex *)Main->texlayer->TexList->Items[yu->layer_num]; bool has_yarn = false; for(int i=0;iWales->Count;i++){ WaleState *ws = (WaleState *)tex->Wales->Items[i]; if(ws->yarnIndex==yu->yarnIndex) has_yarn=true; } if(!has_yarn){//ÇöÀç ·¹À̾¼­ ¾²ÀÌÁö ¾Ê´Â ½ÇÀ» °¡¸®Å°´Â ³à¼® »©°í Main->texlayer->YarnUseList->Remove(yu); delete yu; continue; } for(int i=check+1;itexlayer->YarnUseList->Count;i++){//Áߺ¹ÀڷḦ Á¦°ÅÇϰí YarnUse *yu2=(YarnUse *)Main->texlayer->YarnUseList->Items[i]; if(yu2->yarnIndex==yu->yarnIndex&&yu2->layer_num==yu->layer_num){ Main->texlayer->YarnUseList->Remove(yu2); delete yu2; } } check++; } for(int i=0;itexlayer->TexList->Count;i++){//¾øÀ¸¸é ´õÇϰí Tex *tex=(Tex *)Main->texlayer->TexList->Items[i]; for(int j=0;jWales->Count;j++){ WaleState *ws=(WaleState *)tex->Wales->Items[j]; if(ws->in){ bool exist=false; for(int k=0;ktexlayer->YarnUseList->Count;k++){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[k]; if(ws->yarnIndex==yu->yarnIndex&&i==yu->layer_num){ exist=true; break; } } if(exist==false){ YarnUse *yu=new YarnUse; yu->yarnIndex=ws->yarnIndex; yu->layer_num=i; Main->texlayer->YarnUseList->Add(yu); } } } } double g=0; for(int i=0;itexlayer->YarnUseList->Count;i++){//°ªµéÀ» ÃʱâÈ­Çϰí.. YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[i]; Yarn *yarn=(Yarn *)Main->texlayer->YarnList->Items[yu->yarnIndex]; Tex *tex=(Tex *)Main->texlayer->TexList->Items[yu->layer_num]; if(tex->Courses->Count==0){ yu->mmPerRACK=tex->DefaultLengthPer480Course(yarn->denier, yarn->filament, Main->maindata.cpc, Main->maindata.gauge, GuideBar_F->gd.formula[yu->layer_num]); } else { yu->mmPerRACK=tex->LengthPer480Course(); } yu->MPY=tex->mPerYard(yarn->denier, yarn->filament, Main->maindata.cpc, Main->maindata.gauge, GuideBar_F->gd.formula[yu->layer_num]); yu->GPY=tex->gPerYard(yarn->denier, yarn->filament, Main->maindata.cpc, Main->maindata.gauge, GuideBar_F->gd.formula[yu->layer_num],yu->total_use); yu->GPY*=(1+yarn->contraction);//½ºÆÇó·³ ¶¯°Ü¼­ °¨´Â ½ÇÀº ½ÇÁ¦ º¸´Ù ¾ã¾ÆÁø´Ù g+=yu->GPY; } if(g==0)g=1; for(int i=0;itexlayer->YarnUseList->Count;i++){ YarnUse *yu = (YarnUse *)Main->texlayer->YarnUseList->Items[i]; yu->percent=yu->GPY/g*100.0; } for(int i=0;itexlayer->TexList->Count;i++){//layer_numÀ¸·Î Á¤·Ä for(int j=0;jtexlayer->YarnUseList->Count;j++){ YarnUse *yu=(YarnUse *)Main->texlayer->YarnUseList->Items[j]; if(yu->layer_num==i){ for(int k=0;ktexlayer->YarnUseList->Count;k++){ YarnUse *yu2=(YarnUse *)Main->texlayer->YarnUseList->Items[k]; if(klayer_num>i){ Main->texlayer->YarnUseList->Exchange(j, k); break; } } } } } //À̰͵éÀº ¹Ì¸® Àû´çÈ÷ ÀԷµǾî¾ßÇÑ´Ù /* int use; int beam; int total_use; */ } //---------------------------------------------------------------------------