當我呼叫此檔案對話框時,它會顯示一個帶有 OPEN OPEN AS READONLY 按鈕的漂亮現代對話框。
如何洗掉以只讀方式打開按鈕功能?
OpenSaveFileDialog(editform,'','my|*.my','','Open my',FilSelez,True,False,True,True)
function OpenSaveFileDialog( Parent: TWinControl;
const DefExt,Filter,InitialDir,Title: string;
var FileName: string;
MustExist,OverwritePrompt,NoChangeDir,DoOpen: Boolean): Boolean;
var ofn: TOpenFileName;
szFile: array[0..MAX_PATH] of Char;
begin
Result := False;
FillChar(ofn, SizeOf(TOpenFileName), 0);
with ofn do
begin
lStructSize := SizeOf(TOpenFileName);
hwndOwner := Parent.Handle;
lpstrFile := szFile;
nMaxFile := SizeOf(szFile);
if (Title <> '') then
lpstrTitle := PChar(Title);
if (InitialDir <> '') then
lpstrInitialDir := PChar(InitialDir);
StrPCopy(lpstrFile, FileName);
lpstrFilter := PChar(StringReplace(Filter, '|', #0,[rfReplaceAll, rfIgnoreCase]) #0#0);
if DefExt <> '' then
lpstrDefExt := PChar(DefExt);
end;
if MustExist then
ofn.Flags := ofn.Flags or OFN_FILEMUSTEXIST;
if OverwritePrompt then
ofn.Flags := ofn.Flags or OFN_OVERWRITEPROMPT;
if NoChangeDir then
ofn.Flags := ofn.Flags or OFN_NOCHANGEDIR;
if DoOpen
then begin
if GetOpenFileName(ofn) then
begin
Result := True;
FileName := StrPas(szFile);
end;
end
else begin
if GetSaveFileName(ofn) then
begin
Result := True;
FileName := StrPas(szFile);
end;
end;
end;
uj5u.com熱心網友回復:
每次使用新 API 時,您總是閱讀其完整檔案。
在這種情況下,您訪問該GetOpenFileName函式的檔案,您會發現它只有一個引數,即 type 的結構OPENFILENAME。因此,您轉到此結構的檔案。
在此頁面,您在網路瀏覽器中按 Ctrl F,然后搜索“只讀”以快速找到這段話:
標志
一組可用于初始化對話框的位標志。當對話框回傳時,它會設定這些標志來指示用戶的輸入。該成員可以是以下標志的組合。
[...]
OFN_HIDEREADONLY 0x00000004
隱藏只讀復選框。
因此,您意識到您只需要添加此標志:
ofn.Flags := ofn.Flags or OFN_HIDEREADONLY;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433488.html
上一篇:Win32:什么是HRESULT0x80070002?
下一篇:使用反應鉤子更新類名
