lena
一般會員
發表:12 回覆:13 積分:5 註冊:2004-04-19
發送簡訊給我
|
雖然BCB有提供月曆的元件
但是我想要自己寫出月曆的程式
請問大家,有寫有寫過嗎?
可以提供一下...謝謝了
|
andychang1690
資深會員
發表:20 回覆:694 積分:442 註冊:2003-03-14
發送簡訊給我
|
lena:已經有那麼多好用的月曆元件,妳要自己寫的目的何在?
我有以TCCalendar改寫過一個程式(非元件),是要處理中華民國年
及西元的顯示問題而已,而且這隻程式只用到一個地方過而已。
台灣的飯店。 Andy Chang
------ Andy Chang
|
lena
一般會員
發表:12 回覆:13 積分:5 註冊:2004-04-19
發送簡訊給我
|
因為元件裡面沒辦法把資料庫有資料的日期顯示出來,沒資料的日期反白....
所以想說自己寫程式
|
andychang1690
資深會員
發表:20 回覆:694 積分:442 註冊:2003-03-14
發送簡訊給我
|
lena:那妳可以自己試試,TCCalendar原始程式位置
BCB->Examples->Controls->Source->CCalendar.cpp
這就是元件盤上TCCalendar的元件Source。
請參考! Andy Chang
------ Andy Chang
|
andychang1690
資深會員
發表:20 回覆:694 積分:442 註冊:2003-03-14
發送簡訊給我
|
lena:我找到早期我寫過飯店預約訂房程式跟妳的要求有點像,
我只說明當時我的作法,給妳參考一下:
我拉TEdit及TUpDown年月的選項當然輸入資料要限制像月只能1至12月。
一個Panel做底,.h檔宣告
const int DateCOUNT=42; // 一月的顯示總數
const int DateROW=7; // 一行個數
const int DateCOL=6; // 一頁行數
const int POSDOT=6; // 間隔點數
struct MyDate
{
public:
TPanel *ODate1;
TLabel *ODay1;
TComboBox *OLevel1;
int Count; // 計錄房間序號陣列
void __fastcall ODateClick(TObject *Sender);
};
public: // User declarations
MyDate DateArr[DateCOUNT]; // 宣告
--------------------------------------------------------------
畫面上是從星期日起至星期六止,所以每月最多只有六列,所以
DateCOUNT=42 是6x7
.Cpp
這是動態產生月曆
for (int i=0;iDateArr[i].ODateClick;
DateArr[i].ODate1->BevelInner=bvRaised; //bvLowered;
DateArr[i].ODate1->BevelOuter=bvRaised;
DateArr[i].ODate1->BevelWidth=1;
DateArr[i].ODate1->Color=clYellow;
DateArr[i].ODate1->BorderStyle=bsSingle;
DateArr[i].ODate1->Visible=false;
DateArr[i].ODate1->Width=70;
DateArr[i].ODate1->Height=50;
DateArr[i].ODate1->Left=0 72*(nRowÚteROW) POSDOT;
DateArr[i].ODate1->Top=52 50*(nColÚteCOL) 1; // POSDOT; DateArr[i].ODate1->Parent=this;
DateArr[i].ODay1->Parent=DateArr[i].ODate1;
DateArr[i].OLevel1->Parent=DateArr[i].ODate1; DateArr[i].ODay1->Left=Label9->Left;
DateArr[i].ODay1->Height=Label9->Height;
DateArr[i].ODay1->Width=Label9->Width;
DateArr[i].ODay1->Top=Label9->Top;
DateArr[i].ODay1->Font=Label9->Font;
DateArr[i].ODay1->Alignment=Label9->Alignment;
DateArr[i].ODay1->DateArr[i].ODateClick; DateArr[i].OLevel1->Left=ComboBox1->Left;
DateArr[i].OLevel1->Height=ComboBox1->Height;
DateArr[i].OLevel1->Width=ComboBox1->Width;
DateArr[i].OLevel1->Top=ComboBox1->Top;
DateArr[i].OLevel1->Color=ComboBox1->Color;
DateArr[i].OLevel1->Font=ComboBox1->Font;
DateArr[i].OLevel1->Items->Clear();
nRow ;
if (nRow>=DateROW)
{
nRow=0;
nCol ;
}
}
接著我讀入資料將上面設定顯示加一加設一設就OK了!
TComboBox是我必須將該日訂房的房間等級數量做一簡明Show出,
使用者也可以按該日Show明細,因為我有ODateClick(TObject *Sender);
導引!
請參考!
Andy Chang
------ Andy Chang
|
lena
一般會員
發表:12 回覆:13 積分:5 註冊:2004-04-19
發送簡訊給我
|
Andy Chang 你好
謝謝你提供程式碼給我,但是我對於你介面的設計方式
還有些不懂,可以貼圖片給我嗎?
不好意思哦!!
|