问题标签 [topendialog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sorting - 如何完全按照选择的顺序从 TOpenDialog 获取选定的文件?
我在 Delphi XE7 中使用了 TOpenDialog 组件,因为我想选择一个或多个文件。但是,在我选择它们并单击“确定”后,所选文件已按字母顺序(从 A 到 Z)存储在Files属性中,这是我不想要的。我在TOpenDialog控件和TStrings类型中都没有看到任何开关或选项。
我怎样才能让这个组件完全按照我想要的顺序存储选定的文件?
delphi - 使用 VCL 样式在 TOpenDialog 中出现异常/崩溃
在使用启用了 VCL 样式的简单 TOpenDialog 时,我遇到了崩溃/异常。
如果没有启用样式,对话框当然可以正常工作。C++ Builder 10 和 10.1 Professional 会出现此问题。
重现:
- 创建一个使用样式的简单 VCL 表单
- 在窗体中添加一个 TComboBox、一个 TButton 和一个 TOpenDialog
将以下代码添加到按钮的 OnClick 事件中
/li>运行应用程序,单击按钮并选择一个文件
- 对我来说,这会产生一个异常“系统资源不足”
此错误可以在 Windows 7 Enterprise 和 Windows 8.1 Pro 上重现。TSaveDialog 有同样的问题。
对我来说奇怪的是,关于这个例外,我在网上找不到类似的问题。在我看来,只需要 VCL 样式和 TOpenDialog 就可以了,我希望在网络上有更多关于这个的信息。
我只发现了一些远程相似的东西,但那里没有例外,也没有关于原生 VCL 样式的解决方案:
在 TOpenDialog 中右键单击文件时使用自定义样式显示无效字符
我还尝试禁用 SystemHooks shDialogs(请参阅屏幕截图),我在某处读到有关 VCL 样式的另一个问题,但无济于事。
* 编辑 2016/05/26 *
Remy Lebeau 要求获得 MCVE。我试图将所有内容都放在问题中,但为了清楚起见,这里有一个 MCVE 的摘要:
- 使用默认设置创建新的 VCL 项目
- 将 TComboBox、TButton 和 TOpenDialog 拖放到表单中
将以下代码添加到按钮的 OnClick 事件中:
/li>在项目选项中启用 VCL 样式“Smokey Quartz Kamri”
- 运行程序,按下按钮,选择任何文件并在 TOpenDialog 中选择 OK
在这里,这就是异常所需的全部内容。
在我看来,对 Execute() 的调用会弄乱一些 VCL 结构(仅在启用样式的情况下),然后访问另一个 VCL 项(在我的情况下为组合框)会导致崩溃。
我现在知道不是每个人都有这个崩溃。因此,如果这不是对你们每个人都 100% 可验证的示例,请原谅我。
但是我和我的同事不可能是唯一发生此崩溃的人(现在在具有 3 个不同操作系统版本的 4 台不同计算机上进行了测试),可以吗?
* 编辑 2016/05/27 *
关于 Tom Brunberg 的单步请求,异常发生在 WndProc 中的某处,在调用中地址 005459F4 的屏幕截图中。
如果我更进一步,我将登陆 TCustomCombo.WndProc 中的某个位置。由于 WndProc 中的重复循环,之后很难进一步跟踪,似乎无法到达异常触发的最终位置。
* 编辑 2016/05/27 秒 *
好的,我设法查明了坠机的确切位置。在VCL.Graphics 内的函数CopyBitmap 中。在第一个屏幕截图中,异常发生在以下行:
结果 := GDICheck(CreateCompatibleBitmap(ScreenDC, bmWidth, bmHeight))
在第二个屏幕截图中的函数 GDICheck() 中,变量 Value 在调试器中为零,因此又调用了函数 GDIError。在那里,ErrorCode 也为零,这导致调用 OutOfResources。
希望这有助于进一步缩小范围。
* 编辑 2016/07/19 *
由于这里似乎没有人有这个问题,我们给了它一个不同的尝试:我公司的一位同事用英语安装了新的 C++ Builder 10.1 Berlin(我认为可能是德国的 IDE 是罪魁祸首),然后第一件事就是安装,重新创建 StylesCrashTest 应用程序。结果是一样的,它在选择一个文件并在对话框中点击“打开”后立即崩溃。
我已经在这里上传了测试项目 http://fboom.me/file/9904e22ddd22b/StylesCrashTest.zip
和我们在这里生成的发布 exe http://fboom.me/file/368d0b62cc1a7/StylesCrashTest.exe
该 exe 已通过 virustotal.com 上的许多防病毒扫描程序进行测试。 https://www.virustotal.com/de/file/e96f2e7eb80c162c2e5998decc15f26615c9fc76efec73379dd2e2140e4eba08/analysis/1468952442/
如果你们可以测试 exe 和测试项目,这将很有帮助,这可能会导致问题与计算机相关或与已安装的 IDE/生成的 exe 相关。这当然只有在有人可以重现该问题的情况下。
使用此 exe,应用程序会在商业环境中的两台 Windows 7 x64 Enterprise 计算机上崩溃。但是,它不会在我的装有 Windows 8.1 x64 Prof. 的私人计算机上崩溃。
现在我处于死胡同,慕尼黑城外似乎没有人能够重现这个问题,但我们肯定在两台不同的计算机上都有它。
该问题也提交给 Embarcadero(需要登录): https ://quality.embarcadero.com/browse/RSP-15019
可悲的是,目前,这是我们使用 VCL 样式的一个商店停止器。
delphi - 如何使用 TOpenDialog 从外部设备(android 平板电脑、iphone)获取完整路径名
我遇到了以下链接中描述的相同问题,但是我使用的是 Delphi XE2:
Delphi - 如何使用 iPhone 作为图片源通过 OpenDialog 获取目录
如果有人可以提供任何帮助,将不胜感激。
delphi - 如何使 TSaveDialog 自定义 dpi 感知/可扩展?
使用 Delphi 2010,我使用资源模板方法自定义了 TSaveDialog,如 Delpi 的 ExtDlgs 中的 TOpenPictureDialog 所示。模板方法允许我在系统保存对话框中成功插入包含多个控件的表单。只要 Windows DPI 设置为 96,就可以正常工作。使用用户定义的(文本)缩放或 hdpi 监视器,插入的表单仅部分可见。这当然是由于 Form.Scaled = True 导致表单加上包含控件的缩放(变大)。目前,模板文件(例如 TOpenPictureDialog 中使用的默认文件)包含固定大小的对话框和静态文本元素,这些元素定义了插入表单将占用的空间。
我可以想到几种解决方法:
- 没有表单缩放(不是真正的 hdpi 监视器解决方案)
- 根据 Screen.PixelsPerInch/96 提供不同的模板:100% 125%、150% 200% 等)。
- 使用 IFileDialogCustomize 接口,但这对于我想要的来说还不够表达。
最好的解决方案可能是在对话框加载模板之前在内存中调整该模板的大小(基于 Screen.PixelsPerInch/96)。有类似的东西吗?
delphi - Delphi 我可以使用 TOpenDialog 自动登录到服务器上的共享地图吗
在计算机“A”上运行的程序想要从计算机“B”下载映射“M”中的文件“F”。我使用以下准备工作:
由于计算机“B”需要授权,我得到了 Windows-Security-对话框。我想通过自动提供正确的用户名和密码来避免这种情况。我想这个对话框的 API 中有一些东西可以在这里提供帮助,但我没有找到任何东西。
delphi - Delphi 10.3 中带有预览的文件打开对话框
我为 Delphi 10.3 进行了更改,其默认TOpenDialog
包含一个预览窗格。我进行了一些搜索,发现了IFileDialogCustomize
微软提供的自定义标准WinAPI
对话框的界面。我知道我必须使用OnSelectionChange
事件处理程序来修改窗格的图片。对我来说最大的问题是:如何访问预览窗格图像IFileDialogCustomize
?这个 ItemID 是什么?我在网上找不到这个问题的任何答案。有人知道答案吗?然后请与我和社区分享!:)
为了简洁起见,我用 ... 替换了一些代码片段,因为这些是微不足道的或依赖于应用程序的部分。
delphi - Delphi OpenDialog文件名显示问题
将 OpenDialog 组件放在新表单上,并将此代码放在 OnCreate 中
当应用程序运行时,对话框出现,文件名显示在 opendialog 中,但文件名突出显示并向右滚动(即使有足够的空间显示完整的文件名)。
它只显示突出显示的“ng filename.txt”。
有没有办法我可以“取消突出显示”文件名并将文本滚动回左侧,以便显示全名“This is a long filename.txt”?
如果我可以在 OpenDialog 显示后模拟/按下 home 键,问题就会得到解决,但以下选项似乎都不起作用。
或者
或者
如果我将这些代码片段放在 openDialog1.execute 之前,它似乎确实可以在我的 PC 上运行,但这是一个坏主意,因为对话框尚未打开,因此可能不会收到按键消息。
在 opendialog1.execute 调用之后尝试所有这些方法似乎没有任何作用。
c++ - 关闭程序时 TOpenDialog 中的异常
我使用TOpenDialog
的时候,关闭程序后,模块出现异常Vcl.Forms
。
我正在使用的程序:
例外:'在 0x008133a4 的访问冲突:读取地址 0x000000c4'
突出显示的是 line: if not FHandleCreated then