線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1647
推到 Plurk!
推到 Facebook!

Form中屬性BorderIcons中biHelp......

答題得分者是:ccchen
kenji
一般會員


發表:32
回覆:44
積分:20
註冊:2002-08-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-11 23:09:12 IP:61.217.xxx.xxx 未訂閱
如我寫一個help我將如何點選「Form中屬性BorderIcons中biHelp」那個問號,連結到我寫的那一頁??
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-12 09:21:19 IP:203.217.xxx.xxx 未訂閱
當你點?時, 送出WM_SYSCOMMAND--SC_CONTEXTHELP之Message 之後用此問號點到某一元件時送出 WM_HELP 我們可以直接抓取WM_HELP來處理,以下提供一小Sample    1. FOrm上設定   BorderIcons = [biSystemMenu, biHelp]   BorderStyle = bsDialog    2. 寫一個FormWndProc如下, 並在FormCreate時 WIndowProc:=FormWndProc //如此所有Form 之message均會經由此
procedure TForm1.formWndProc(var Message: TMessage);
VAR 
  p:Tpoint;
  c:TWinControl;
begin
  if Message.Msg = WM_HELP then begin  //攔截WM_HELP
    p:=TWMHelp(message).HelpInfo.MousePos;  //取得MOUSE位置,
    c:=FindVCLWindow(p);  //找到該位置之WinControl
    showmessage(c.name);
  end
  else  //其餘之messag留給Default WndProc處理
    WndProc(Message);
end;
[NOTE] 由Help|Window SDK及Message.pas查一下HelpInfo之內容, 我只是簡單的拿Mousepos做為Demo 3.如果你有已製作好之help檔,且HelpContext編排正確則可 a. 在FormCreate時 application.HelpFile:='xxx.hlp'; b. 在wndproc中 application.HelpContext:=xxx
kenji
一般會員


發表:32
回覆:44
積分:20
註冊:2002-08-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-12 14:27:55 IP:61.217.xxx.xxx 未訂閱
我找不到FormWndProc這是要寫在那的丫~~是自已寫的??還是元件丫????
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-13 14:39:21 IP:203.217.xxx.xxx 未訂閱
引言: 我找不到FormWndProc這是要寫在那的丫~~是自已寫的??還是元件丫????
自己寫啊 寫一個FormWndProc如下, 並在FormCreate時WIndowProc:=FormWndProc 發表人 - CCCHEN 於 2002/10/13 14:41:17
kenji
一般會員


發表:32
回覆:44
積分:20
註冊:2002-08-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-13 23:58:16 IP:61.225.xxx.xxx 未訂閱
能不能再說清楚一點丫~~~~~我還是搞不懂耶~~~~
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-14 08:59:50 IP:61.219.xxx.xxx 未訂閱
一步一步來吧 你可以照這個做看看嗎 1. 在objectinspector中找到BorderStyle,於Combobox中選bsDialog   然後找到BorderIcons將biSystemMenu及biHelp設為Ture,其餘設為Flase    2.
Tform1=class(TForm)
...
  procedure FormCreate(Sender: TObject); //在Form上Doubleclick會產生此行
  procedure formWndProc(var Message: TMessage); //請照著keyin
public
  ...
end;    procedure TForm1.FormCreate(Sender: TObject);
begin
  WIndowProc:=FormWndProc; //請照著keyin
end;    //以下完全照著keyin
procedure TForm1.formWndProc(var Message: TMessage);
VAR 
  p:Tpoint;
  c:TWinControl;
begin
  if Message.Msg = WM_HELP then begin  
    p:=TWMHelp(message).HelpInfo.MousePos;
    c:=FindVCLWindow(p);  
    showmessage(c.name);  //可改此行去顯示你想顯示的東西
  end
  else  
    WndProc(Message);
end;
將程式執行起來, 當你點 ? 後再點Form上任何元件, 就會顯示元件名稱
系統時間:2024-07-08 15:32:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!