亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ListBox自畫的另一種效果

2019-11-17 05:24:48
字體:
來源:轉載
供稿:網友

  本文代碼簡單實現了類似CnPack中的一個界面效果,利用TListBox的自畫。
演示圖片:
/Article/UploadFiles/200601/20060103023924211.gif
//---------------------------------------------------------------------------
// ListBox自畫的另一種效果
// by ccrun(老妖)
// info ccrun.com
//---------------------------------------------------------------------------
#include <vcl.h>
#PRagma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
    // ListBox的風格,要自畫必須選lbOwnerDrawFixed和lbOwnerDrawVariable
    lbxMain->Style = lbOwnerDrawFixed;
    // 去掉ListBox的邊框,可有可無
    lbxMain->Ctl3D = false;
    // ListBox的每一項的高度
    lbxMain->ItemHeight = 50;
    pStrList = new TStringList;
    // 往ListBox中添加些數據
    for(int i=0; i<10; i++)
    {
        lbxMain->Items->Add("ListBox Items of " + String(i));
        pStrList->Add("Second of " + String(i) + String((char)0x03) + "Third of " + String(i));
    }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::lbxMainDrawItem(TWinControl *Control, int Index,
      TRect &Rect, TOwnerDrawState State)
{
    // 填充的背景顏色
    lbxMain->Canvas->Brush->Color = clWhite;
    // 文字顏色
    lbxMain->Canvas->Font->Color = clBlack;
    // 填充背景
    lbxMain->Canvas->FillRect (Rect) ;
    // 圓角矩形的背景顏色
    lbxMain->Canvas->Brush->Color = TColor(0x00FFF7F7);
    // 圓角矩形的邊框顏色
    lbxMain->Canvas->Pen->Color = TColor(0x00131315);
    // 畫出圓角矩形
    lbxMain->Canvas->RoundRect(Rect.Left + 3, Rect.Top + 3,
            Rect.Right - 2, Rect.Bottom - 2, 8, 8);
    // 以不同的寬度和高度再畫一次,實現立體效果
    lbxMain->Canvas->RoundRect(Rect.Left + 3, Rect.Top + 3,
            Rect.Right - 3, Rect.Bottom - 3, 5, 5);
    // 假如是當前選中項
    if(State.Contains(odSelected))
    {
        // 選中項的背景顏色
        lbxMain->Canvas->Brush->Color = TColor(0x00FFB2B5);
        // 以不同的背景色畫出選中項的圓角矩形
        lbxMain->Canvas->RoundRect(Rect.Left + 3, Rect.Top + 3,
                Rect.Right - 3, Rect.Bottom - 3, 5, 5);
        // 選中項的文字顏色
        lbxMain->Canvas->Font->Color = clBlue;
        // 假如當前項擁有焦點
        if(State.Contains(odFocused))
            // 重畫焦點虛框,實際上就是擦除了原先的焦點虛框
            // 我看到CnPack的設置中好象沒有去除那個框. ccrun注
            ::DrawFocusRect(lbxMain->Canvas->Handle, &Rect);
    }
    // 畫出圖標
    ImageList1->Draw(lbxMain->Canvas, Rect.Left + 7,
            Rect.top + (lbxMain->ItemHeight - ImageList1->Height)/2, Index, true);
    // Item的第一行文字
    lbxMain->Canvas->TextOutA(Rect.Left + 32 + 10, Rect.Top + 4,
            lbxMain->Items->Strings[Index]);
    String strTemp = pStrList->Strings[Index];
    // Item的第二行文字
    lbxMain->Canvas->TextOutA(Rect.Left + 32 + 10, Rect.Top + 18,
            strTemp.SubString(1, strTemp.Pos((char)0x03) - 1).c_str());
    // Item的第三行文字
    lbxMain->Canvas->TextOutA(Rect.Left + 32 + 10, Rect.Top + 32,
            strTemp.SubString(strTemp.Pos((char)0x03) + 1, strTemp.Length()).c_str());
}
//---------------------------------------------------------------------------
// 點擊ListBox以后顯示點擊的項目
void __fastcall TMainForm::lbxMainClick(TObject *Sender)
{
    pnlStatusBar->Caption = " " + lbxMain->Items->Strings[lbxMain->ItemIndex];
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormShow(TObject *Sender)
{
    lbxMain->ItemIndex = 0;
    lbxMain->Repaint();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{
    delete pStrList;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::lbxMainDblClick(TObject *Sender)
{
    TEditForm *p = new TEditForm(MainForm);
    p->edtFirst->Text = lbxMain->Items->Strings[lbxMain->ItemIndex];
    String strTemp = pStrList->Strings[lbxMain->ItemIndex];
    p->edtSecond->Text = strTemp.SubString(1, strTemp.Pos((char)0x03) - 1);
    p->edtThird->Text = strTemp.SubString(strTemp.Pos((char)0x03) + 1, strTemp.Length());
    p->pnlTitle->Caption = " 當前ListBox選中項:" + String(lbxMain->ItemIndex);
    p->pnlTitle->Tag = lbxMain->ItemIndex;
    p->Left = Left + (Width - p->Width) / 2;
    p->Top = Top + (Height - p->Height) / 2;
    p->ShowModal();
    delete p;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::pnlTitleMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    // 移動沒有標題欄的窗體
    Refresh();
    if(Button == mbLeft)
    {
        ReleaseCapture();
        Perform(WM_SYSCOMMAND, 0xF017, 0);
    }    
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BTnMenUCloseClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnMenuUpDownClick(TObject *Sender)
{
    if(btnMenuUpDown->Caption == "6")
    {
        // 還原窗體
        btnMenuUpDown->Caption = "5";
        Height = 310;
    }
    else
    {
        // 上卷窗體
        btnMenuUpDown->Caption = "6";
        Height = 25;
    }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::imgLogoClick(TObject *Sender)
{
    // 打開 C++Builder研究 網站
    ShellExecute(Handle, NULL, "http://www.ccrun.com",
            NULL, NULL, SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
波霸ol色综合久久| 久久久久国色av免费观看性色| 成人网在线观看| 亚洲美女又黄又爽在线观看| 亚洲欧美综合另类中字| 亚洲欧美日韩第一区| 亚洲国产精品国自产拍av秋霞| 欧美成人精品h版在线观看| 国产精品自产拍在线观| 欧美日韩中文字幕在线视频| 在线成人免费网站| 精品视频久久久| 国产不卡精品视男人的天堂| 午夜精品一区二区三区在线视| 亚洲精品白浆高清久久久久久| 国产精品∨欧美精品v日韩精品| 亚洲精品自拍偷拍| 久久精品免费播放| 亚洲欧美日韩一区二区在线| 欧美老肥婆性猛交视频| 亚洲国产精品999| 成人福利网站在线观看| 亚洲综合社区网| 亚洲福利视频久久| 欧美性极品xxxx娇小| 欧美成人小视频| 91高潮精品免费porn| 2018日韩中文字幕| 国产精品国产亚洲伊人久久| 久久久久久国产精品美女| 在线观看视频亚洲| 456国产精品| 成人情趣片在线观看免费| 日韩免费观看视频| 亚洲天堂av网| 久久久亚洲国产| 日韩专区中文字幕| 精品国产一区二区三区久久狼5月| 中文字幕精品网| 538国产精品一区二区免费视频| 69av在线播放| 国产成人精品亚洲精品| 福利二区91精品bt7086| 欧美日韩国产精品一区| 最新69国产成人精品视频免费| 亚洲欧美在线免费观看| 国产精品丝袜久久久久久高清| 91成人国产在线观看| 国产99视频在线观看| 国产精品久久久久aaaa九色| 伊人亚洲福利一区二区三区| 国产精品久久久久久久一区探花| 亚洲精品色婷婷福利天堂| 中文字幕精品影院| 九九热精品视频| 青青草原一区二区| 亚洲欧美中文在线视频| 日韩av在线资源| 欧美午夜xxx| 久久久精品国产一区二区| 日韩不卡中文字幕| 91精品国产乱码久久久久久蜜臀| 日韩大陆欧美高清视频区| 狠狠色噜噜狠狠狠狠97| 奇米成人av国产一区二区三区| 亚洲精品国产欧美| 欧美不卡视频一区发布| 欧美小视频在线| 午夜精品久久久久久久久久久久久| 久久伊人免费视频| 91chinesevideo永久地址| 热re91久久精品国99热蜜臀| 日韩精品免费在线视频| 国产综合视频在线观看| 欧美日韩一区二区在线播放| 成人激情视频免费在线| 精品久久久久久久久久久| 欧美日韩激情网| 亚洲欧美日韩一区在线| 国产美女扒开尿口久久久| 一区二区欧美在线| 亚洲一区www| 色综合视频一区中文字幕| 欧美专区第一页| 欧美性猛交xxxx| 日韩有码片在线观看| 国产精品国产自产拍高清av水多| 国产精品久久久久久久久久| 亚洲国产精品美女| 国产精品女人网站| 亚洲一区二区三区四区在线播放| 一区二区三区无码高清视频| 国产精品成人aaaaa网站| 成人在线国产精品| 尤物九九久久国产精品的特点| 中文字幕无线精品亚洲乱码一区| 精品成人久久av| 亚洲一区二区福利| 欧美日韩国产成人在线| 欧美电影免费观看电视剧大全| 欧美午夜视频一区二区| 亚洲娇小xxxx欧美娇小| 成人激情视频网| 久久精品中文字幕一区| 久热在线中文字幕色999舞| 欧美日韩中国免费专区在线看| 亚洲精品自拍第一页| 国产999在线观看| 91久久在线播放| 国产精品偷伦免费视频观看的| 欧美精品在线网站| 亚洲人成伊人成综合网久久久| 欧美最顶级的aⅴ艳星| 亚洲欧美一区二区三区情侣bbw| 亚洲毛片在线观看.| 亚洲国产另类 国产精品国产免费| 欧美人成在线视频| 深夜成人在线观看| 亚洲精品狠狠操| 欧美孕妇毛茸茸xxxx| 色综合伊人色综合网| 91超碰中文字幕久久精品| 欧美国产日韩一区二区| 精品福利一区二区| 日韩免费观看av| 亚洲国产精品电影| 黑人巨大精品欧美一区二区| 成人中文字幕+乱码+中文字幕| 亚洲男人天堂九九视频| 91九色综合久久| 日韩欧美亚洲一二三区| 午夜精品一区二区三区在线视| 色黄久久久久久| 久久人人97超碰精品888| 北条麻妃一区二区三区中文字幕| 日韩在线观看免费高清完整版| 欧美高清激情视频| 日韩精品高清视频| 亚洲一区亚洲二区亚洲三区| 午夜精品美女自拍福到在线| 日韩欧美一区视频| 91影视免费在线观看| 亚洲欧美视频在线| 亚洲精品午夜精品| 国产精品久久久久久一区二区| 亚洲丁香久久久| 成人精品视频久久久久| 人九九综合九九宗合| 欧美色视频日本高清在线观看| 日韩精品在线免费播放| 亚洲成av人影院在线观看| 精品久久久久久久久久久| 欧美xxxx综合视频| 国产精品精品视频一区二区三区| 午夜精品一区二区三区av| 欧美福利视频在线观看| 日韩av一区在线| 78色国产精品| 日韩在线观看免费高清| 亚洲精品国产精品乱码不99按摩| 亚洲欧美福利视频| 久久精品国产96久久久香蕉| 欧美与黑人午夜性猛交久久久| 欧美精品videos性欧美|