⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeviewmain.cpp

📁 著名的基因芯片表达数据聚类软件。esein编写
💻 CPP
📖 第 1 页 / 共 4 页
字号:
        DestRect.Right  = DestRect.Left + LabelPanel->ClientWidth;

        //WholeZoomImage->Canvas->CopyRect(DestRect,LabelPanel->Canvas,LabelPabel->ClientRect);
        int i,X,Y;

        for (i=Cluster->MinCoor;i<=Cluster->MaxCoor;i++)
        {
            WholeZoomImage->Canvas->Font = ZoomFontDialog->Font;
            WholeZoomImage->Canvas->Font->Height = - ZoomImageScaleY;
            Y = DestRect.Top + ((i - Cluster->MinCoor) * ZoomImageScaleY);
            X = DestRect.Left + 5;
            WholeZoomImage->Canvas->TextOut(X,Y,((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->Name);
        }

        WholeZoomImage->SaveToFile(SaveDialog1->FileName);

        delete WholeZoomImage;
    }
}
//---------------------------------------------------------------------------



void __fastcall TTreeViewMainForm::ZoomScrollBoxClick(TObject *Sender)
{
    //GeneInfoForm->Show();
    //GeneInfoForm->Repaint();
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::Find(AnsiString FindString)
{
    int index = -1;
    int i;

    if ( (FindString.SubString(1,4) == "NODE") && (Cluster->TopNode != NULL) )
    {
        TGeneTreeNode *MatchedNode = Cluster->TopNode->FindNode(FindString);
        if (MatchedNode != NULL)
        {
            ResetNode();
            Cluster->BestNode = MatchedNode;
            Cluster->BestNode->Limits(&Cluster->MinCoor,&Cluster->MaxCoor);
            MakeZoom();
            //TreeViewMainForm->Caption = "Gene Tree View " + Cluster->BestNode->Data->ID + " " + AnsiString(Cluster->BestNode->Corr);

        }
    }
    else
    {
        for (i=LastIndex+1;i<Cluster->GeneNames->Count;i++)
        {
            if ((Cluster->GeneNames->Strings[i].UpperCase()).Pos(FindString.UpperCase()) > 0)
            {
               index = i;
               i = Cluster->GeneNames->Count;
            }
        }

        if (index > -1)
        {
           if (Cluster->BestNode != NULL)
           {
              TreeImage->Canvas->Pen->Color = clBlack;
              Cluster->BestNode->Draw(TreeImage, ImageScaleY);
           }
           Cluster->MinCoor = index;
           Cluster->MaxCoor = index;
           Cluster->Include(index, index);
           MakeZoom();
        }

        LastIndex = index;
    }
    SetOverviewScrollPos();
}


void __fastcall TTreeViewMainForm::Gene1Click(TObject *Sender)
{
    FindForm->Show();
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::Help1Click(TObject *Sender)
{
    HelpForm->Show();
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::About1Click(TObject *Sender)
{
    AboutForm->Show();
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::ArrayTreeSplitterMoved(TObject *Sender)
{
    MakeArrayTree();
    LabelPanel->Top = ArrayLabelImage->Height + ArrayLabelSplitter->Height +
        ArrayTreeImage->Height + ArrayTreeSplitter->Height;
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::ArrayLabelSplitterMoved(TObject *Sender)
{
    MakeArrayLabels();
    OuterLabelPanel->Top = ArrayLabelImage->Height + ArrayLabelSplitter->Height +
        ArrayTreeImage->Height + ArrayTreeSplitter->Height;
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::ArrayTreePanelResize(TObject *Sender)
{
    ArrayTreeImage->Picture->Bitmap->Width = ArrayTreePanel->Width;
    ArrayTreeImage->Picture->Bitmap->Height = ArrayTreePanel->Height;
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::ArrayLabelPanelResize(TObject *Sender)
{
    ArrayLabelImage->Picture->Bitmap->Width = ArrayLabelPanel->Width;
    ArrayLabelImage->Picture->Bitmap->Height = ArrayLabelPanel->Height;
}
//---------------------------------------------------------------------------


void __fastcall TTreeViewMainForm::ScrollBar1Change(TObject *Sender)
{
    //CentralPanel->Top = -ScrollBar1->Position;
    ZoomImage->Top = -ScrollBar1->Position;
    LabelPanel->Top = -ScrollBar1->Position;
}
//---------------------------------------------------------------------------
void __fastcall TTreeViewMainForm::CentralPanelResize(TObject *Sender)
{
    if (CentralPanel->Height > CentralScrollBox->ClientHeight)
    {
        ScrollBar1->Visible = true;
        ScrollBar1->Min =  0;
        ScrollBar1->Max =  CentralPanel->Height -CentralScrollBox->ClientHeight;
    }
    else
    {
        ScrollBar1->Visible = false;
    }
}
//---------------------------------------------------------------------------



void __fastcall TTreeViewMainForm::Splitter3Moved(TObject *Sender)
{
    SmallGeneImage->Left = Splitter3->Left + Splitter3->Width;
    Redo();
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::SaveList1Click(TObject *Sender)
{
    if (Cluster->BestNode != NULL)
    {
       char FileRoot[100];
       fnsplit(OpenDialog1->FileName.c_str(),NULL,NULL,FileRoot,NULL);
       SaveListDialog->FileName = AnsiString(FileRoot) + "_" + Cluster->BestNode->Data->ID
            + ".txt";
    }

    if (SaveListDialog->Execute())
    {
        int i;
        TStringList *IDList = new TStringList();

        for (i=Cluster->MinCoor;i<=Cluster->MaxCoor;i++)
        {
            AnsiString ID =
                ((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->ID;
            IDList->Add(ID);
        }
        IDList->SaveToFile(SaveListDialog->FileName);
        delete IDList;
    }
}
//---------------------------------------------------------------------------

void __fastcall TTreeViewMainForm::SaveData1Click(TObject *Sender)
{
    if (Cluster->BestNode != NULL)
    {
       char FileRoot[100];
       fnsplit(OpenDialog1->FileName.c_str(),NULL,NULL,FileRoot,NULL);
       SaveDataDialog->FileName = AnsiString(FileRoot) + "_" + Cluster->BestNode->Data->ID
            + ".txt";
    }

    if (SaveDataDialog->Execute())
    {
        int i,j;
        TStringList *DataList = new TStringList();
        AnsiString Line;

        Line = Cluster->UniqueID + "\tNAME";

        if (Cluster->UniqueID == "ID")
        {
            Line = "UID\tNAME";
        }
        
        for (j=0;j<Cluster->Columns;j++)
        {
            Line += "\t" +
            Cluster->Arrays->Strings[j];
        }

        DataList->Add(Line);

        for (i=Cluster->MinCoor;i<=Cluster->MaxCoor;i++)
        {
            Line =
                ((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->ID +
                "\t" +
                ((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->Name;
                for (j=0;j<Cluster->Columns;j++)
                {
                    Line += "\t";
                    if (((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->Mask[j])
                    {
                        Line += AnsiString(((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->Data[j]);
                    }
                }
            DataList->Add(Line);
        }
        DataList->SaveToFile(SaveDataDialog->FileName);
        delete DataList;
    }
}

void __fastcall TTreeViewMainForm::MakeSimplePS()
{

if (SavePSDialog->Execute())
{
TStringList *File = new TStringList();

//
// PostScript Header
//

File->Add("%!PS-Adobe-3.0");
File->Add("%%Creator: GeneClust1.0");
File->Add("%%CreationDate: Fri Jul 31 12:35:39 1998");
File->Add("%%Pages: (atend)");
File->Add("%%EndComments");
File->Add("%%BeginSetup");
File->Add("/ln { newpath moveto lineto stroke closepath } bind def");
File->Add("/tx { newpath moveto show closepath } bind def");
File->Add("/sl { setlinewidth } def");
File->Add("/sc { setlinecap } def");
File->Add("/sr { setrgbcolor } def");
File->Add("/sf { exch findfont exch scalefont setfont } def");
File->Add("/tr { translate } def");
File->Add("/sp { 1 sc 1 sl 0.0 0.0 0.0 sr 18.00000 13.00000 tr 0.96000 0.98205 scale tr } def");

AnsiString Temp = "/fillbox {newpath moveto " +
    AnsiString(ZoomImageScaleX) + " 0 rlineto 0 " +
    AnsiString(ZoomImageScaleY) + " rlineto -" +
    AnsiString(ZoomImageScaleX) + " 0 rlineto closepath fill} def";

File->Add(Temp);

File->Add("%%EndSetup");
File->Add("%%Page: tree 1");
File->Add("%%PageResources: (atend)");
File->Add("%%BeginPageSetup");
File->Add("/pgsave save def");
File->Add("%%EndPageSetup");
File->Add("0 setlinewidth");
File->Add("/Courier findfont");
Temp =  AnsiString(ZoomImageScaleY) + " scalefont";
File->Add(Temp);
File->Add("setfont");

int i,j,x,y;

double Red, Green, Blue, Val;

AnsiString Name;

for (i=Cluster->MinCoor;i<=Cluster->MaxCoor;i++)
{
    Name =
        ((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->Name;


        TReplaceFlags Flags;
        Flags << rfReplaceAll;


        Name = StringReplace(Name,"(","",Flags);
        Name = StringReplace(Name,")","",Flags);

        for (j=0;j<Cluster->Columns;j++)
        {
            x = j * ZoomImageScaleX;
            y = (i - Cluster->MinCoor) * ZoomImageScaleY;

            if (((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->Mask[j])
            {
                Red = 0.0;
                Green = 0.0;
                Blue = 0.0;

                Val = ((TGeneTreeNode *)Cluster->Genes->Objects[i])->Data->Data[j];
                if (Val > 0)
                {
                    Red = max(min(1.0,Val / ImageContrast),0.0);
                }
                else
                {
                    Green =  max(min(1.0,-Val / ImageContrast),0.0);
                }
            }
            else
            {
                Red = 0.5;
                Green = 0.5;
                Blue = 0.5;
            }

                TFloatFormat Format = ffFixed;
                AnsiString GreenString = FloatToStrF(Green,Format,6,4);
                AnsiString RedString = FloatToStrF(Red,Format,6,4);
                AnsiString BlueString =  FloatToStrF(Blue,Format,6,4);
                Temp = RedString + " " + GreenString + " " + BlueString
                    + " setrgbcolor";
                File->Add(Temp);
                Temp = AnsiString(x) + " " + AnsiString(y) + " fillbox";
                File->Add(Temp);
        }

        x = ZoomImageScaleX * Cluster->Columns + 10;
        y = (i - Cluster->MinCoor) * ZoomImageScaleY;

        File->Add("0.0 setgray");
        Temp = AnsiString(x) + " " + AnsiString(y) + " moveto";
        File->Add(Temp);
        Temp = "(" + Name + ") show";
        File->Add(Temp);
}

//Temp = "%%BoundingBox: 0 0 " + AnsiString(Cluster->Columns * ZoomImageScaleX + 1000) + AnsiString(" ")
//    + AnsiString(ZoomImageScaleY * (Cluster->MaxCoor - Cluster->MinCoor + 1));

//File->Insert(3,Temp);

File->SaveToFile(SavePSDialog->FileName);
delete File;
}
}


void __fastcall TTreeViewMainForm::SavePSAll(AnsiString PSFileName)
{

int ScaleX, ScaleY;

TGeneTreeNode *Node;

int MinC, MaxC;

if (SavePSAllForm->UseSelectedCheckBox->Checked == true)
{
    Node = Cluster->BestNode;
    MinC = Cluster->MinCoor;
    MaxC = Cluster->MaxCoor;
}
else
{
    Node = Cluster->TopNode;
    MinC = 0;
    MaxC = Cluster->Rows-1;
}

try
{
    ScaleX = SavePSAllForm->XBlockSizeEdit->Text.ToInt();
    ScaleY = SavePSAllForm->YBlockSizeEdit->Text.ToInt();
}
catch (EConvertError &E)
{
    ScaleX = 8;
    ScaleY = 8;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -