|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2008-02-25, 12:39 PM | #1 |
長老會員
|
教學 - 使用BCB 2006的DockTabSet1元件,設計滑動效果
小弟是以C++ Builder 2006寫的 這兩天才研究出來,所以粗略的跟大家分享心得 參考資料http://dn.codegear.com/article/33446 首先開一個新專案 放入TDockTabSet(DockTabSet1)和TPanel(Panel1)元件 TDockTabSet(DockTabSet1)元件的屬性如下: 語法:
ShrinkToFit = True Style = tsModernPopout TabPosition = tpRight DestinationDockSite = Panel1 語法:
Align = alLeft DockSite = True Width = 0 TMemo(Memo1)元件的屬性如下: 語法:
Align = alClient 語法:
BorderStyle = bsSizeToolWin DockSite = True DragKind = dkDock DragMode = dmAutomatic OldCreateOrder = False 加入Form1的Show事件,程式碼如下: 語法:
TForm2 *FD; int iFormCount = Screen->FormCount; // Clear existing forms (if they exist) for (int i=0; i < iFormCount; i++) { FD = dynamic_cast<TForm2 *>(Screen->Forms[i]); if (FD != NULL) { FD->Close(); // Forms are set to auto-free on close } } // Create New Forms // You can use either method; I just show both to show both. ;-) // Static Method FD = TForm2::CreateDockForm(clBlue); FD->ManualDock(Panel1); // Constructor Method FD = new TForm2(this, clGreen); FD->Show(); FD->ManualDock(Panel1, NULL, alTop); // Constructor Method FD = new TForm2(this, clRed); FD->ManualDock(Panel1, NULL, alRight); FD->Show(); // Static Method FD = TForm2::CreateDockForm(clWhite); FD->ManualDock(DockTabSet1); 語法:
if (Panel1->Width == 0) { Panel1->Width = 150; } Splitter1->Visible = True; Splitter1->Left = Panel1->Width; 語法:
if (Panel1->DockClientCount == 1) { Panel1->Width = 0; Splitter1->Visible = false; } 語法:
DockTabSet1->Visible = true; 語法:
if (DockTabSet1->Tabs->Count > 0) { DockTabSet1->Visible = true; } else { DockTabSet1->Visible = false; } 語法:
TRect lRect; TPoint lPoint; TForm2 *TFD; TFD = dynamic_cast<TForm2 *>(Source->Control); if (TFD != NULL) { Accept = true; lPoint = Panel1->ClientToScreen(Point(0, 0)); lRect.Top = lPoint.y; lRect.Left = lPoint.x; lPoint = Panel1->ClientToScreen(Point(150, Panel1->Height)); lRect.Bottom = lPoint.y; lRect.Right = lPoint.x; Source->DockRect = lRect; } 首先在Unit2.cpp檔案中TForm2 *Form2;下面加入 語法:
//--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner, const TColor aColor) : TForm(Owner) { Color = aColor; Caption = ColorToString(aColor); } 再將Form2設為動態載入(將Project1.cpp檔案這行Application->CreateForm(__classid(TForm2), &Form2);刪除) 加入Form2的Close事件,程式碼如下: 語法:
ManualFloat(Rect(0,0,0,0)); Action = caFree; 語法:
DragObject = new TDragDockObjectEx(this); DragObject->Brush->Color = clAqua; 語法:
TForm2 *TForm2::CreateDockForm(const TColor aColor) { TForm2 *TCF; TCF = new TForm2(Application); TCF->Color = aColor; TCF->Caption = ColorToString(aColor); TCF->Show(); return (TCF); } //--------------------------------------------------------------------------- 語法:
__fastcall TForm2(TComponent* Owner, const TColor aColor); static TForm2 *TForm2::CreateDockForm(const TColor aColor); |
__________________ 地獄變現記 [人身得來不易,願大家能尊重生命--勿傷胎命][好淫者請好自為之吧--割鳥] 南泉禪師道: 「道不屬知,不屬不知。知是妄覺,不知是無記。若真達不疑之道,猶如太虛,廓然蕩豁,豈可強是非邪?」 德山宣鑒禪師: 「如果明白無事,則勿妄求,妄求而得,亦非得也。汝但無事於心,無心於事,則虛而靈,空而妙。若毛端許,言之本末者,皆為自欺。何故?毫氂繫念,三塗業因。瞥爾情生,萬劫羈鎖。聖名凡號,盡是虛聲。殊相劣形,皆是幻色。汝欲求之,得無累乎?」 |
|
送花文章: 5469,
|
|
|
相似的主題 | ||||
主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
敎學 - 公開金鑰與數位憑證 | Chin-Wei | 網路疑難應用技術研討區 | 6 | 2007-07-14 09:44 AM |
疑問 - 公司網站主機一直發生問題 | smallear | 網路疑難應用技術研討區 | 11 | 2006-12-08 01:11 PM |