//--------------------------------------------------------------------------- #include #pragma hdrstop #include "YarnTable_F.h" #include "Common.h" #include "Yarn.h" #ifndef KNIT #include "YarnArrange_F.h" #endif #include "MainImage.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define IDS_YARNTABLE StringTable[0] #define IDS_CURRENTDIRECTORY StringTable[1] #define IDS_YARNINFORMATION StringTable[2] //--------------------------------------------------------------------------- TYarnTableForm *YarnTableForm; //--------------------------------------------------------------------------- __fastcall TYarnTableForm::TYarnTableForm(TComponent* Owner) : TForm(Owner) { //=========================================== StringTable.Create(DirectoryBin, Language, "YarnTable"); SetSmallFont(Font); SetSmallFont(Label1->Font); Caption = IDS_YARNTABLE; Label1->Caption = IDS_CURRENTDIRECTORY; YarnInforBar->Panels->Items[0]->Text = IDS_YARNINFORMATION; //=========================================== } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::FormCreate(TObject *Sender) { AnsiString IniDirName; #if defined(WEAVE) TIniFile *IniFile = new TIniFile(AppDataItem + "\\Main.ini"); if (IniFile) { Left = IniFile->ReadInteger("YarnTable", "FormLeft",2); Top = IniFile->ReadInteger("YarnTable", "FormTop",60); Width = IniFile->ReadInteger("YarnTable", "FormWidth",965); Height = IniFile->ReadInteger("YarnTable", "FormHeight",430); IniDirName = IniFile->ReadString("YarnTable", "DirectoryName", DirectoryYarn); if (SetCurrentDir(IniDirName)) DirectoryListBox->Directory = IniDirName; else DirectoryListBox->Directory = DirectoryYarn; DirectoryListBox->ItemIndex = 0; delete IniFile; } #else TIniFile *IniFile = new TIniFile(AppDataItem + "\\Main.ini"); if (IniFile) { Left = IniFile->ReadInteger("YarnTable", "FormLeft", (Screen->Width-Width)>>1); Top = IniFile->ReadInteger("YarnTable", "FormTop", (Screen->Height-Height)>>1); Width = IniFile->ReadInteger("YarnTable", "FormWidth", Width); Height = IniFile->ReadInteger("YarnTable", "FormHeight", Height); IniDirName = IniFile->ReadString("YarnTable", "DirectoryName", DirectoryYarn); if (SetCurrentDir(IniDirName)) DirectoryListBox->Directory = IniDirName; else DirectoryListBox->Directory = DirectoryYarn; DirectoryListBox->ItemIndex = 0; delete IniFile; } #endif Table = new TList; IsDrag = false; } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::FormDestroy(TObject *Sender) { while (Table->Count) { TYarnData *YarnData = (TYarnData *)Table->First(); Table->Remove(YarnData); delete YarnData; } delete Table; TIniFile *IniFile = new TIniFile(AppDataItem + "\\Main.ini"); if (IniFile) { if (Left<0) Left = 10; if (Top<0) Top = 10; IniFile->WriteInteger("YarnTable", "FormLeft", Left); IniFile->WriteInteger("YarnTable", "FormTop", Top); IniFile->WriteInteger("YarnTable", "FormWidth", Width); IniFile->WriteInteger("YarnTable", "FormHeight", Height); IniFile->WriteString("YarnTable", "DirectoryName", DirectoryListBox->Directory); delete IniFile; } } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::FormClose(TObject *Sender, TCloseAction &Action) { if (FOnCloseForm) FOnCloseForm(); } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::FormResize(TObject *Sender) { YarnTableGrid->ColCount = (YarnTableGrid->Width-4)/100; YarnTableGrid->RowCount = (FileListBox->Items->Count-1)/YarnTableGrid->ColCount+1; int width = (YarnInforBar->Width - 150) / 7; for (int i = 1; i <= 7; i++) YarnInforBar->Panels->Items[i]->Width = width ; Bevel->Width = Width - 165; } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::YarnTableGridDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { #ifdef KNIT TYarnData *YarnData; int x, y; TPoint sp; TSize vs = { 96, 76 }; int n = ARow*YarnTableGrid->ColCount+ACol; if (nItems->Count) { YarnData = (TYarnData *)Table->Items[n]; sp.x = Rect.Left+2; sp.y = Rect.Top+2; YarnData->Draw(YarnTableGrid->Canvas, sp, vs); TRect TextRect = TRect(Rect.Left, Rect.Top + (vs.cy + 4), Rect.Right, Rect.Bottom); x = ((vs.cx + 4) - YarnTableGrid->Canvas->TextWidth(YarnData->FileName)) / 2; YarnTableGrid->Canvas->TextRect(TextRect, TextRect.Left + x, TextRect.Top+5, YarnData->FileName); } #else TYarnData *YarnData; int x, y; TPoint sp; TSize vs = { 96, 76 }; int n = ARow*YarnTableGrid->ColCount+ACol; if (nItems->Count) { YarnData = (TYarnData *)Table->Items[n]; sp.x = Rect.Left+2; sp.y = Rect.Top+2+((vs.cy-YarnData->Width)>>1); YarnData->Draw(YarnTableGrid->Canvas, sp, vs); TRect TextRect = TRect(Rect.Left, Rect.Top + (vs.cy + 4), Rect.Right, Rect.Bottom); x = ((vs.cx + 4) - YarnTableGrid->Canvas->TextWidth(YarnData->FileName)) / 2; YarnTableGrid->Canvas->TextRect(TextRect, TextRect.Left + x, TextRect.Top+5, YarnData->FileName); } #endif } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::FileListBoxChange(TObject *Sender) { TYarnData *YarnData; int cnt = FileListBox->Items->Count; if (Table) { while (Table->Count) { YarnData = (TYarnData *)Table->First(); Table->Remove(YarnData); delete YarnData; } for (int i=0; i < cnt; i++) { YarnData = new TYarnData; if (YarnData) { if (YarnData->LoadFromFile(FileListBox->Items->Strings[i]) == EC_NONE) { Table->Add(YarnData); } else { delete YarnData; } } } if (cnt >= YarnTableGrid->ColCount*YarnTableGrid->RowCount) YarnTableGrid->RowCount = (cnt / 3) + 1; YarnTableGrid->Repaint(); } } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::YarnTableGridMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { AnsiString str; TYarnData *YarnData; TYarnInfor *YarnInfor; TGridCoord cd = YarnTableGrid->MouseCoord(X, Y); if (cd.X < 0 || cd.Y < 0) { YarnInforBar->Panels->Items[1]->Text = ""; YarnInforBar->Panels->Items[2]->Text = ""; YarnInforBar->Panels->Items[3]->Text = ""; YarnInforBar->Panels->Items[4]->Text = ""; YarnInforBar->Panels->Items[5]->Text = ""; YarnInforBar->Panels->Items[6]->Text = ""; YarnInforBar->Panels->Items[7]->Text = ""; return; } int Index = cd.X + (cd.Y * YarnTableGrid->ColCount); if (Index < Table->Count) { YarnData = (TYarnData *) Table->Items[Index]; YarnInforBar->Panels->Items[1]->Text = YarnData->FileName; YarnInfor = &YarnData->Infor; str = YarnData->Unit.Name(); YarnInforBar->Panels->Items[2]->Text = IntToStr(YarnInfor->Detail.Count) +" "+ str; if (YarnInfor->Detail.SZ) YarnInforBar->Panels->Items[3]->Text = "Z Twist"; else YarnInforBar->Panels->Items[3]->Text = "S Twist"; YarnInforBar->Panels->Items[4]->Text = IntToStr(YarnInfor->Detail.TYC) + " Twist Yarn"; YarnInforBar->Panels->Items[5]->Text = FloatToStr(YarnInfor->Detail.TPI) + " TPI"; if (YarnData->Dyed) YarnInforBar->Panels->Items[6]->Text = "Dyed"; else YarnInforBar->Panels->Items[6]->Text = "Not Dyed"; YarnInforBar->Panels->Items[7]->Text = IntToStr(YarnData->Colors) + " Colors"; } else { YarnInforBar->Panels->Items[1]->Text = ""; YarnInforBar->Panels->Items[2]->Text = ""; YarnInforBar->Panels->Items[3]->Text = ""; YarnInforBar->Panels->Items[4]->Text = ""; YarnInforBar->Panels->Items[5]->Text = ""; YarnInforBar->Panels->Items[6]->Text = ""; YarnInforBar->Panels->Items[7]->Text = ""; } } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::YarnTableGridDblClick(TObject *Sender) { #ifdef WEAVE TYarnData *YarnData; int Index = YarnTableGrid->Col + (YarnTableGrid->Row * YarnTableGrid->ColCount); bool IsProperChange; //½ºÄµ¹ÞÁö ¾ÊÀº½Ç¿¡¼­ ½ºÄµ¹ÞÀº ½Ç·Î ¹Ù²Ù´Â °ÍÀº ¸·±âÀ§ÇØ... if (Index < Table->Count) { if( (!YarnArrangeForm == NULL) && (YarnArrangeForm->sbDyeChange->Down) ){ int i = YarnArrangeForm->DyeGrid->Col; if(MainImageForm->Plan->Yarn->Choice[i].Data){ YarnData = (TYarnData *) Table->Items[Index]; IsProperChange = YarnData->Dyed; if((!MainImageForm->Plan->Yarn->Choice[i].Data->Dyed) && (IsProperChange)) YarnArrangeForm->DyeChange(NULL); else YarnArrangeForm->DyeChange(YarnData->FileName); } } else { YarnData = (TYarnData *) Table->Items[Index]; if (FOnYarnChange) FOnYarnChange(YarnData->FileName); } } #else TYarnData *YarnData; int Index = YarnTableGrid->Col + (YarnTableGrid->Row * YarnTableGrid->ColCount); if (Index < Table->Count) { YarnData = (TYarnData *) Table->Items[Index]; if (FOnYarnChange) FOnYarnChange(YarnData->FileName); } #endif } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::YarnTableGridMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if (Button == mbLeft && IsDrag) { int Index = YarnTableGrid->Col + (YarnTableGrid->Row * YarnTableGrid->ColCount); //if (Index < Table->Count) YarnTableGrid->BeginDrag(false); ---->¾à°£ÀÇ ¿¡·¯¶§¹®¿¡ //Drag±â´ÉÀ» ¸·¾ÒÀ½.. } } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::InitForm(bool drag) { IsDrag = drag; } //--------------------------------------------------------------------------- void __fastcall TYarnTableForm::DirectoryListBoxDblClick(TObject *Sender) { char *str1, *str2, *str3; AnsiString Astr1, Astr2; int i = DirectoryListBox->ItemIndex; if (i != -1) { Astr1 = DirectoryListBox->Directory; Astr2 = DirectoryListBox->Items->Strings[i]; str1 = Astr1.c_str(); str2 = Astr2.c_str(); str3 = StrPos(str1, str2); if (FOnDirChange) { if (str3==NULL) FOnDirChange(Astr2); else FOnDirChange(Astr1); } } } //---------------------------------------------------------------------------