combobox的操控問題 |
尚未結案
|
demo
一般會員 發表:14 回覆:14 積分:5 註冊:2003-01-13 發送簡訊給我 |
各位高手您好:
我想要把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 發送簡訊給我 |
引言: 各位高手您好: 我想要把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 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 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使用那一個副檔名](前面提過) |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |