//--------------------------------------------------------------------------- #include #pragma hdrstop #include "VStyleForm.h" #include "MainImage.h" #include "Vecdraw.h" #include "Main.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #define IDS_SAVE StringTable[0] #define IDS_DELETE StringTable[1] #define IDS_FILEERASE StringTable[2] #define IDS_FILEDELETE StringTable[3] //#define StringTable[4] TStyleLibForm *StyleLibForm; //--------------------------------------------------------------------------- __fastcall TStyleLibForm::TStyleLibForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::FormCreate(TObject *Sender) { StringTable.Create(DirectoryItem, Language, "StyleLib"); SetSmallFont(Font); sbSave1->Caption = IDS_SAVE; sbSave2->Caption = IDS_SAVE; sbDelete1->Caption = IDS_DELETE; sbDelete2->Caption = IDS_DELETE; Parent = MainForm; currentindex1 = 0; currentindex2 = 0; currentindex3 = 0; SpeedButton1->Visible = false; SpeedButton2->Visible = false; SpeedButton3->Visible = false; SpeedButton4->Visible = false; SpeedButton5->Visible = false; SpeedButton7->Visible = false; } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::FormClose(TObject *Sender, TCloseAction &Action) { ExitForm(); } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::FormShow(TObject *Sender) { // } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::InitForm() { SearchFile = new TSearchFile; SearchFile->FileName = "*.tex"; SearchFile->InitDirectory = DirectoryStyleLib; SearchFile->Make = true; SearchFile->SubDirectory = true; Data1 = new TList; Data2 = new TList; Data3 = new TList; UpdateComboBox(1); ComboBox1->ItemIndex = 0; UpdateComboBox(2); ComboBox2->ItemIndex = 0; UpdateComboBox(3); ComboBox3->ItemIndex = 0; UpdateLeftItems(); UpdateRightItems(); Visible = true; mirror = false; } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::ExitForm() { TDirectoryInfor *di; TFileInfor *fi = NULL; while(Data1->Count>0) { di = (TDirectoryInfor *) Data1->Last(); Data1->Remove(di); } delete Data1; while(Data2->Count>0) { di = (TDirectoryInfor *) Data2->Last(); for (int i = 0; i < di->pFileList->Count; i++) { fi = (TFileInfor *) di->pFileList->Items[i]; if (fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } } Data2->Remove(di); } delete Data2; while(Data3->Count>0) { di = (TDirectoryInfor *) Data3->Last(); for (int i = 0; i < di->pFileList->Count; i++) { fi = (TFileInfor *) di->pFileList->Items[i]; if (fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } } Data3->Remove(di); } delete Data3; delete SearchFile; VecDraw->bStyle = false; } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::UpdateComboBox(int combonumber) { TDirectoryInfor *di, *tdi; int i, cnt; switch (combonumber) { case 1: while(Data1->Count>0) { di = (TDirectoryInfor *) Data1->Last(); Data1->Remove(di); } SearchFile->Create(this); di = (TDirectoryInfor *) SearchFile->RootDirectory(); if (di->pDirectoryList) { cnt = di->pDirectoryList->Count; ComboBox1->Items->Clear(); for (i=0; ipDirectoryList->Items[i]; ComboBox1->Items->AddObject(tdi->Name, (TObject *)vsList); Data1->Add(tdi); } } break; case 2: while(Data2->Count>0) { di = (TDirectoryInfor *) Data2->Last(); Data2->Remove(di); } di = (TDirectoryInfor *) Data1->Items[ComboBox1->ItemIndex]; if (di->pDirectoryList) { cnt = di->pDirectoryList->Count; ComboBox2->Items->Clear(); for (i=0; ipDirectoryList->Items[i]; ComboBox2->Items->AddObject(tdi->Name, (TObject *)vsList); Data2->Add(tdi); } } break; case 3: while(Data3->Count>0) { di = (TDirectoryInfor *) Data3->Last(); Data3->Remove(di); } di = (TDirectoryInfor *) Data2->Items[ComboBox2->ItemIndex]; if (di->pDirectoryList) { cnt = di->pDirectoryList->Count; ComboBox3->Items->Clear(); for (i=0; ipDirectoryList->Items[i]; ComboBox3->Items->AddObject(tdi->Name, (TObject *)vsList); Data3->Add(tdi); } } break; } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::UpdateLeftItems() { TDirectoryInfor *di; TFileInfor *fi = NULL; HANDLE hFile = INVALID_HANDLE_VALUE; int ec = EC_NONE; TTexVersion ver; RGBQUAD rgb[2]; HDC hDC = NULL; Byte *tb; //=========== ¿ÞÂÊ ¸ÕÀú ¾÷µ¥ÀÌÆ® ÇØÁÖ°í di = (TDirectoryInfor *) Data2->Items[ComboBox2->ItemIndex]; for (int i = 0; i < di->pFileList->Count; i++) { fi = (TFileInfor *) di->pFileList->Items[i]; if ((fi->tBitmap = new TTexpiaBitmap) == NULL) {ec = EC_MEMORY_LACK; goto fail;} if ((hFile = CreateFile((SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name).c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) goto fail; if (!LoadFromTexpiaStyleTag(hFile, fi, &ver)) goto fail; rgb[0].rgbRed = 255; rgb[0].rgbGreen = 255; rgb[0].rgbBlue = 255; rgb[1].rgbRed = 0; rgb[1].rgbGreen = 0; rgb[1].rgbBlue = 0; //======== Tag º¹»çÇØ³õ±â if ((hDC = fi->tBitmap->CreateDC()) == NULL) {ec = EC_MEMORY_LACK; goto fail;} SetDIBColorTable(hDC, 0, 2, rgb); fi->tBitmap->DeleteDC(hDC); if ((fi->tBitmap->StartScanLine()) == false) {ec = EC_MEMORY_LACK; goto fail;} for (int y = 0; y < fi->tBitmap->Height; y++) { tb = fi->tBitmap->GetScanLine(y); for (int x = 0; x< fi->tBitmap->Width; x++) { tb[x] = tb[x]-1; } fi->tBitmap->PutScanLine(y); } fi->tBitmap->StopScanLine(); CloseHandle(hFile); hFile = INVALID_HANDLE_VALUE; } //========= ¿À¸¥ÂÊ µð·ºÅ丮 º¯°æÇØÁÖ°í // UpdateComboBox(3); // ComboBox3->ItemIndex = 0; /// ´Ù½Ã ±×·ÁÁÖ°í ³¡ StringGrid1->Repaint(); return; fail: if(fi->tBitmap)fi->tBitmap = NULL; if (hFile!=INVALID_HANDLE_VALUE) CloseHandle(hFile); if (ec == EC_NONE) EXCEPTION_MESSAGE_OK(EC_FILE_NOT_OPEN); else EXCEPTION_MESSAGE_OK(ec); } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::UpdateRightItems() { TDirectoryInfor *di; TFileInfor *fi = NULL; HANDLE hFile = INVALID_HANDLE_VALUE; int ec = EC_NONE; TTexVersion ver; RGBQUAD rgb[2]; HDC hDC = NULL; Byte *tb; di = (TDirectoryInfor *) Data3->Items[ComboBox3->ItemIndex]; for (int i = 0; i < di->pFileList->Count; i++) { fi = (TFileInfor *) di->pFileList->Items[i]; if ((fi->tBitmap = new TTexpiaBitmap) == NULL) {ec = EC_MEMORY_LACK; goto fail;} if ((hFile = CreateFile((SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name).c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) goto fail; if (!LoadFromTexpiaStyleTag(hFile, fi, &ver)) goto fail; rgb[0].rgbRed = 255; rgb[0].rgbGreen = 255; rgb[0].rgbBlue = 255; rgb[1].rgbRed = 0; rgb[1].rgbGreen = 0; rgb[1].rgbBlue = 0; //======== Tag º¹»çÇØ³õ±â if ((hDC = fi->tBitmap->CreateDC()) == NULL) {ec = EC_MEMORY_LACK; goto fail;} SetDIBColorTable(hDC, 0, 2, rgb); fi->tBitmap->DeleteDC(hDC); if ((fi->tBitmap->StartScanLine()) == false) {ec = EC_MEMORY_LACK; goto fail;} for (int y = 0; y < fi->tBitmap->Height; y++) { tb = fi->tBitmap->GetScanLine(y); for (int x = 0; x< fi->tBitmap->Width; x++) { tb[x] = tb[x]-1; } fi->tBitmap->PutScanLine(y); } fi->tBitmap->StopScanLine(); CloseHandle(hFile); hFile = INVALID_HANDLE_VALUE; } StringGrid2->Repaint(); return; fail: if(fi->tBitmap)fi->tBitmap = NULL; if (hFile!=INVALID_HANDLE_VALUE) CloseHandle(hFile); if (ec == EC_NONE) EXCEPTION_MESSAGE_OK(EC_FILE_NOT_OPEN); else EXCEPTION_MESSAGE_OK(ec); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { TDirectoryInfor *di; TFileInfor *fi; HDC hDC = NULL; TRect r; di = (TDirectoryInfor *) Data2->Items[ComboBox2->ItemIndex]; if (di->pFileList) { if (ARow*3 + ACol < di->pFileList->Count) { fi = (TFileInfor *) di->pFileList->Items[ARow*3 + ACol]; if ((hDC = fi->tBitmap->CreateDC()) == NULL) goto fail; BitBlt(StringGrid1->Canvas->Handle, Rect.Left+5, Rect.Top+5, fi->tBitmap->Width, fi->tBitmap->Height, hDC, 0, 0, NOTSRCCOPY); fi->tBitmap->DeleteDC(hDC); r.Left = Rect.Left+5; r.Top = Rect.Top+110; r.Right = Rect.Left+85; r.Bottom = Rect.Top+130; StringGrid1->Canvas->TextRect(r, Rect.Left+5, Rect.Top+115, fi->Name); } } fail: } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::StringGrid2DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { TDirectoryInfor *di; TFileInfor *fi; HDC hDC = NULL; TRect r; di = (TDirectoryInfor *) Data3->Items[ComboBox3->ItemIndex]; if (di->pFileList) { if (ARow*3 + ACol < di->pFileList->Count) { fi = (TFileInfor *) di->pFileList->Items[ARow*3 + ACol]; if ((hDC = fi->tBitmap->CreateDC()) == NULL) goto fail; BitBlt(StringGrid2->Canvas->Handle, Rect.Left+5, Rect.Top+5, fi->tBitmap->Width, fi->tBitmap->Height, hDC, 0, 0, NOTSRCCOPY); fi->tBitmap->DeleteDC(hDC); r.Left = Rect.Left+5; r.Top = Rect.Top+110; r.Right = Rect.Left+85; r.Bottom = Rect.Top+130; StringGrid2->Canvas->TextRect(r, Rect.Left+5, Rect.Top+115, fi->Name); } } fail: } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::ComboBoxChange(TObject *Sender) { UpdateStyleData(); } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::StringGrid1DblClick(TObject *Sender) { TDirectoryInfor *di; TFileInfor *fi; AnsiString path; if (Data2->Count > 0) { di = (TDirectoryInfor *) Data2->Items[ComboBox2->ItemIndex]; if(di->pFileList) { if (StringGrid1->Row*3 + StringGrid1->Col < di->pFileList->Count) { fi = (TFileInfor*) di->pFileList->Items[StringGrid1->Row*3 + StringGrid1->Col]; path = SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name; mirror = false; LoadToMainImage(path); } } } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::StringGrid2DblClick(TObject *Sender) { TDirectoryInfor *di; TFileInfor *fi; AnsiString path; if (Data3->Count > 0) { di = (TDirectoryInfor *) Data3->Items[ComboBox3->ItemIndex]; if(di->pFileList) { if (StringGrid2->Row*3 + StringGrid2->Col < di->pFileList->Count) { fi = (TFileInfor*) di->pFileList->Items[StringGrid2->Row*3 + StringGrid2->Col]; path = SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name; mirror = false; LoadToMainImage(path); } } } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::LoadToMainImage(AnsiString path) { TEXPIAFILEHEADER tpfh; int x, y; RGBQUAD rgb[256]; TPalette *spalette = NULL; TPItemImage *Image = MainImageForm->iMainImage; TTexpiaBitmap *temp = NULL; int ec = EC_NONE; HANDLE hFile = INVALID_HANDLE_VALUE; DWORD dwRead; bool vector, layer; WORD BitCount; if ((temp = new TTexpiaBitmap) == NULL) { ec = EC_MEMORY_LACK; goto fail; } if ((spalette = new TPalette)==NULL) { ec = EC_MEMORY_LACK; goto fail; } if ((hFile = CreateFile(path.c_str(),GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) { ec = EC_MEMORY_LACK; goto fail; } // Çì´õºÎÅÍ Àоî¿Í¼­ º¤ÅÍÆÄÀÏÀÎÁö º¤ÅÍ+ºñÆ®¸Ê ÆÄÀÏÀÎÁö¸¦ ÆÇ´Ü if (!ReadFile(hFile, &tpfh, sizeof(TEXPIAFILEHEADER), &dwRead, NULL)) goto fail; if (tpfh.Version.Number == 241) {// Vector¸¸ SaveµÈ ÆÄÀÏ if (!ReadFile(hFile, &spalette->UseColor, sizeof(Word), &dwRead, NULL)) goto fail; spalette->LoadFromFileHandle((int)hFile, 1); if (!ReadFile(hFile, &BitCount, sizeof(WORD), &dwRead, NULL)) goto fail; if (SetFilePointer(hFile, BitCount==8 ? 8000 : 24000, NULL, FILE_CURRENT)== 0xFFFFFFFF) goto fail; if (!ReadFile(hFile, &layer, sizeof(bool), &dwRead, NULL)) goto fail; if (!ReadFile(hFile, &vector, sizeof(bool), &dwRead, NULL)) goto fail; if (vector) VecDraw->InitMerge(hFile, 0, mirror, true); }else { // ÀÏ¹Ý ÆÄÀÏ (ºñÆ®¸Êµµ Àоî¿Â´Ù) // ÆÄÀÏ Çì´õºÎÅÍ ´Ù½Ã Àоî¾ß ÇÏ´Ï Æ÷ÀÎÅÍ µ¹·Á³õ´Â´Ù if (SetFilePointer(hFile, 0, NULL, FILE_BEGIN)==0xFFFFFFFF) goto fail; if ((ec = LoadFromTexpiaFile(hFile, spalette, tpfh, temp))!=EC_NONE) goto fail; if (!ReadFile(hFile, &layer, sizeof(bool), &dwRead, NULL)) goto fail; if (!ReadFile(hFile, &vector, sizeof(bool), &dwRead, NULL)) goto fail; if (vector) VecDraw->InitMerge(hFile, 0, mirror, true); } CloseHandle(hFile); if (spalette) { delete spalette; spalette = NULL; } if (temp) { delete temp; temp = NULL; } // bitmapÀº ÇÊ¿ä ¾ø´Ù return; fail: if (spalette) { delete spalette; spalette = NULL; } if (temp) { delete temp; temp = NULL; } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::DeleteOldData() { TDirectoryInfor *di; TFileInfor *fi; di = (TDirectoryInfor *) Data2->Items[currentindex2]; for (int j = 0; j < di->pFileList->Count; j++) { fi = (TFileInfor *) di->pFileList->Items[j]; if (fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } } di = (TDirectoryInfor *) Data3->Items[currentindex3]; for (int j = 0; j < di->pFileList->Count; j++) { fi = (TFileInfor *) di->pFileList->Items[j]; if (fi->tBitmap) { delete fi->tBitmap; fi->tBitmap = NULL; } } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::Normal1Click(TObject *Sender) { TDirectoryInfor *di; TFileInfor *fi; AnsiString path; if (Data2->Count > 0) { di = (TDirectoryInfor *) Data2->Items[ComboBox2->ItemIndex]; if(di->pFileList) { if (row1*3 + col1 < di->pFileList->Count) { fi = (TFileInfor*) di->pFileList->Items[row1*3 + col1]; path = SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name; mirror = false; LoadToMainImage(path); } } } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::Mirror1Click(TObject *Sender) { TDirectoryInfor *di; TFileInfor *fi; AnsiString path; if (Data2->Count > 0) { di = (TDirectoryInfor *) Data2->Items[ComboBox2->ItemIndex]; if(di->pFileList) { if (row1*3 + col1 < di->pFileList->Count) { fi = (TFileInfor*) di->pFileList->Items[row1*3 + col1]; path = SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name; mirror = true; LoadToMainImage(path); } } } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::Normal2Click(TObject *Sender) { TDirectoryInfor *di; TFileInfor *fi; AnsiString path; if (Data3->Count > 0) { di = (TDirectoryInfor *) Data3->Items[ComboBox3->ItemIndex]; if(di->pFileList) { if (row2*3 + col2 < di->pFileList->Count) { fi = (TFileInfor*) di->pFileList->Items[row2*3 + col2]; path = SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name; mirror = false; LoadToMainImage(path); } } } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::Mirror2Click(TObject *Sender) { TDirectoryInfor *di; TFileInfor *fi; AnsiString path; if (Data3->Count > 0) { di = (TDirectoryInfor *) Data3->Items[ComboBox3->ItemIndex]; if(di->pFileList) { if (row2*3 + col2 < di->pFileList->Count) { fi = (TFileInfor*) di->pFileList->Items[row2*3 + col2]; path = SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name; mirror = true; LoadToMainImage(path); } } } } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::Delete1Click(TObject *Sender) { TDirectoryInfor *di; TFileInfor *fi; AnsiString path; if (Data2->Count > 0) { di = (TDirectoryInfor *) Data2->Items[ComboBox2->ItemIndex]; if(di->pFileList) { if (StringGrid1->Row*3 + StringGrid1->Col < di->pFileList->Count) { if (!(Application->MessageBox(IDS_FILEERASE.c_str(), IDS_FILEDELETE.c_str(), MB_YESNO | MB_ICONQUESTION) == IDYES)) return; fi = (TFileInfor*) di->pFileList->Items[StringGrid1->Row*3 + StringGrid1->Col]; path = SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name; DeleteFile(path); } } } UpdateStyleData(); } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::Delete2Click(TObject *Sender) { TDirectoryInfor *di; TFileInfor *fi; AnsiString path; if (Data3->Count > 0) { di = (TDirectoryInfor *) Data3->Items[ComboBox3->ItemIndex]; if(di->pFileList) { if (StringGrid2->Row*3 + StringGrid2->Col < di->pFileList->Count) { if (!(Application->MessageBox(IDS_FILEERASE.c_str(), IDS_FILEDELETE.c_str(), MB_YESNO | MB_ICONQUESTION) == IDYES)) return; fi = (TFileInfor*) di->pFileList->Items[StringGrid2->Row*3 + StringGrid2->Col]; path = SearchFile->InitDirectory + "\\" + fi->Path + "\\" + fi->Name; DeleteFile(path); } } } UpdateStyleData(); } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::sbPreviousClick(TObject *Sender) { TSpeedButton *sb = (TSpeedButton *) Sender; switch (sb->Tag) { case 1: if (ComboBox1->ItemIndex == 0) return; ComboBox1->ItemIndex--; break; case 2: if (ComboBox2->ItemIndex == 0) return; ComboBox2->ItemIndex--; break; case 3: if (ComboBox3->ItemIndex == 0) return; ComboBox3->ItemIndex--; break; } UpdateStyleData(); } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::sbNextClick(TObject *Sender) { TSpeedButton *sb = (TSpeedButton *) Sender; switch (sb->Tag) { case 1: if (ComboBox1->ItemIndex == Data1->Count-1) return; ComboBox1->ItemIndex++; break; case 2: if (ComboBox2->ItemIndex == Data2->Count-1) return; ComboBox2->ItemIndex++; break; case 3: if (ComboBox3->ItemIndex == Data3->Count-1) return; ComboBox3->ItemIndex++; break; } UpdateStyleData(); } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::sbSaveClick(TObject *Sender) { DWORD dwWrite; HANDLE hFile = INVALID_HANDLE_VALUE; AnsiString FullName; TDirectoryInfor *di; TEXPIAFILEHEADER tpfh; TTexpiaBitmap *tag = NULL; RGBQUAD rgb[256]; HDC dcTemp = NULL; bool layer = false; TRect src; WORD bpp; AnsiString input; TSpeedButton *sb = (TSpeedButton *) Sender; if (!VecDraw->bSelected) return; if (sb->Tag == 1) di = (TDirectoryInfor *) Data2->Items[ComboBox2->ItemIndex]; else if (sb->Tag == 2) di = (TDirectoryInfor *) Data3->Items[ComboBox3->ItemIndex]; if ((input = InputBox("File Save", "Name", "")) == "") goto fail; FullName = SearchFile->InitDirectory + "\\" + di->Path + "\\" + di->Name + "\\" + input + ".tex"; tpfh.Version = TexVersion('P', 'T', 241); // 241ÀÌ¸é º¤Å͸¸ ¼¼À̺êµÈ°Å¿¡¿ä!!! // tb->GetColors(0, 256, rgb); if ((tag = new TTexpiaBitmap) == NULL) goto fail; MainImageForm->Palette->ToRGBQUAD(rgb, 256); tag->PutColors(0, 256, rgb); if (!(tag->Create(80, 100, 8, rgb))) goto fail; tag->FillRect(Rect(0, 0, 80, 100), clWhite); // Tag »ý¼º src = VecDraw->GetObjectRect(); if ((dcTemp = tag->CreateDC()) == NULL) goto fail; VecDraw->TagDraw(dcTemp, src, 4); // Vector Tag±×·ÁÁÖ±â tag->DeleteDC(dcTemp); dcTemp = NULL; if ((hFile = CreateFile(FullName.c_str(), GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) goto fail; if (!WriteFile(hFile, &tpfh, sizeof(TEXPIAFILEHEADER), &dwWrite, NULL)) goto fail; if (!WriteFile(hFile, &MainImageForm->Palette->UseColor, sizeof(Word), &dwWrite, NULL)) goto fail; MainImageForm->Palette->SaveToFileHandle((int)hFile); bpp = tag->BitsPerPixel; if (!WriteFile(hFile, &bpp, sizeof(WORD), &dwWrite, NULL)) goto fail; if (!tag->SaveToTexpiaFile(hFile, cmNone)) goto fail; if (!WriteFile(hFile, &layer, sizeof(bool), &dwWrite, NULL)) goto fail; VecDraw->SaveToFile(hFile, 4); CloseHandle(hFile); if (tag) { delete tag; tag == NULL; } UpdateStyleData(); return; fail: } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::UpdateStyleData() { currentindex1 = ComboBox1->ItemIndex; currentindex2 = ComboBox2->ItemIndex; currentindex3 = ComboBox3->ItemIndex; DeleteOldData(); UpdateComboBox(1); ComboBox1->ItemIndex = currentindex1; UpdateComboBox(2); ComboBox2->ItemIndex = currentindex2; UpdateComboBox(3); ComboBox3->ItemIndex = currentindex3; UpdateLeftItems(); UpdateRightItems(); } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::StringGrid1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TGridCoord grid = StringGrid1->MouseCoord(X, Y); col1 = grid.X; row1 = grid.Y; } //--------------------------------------------------------------------------- void __fastcall TStyleLibForm::StringGrid2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TGridCoord grid = StringGrid2->MouseCoord(X, Y); col2 = grid.X; row2 = grid.Y; } //---------------------------------------------------------------------------