我最近在用c++ builder 6重新開發網路上已經流傳多年的DBook軟體,遇到一些難題,目前集中在三點:
第一個問題:我想動態修改一個StaticText控制元件的OnClick事件,如果滿足條件A,將將其置為Buttion1的OnClick事件OnButton1Click,否則就置為NULL。由于StaticText的Caption、Hint、Tag也會隨同修改,而其修改的次數會非常多,就想封裝成一個函式,函式的引數里帶有觸發事件,請問如何定義這個函式,函式體里的事件變數如何賦值?
第二個問題:ListBox點擊事件會觸發當前編輯檔案的關閉和新檔案的開啟,但是當前檔案不論選擇是否要繼續編輯,Click都會生效,其Index都已經指向新的檔案。不知道有沒有辦法實作像TreeView那樣的OnChanging方法,可以阻止變化的發生。
第三個問題:在TreeView節點滑動滑鼠,以一個伴隨滑鼠軌跡的半透明表單顯示節點的相關資訊(類似于Hint,但是用了表單)。但是半透明表單一旦ShowModal,TreeView的MouseMove就不起作用了。如何解決這個問題呢?Show也不行的,那樣半透明表單一閃即逝。
uj5u.com熱心網友回復:
void __fastcall Button1Click(TObject *Sender);
void __fastcall StaticText1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall TForm1::StaticText1Click(TObject *Sender)
{
ShowMessage("StaticText1Click");
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
this->StaticText1->OnClick = Button2Click;
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ShowMessage("Button2Click");
}
uj5u.com熱心網友回復:
ShowModal肯定不行,show后不delete也不會自己消失啊uj5u.com熱心網友回復:
我著急了,三個寫在一起,表達倉促。假若我寫一個函式,要動態呼叫引數,當引數等于NULL時,啥都不做,等于Button2Click時執行它。這個函式怎么定義、實作?我不知道引數怎么寫、怎么用。
uj5u.com熱心網友回復:
抱歉,我忘了說它是實時檢測滑鼠位置變化,節點變了,舊半透明表單關閉,創建新的,而不是變更原來表單內容和位置。uj5u.com熱心網友回復:
this->StaticText1->OnClick =NULL;單擊啥都不錯uj5u.com熱心網友回復:
//自定義函式void TMainFrm::ShowTips(AnsiString Tips,AnsiString Hint,void *Events,int KeepTime)
{
sTxt_EditTip->Caption=Tips;
sTxt_EditTip->Hint=Hint;
//sTxt_EditTip->OnClick=(void *)Events;
sTxt_EditTip->Tag=KeepTime;
}
事件A觸發
ShowTips(“純粹提示","純粹提示,點擊無效",NULL,5); //點擊 sTxt_EditTip無反應
事件B觸發
ShowTips(“含點擊效果提示","純粹提示,點擊有效",Button1Click,5); //點擊 sTxt_EditTip會觸發Button1Click
上面OnClick那一行已經被注釋掉,因為報錯,不知道怎么寫,或者函式定義就不對
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/112997.html
標籤:基礎類
