全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1249
推到 Plurk!
推到 Facebook!

combobox的操控問題

尚未結案
demo
一般會員


發表:14
回覆:14
積分:5
註冊:2003-01-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-05 17:30:14 IP:218.170.xxx.xxx 未訂閱
各位高手您好: 我想要把save file dialog的畫面上的檔案類型, 用程式控制改成我要的檔案類型,我用了CB_SETCURSEL message 在畫面上確實有換成我要的word file(*.doc,*.rtf),但在程式按下存檔後 存出的檔案確是*.txt的檔案格式,不知道為什麼會這樣,拜託各位高手求救... 謝謝,感激不盡... EX: 檔案類型 text file(*.txt) word file(*.doc,*.rtf) 原先default是在text file(*.txt) -> 我想要用sendmessage控制在word file(*.doc,*.rtf) 程式碼如下: procedure TForm1.Button1Click(Sender: TObject); var h: HWND; begin h:=FindWindow(nil, PChar(Edit1.Text)); if h <> 0 then begin EnumChildWindows(h, @EnumChildProc, 0); end; end; function EnumChildProc(h: hwnd; a: integer): Boolean; stdcall; var str: Array[0..1024] of Char; PText: PChar; b:integer; begin Result := true; if h <> 0 then begin GetClassName(h, str, 1024); SendMessage(h, WM_GETTEXT, 1024, integer(@str[0])); if str='text file(*.txt)' then SendMessage(h, CB_SETCURSEL, 1,0); end; end;
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-05 23:26:10 IP:211.20.xxx.xxx 未訂閱
引言: 各位高手您好: 我想要把save file dialog的畫面上的檔案類型, 用程式控制改成我要的檔案類型,我用了CB_SETCURSEL message 在畫面上確實有換成我要的word file(*.doc,*.rtf),但在程式按下存檔後 存出的檔案確是*.txt的檔案格式,不知道為什麼會這樣,拜託各位高手求救... 謝謝,感激不盡... EX: 檔案類型 text file(*.txt) word file(*.doc,*.rtf) 原先default是在text file(*.txt) -> 我想要用sendmessage控制在word file(*.doc,*.rtf)
demo 你好 1.當SaveDialog的Filter中的設定為唯一副檔名時,它會自動賦予該副檔名 如 選textFiel(*.txt)|*.txt==> 會加上.txt的副檔名 選Word File(*.Doc)|*.Doc ==> 會加上.Doc的副檔名 但選Word File(*.Doc,*.rtf)|*.Doc,*.rtf ==> 它會不知加那一個副檔名,此時saveDialog會檢查DefaultExt屬性有沒有設定,有則會 DefaultExt所指定的副檔名 所以,最好把 Filter改為 Word File(*.doc)|*.doc|Word File(*.rtf)|*.rtf... [green[很明確的告訴SaveDialog使用那一個副檔名 2.假設SaveDialog.Filter := 'Text Fiel(*.txt)|*.txt|Word File(*.doc)|*.doc|Word File(*.rtf)|*.rtf';[/green] 表示有三個選項,要指定那個選項為預設選項,只要使用SaveDialog.FilterIndex屬性即可,不必使用到sendMessage吧 如:預設希望是Word Field(*.doc) 時只要在SaveDialog.Execute之前設定SaveDialog.FilterIndex := 2 ;(第二個選項,好奇怪竟不是從0開始)
demo
一般會員


發表:14
回覆:14
積分:5
註冊:2003-01-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-06 08:59:25 IP:218.170.xxx.xxx 未訂閱
Chance36高手您好: 嗯,我懂您的意思了,但是我若是CALL另一隻(不是在本project內)專案時, 又該怎麼辦呢?除了用sendmessage之外還有沒有別的辦法呢? 呵呵...再問一個小問題,您說Word File(*.Doc,*.rtf)|*.Doc,*.rtf ==> 它會不知加那一個副檔名 那萬一真的project內的savedialog未定義DefaultEx時,會怎麼辦呀??? 真是太感謝您的回答了,感激不盡呀~~~~
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-06 15:55:31 IP:211.20.xxx.xxx 未訂閱
引言: Chance36高手您好: 嗯,我懂您的意思了,但是我若是CALL另一隻(不是在本project內)專案時, 又該怎麼辦呢?除了用sendmessage之外還有沒有別的辦法呢? 呵呵...再問一個小問題,您說Word File(*.Doc,*.rtf)|*.Doc,*.rtf ==> 它會不知加那一個副檔名 那萬一真的project內的savedialog未定義DefaultEx時,會怎麼辦呀???
demo 你好 1.不要稱呼[高手],真正的高手會不好意進來的,那麼你會錯失真正精闢的解答,而我不是高手,所以給你的也只是片片段段似是而非的回覆,是與非你可能要多加驗證才是。 2.如果要設定另一支程式(EXE)SaveDialog的預設選項,大概也只有SendMessage一途(我是看了你的貼文才知有這麼一招),但也僅止於變更預設選項而已,對於之後的動作,我想應該無法由另一支程式來左右吧(除非該程式有提供參數或訊息控制的功能)。 3.若savedialog未定義DefaultEx時,則SaveDialog就什麼也不做,你輸入什麼副檔名它就是什麼副檔名,不然就要用程式碼加以判斷並處理了。
Var
  Fn : String ;
Begin
  If SaveDialog1.Execute Then Begin
    Fn := SaveDialog1.FileName ;
    If ExtractFileExt(Fn ) <> 'doc' Then Begin  // 不是doc副檔名
      Fn  := ChangeFileExt(Fn , 'doc') ; // 更改為.doc
    End;
  End;
End;
不過你試想一種情境,假如你是負責存檔的SaveDialog ,而我選了Word File(*.doc,*.rtf) 輸入檔名為test ,此時你會將資料存為Test.doc 還Test.rtf呢?是否無法決定呢?因此根本之道就是[很明確的告訴SaveDialog使用那一個副檔名](前面提過)
系統時間:2024-05-02 13:19:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!