标签: topendialog

为什么要尝试打开产生大量线程的TOpenDialog?

我有一个非常简单的表格,上面有一个TOpenDialog和一个按钮.当我按下按钮时,它会在对话框上调用Execute.如果我在调试器中观察,打开对话框的行为会产生类似于14个线程的行为,当我关闭对话框时它们也不会消失.

任何人都知道这是怎么回事?

windows delphi multithreading topendialog

16
推荐指数
1
解决办法
534
查看次数

Delphi 7和Vista/Windows 7常见对话 - 事件不起作用

我正在尝试修改Delphi 7 Dialogs.pas以访问较新的Windows 7打开/保存对话框(请参阅使用Delphi创建Windows Vista Ready应用程序).我可以使用建议的修改显示对话框; 但是,诸如OnFolderChange和OnCanClose之类的事件不再起作用.

这似乎与将Flags:= OFN_ENABLEHOOK更改为Flags:= 0有关.当Flags设置为0时,将绕过TOpenDialog.Wndproc,并且不会捕获相应的CDN_xxxxxxx消息.

任何人都可以建议对D7 Dialogs.pas进行进一步的代码修改,既可以显示更新的常用对话框,又可以维护原始控件的事件功能?

谢谢...

delphi openfiledialog delphi-7 topendialog

10
推荐指数
1
解决办法
7405
查看次数

右键单击TOpenDialog中的文件时,使用自定义样式会显示无效字符

请参阅以下步骤以重现.适用于XE2,但不适用于XE8.

  1. 创建一个新的VCL表单应用程序 - Delphi
  2. 在表格上放置一个TButton和一个TOpenDialog
  3. 在按钮OnClick事件调用中OpenDialog1.Execute
  4. 运行程序,打开文件对话框,右键单击文本文件=>显示菜单项确定
  5. 转到项目/选项/应用程序/外观.启用并选择自定义样式(例如"Ruby Graphite")并重新编译
  6. 运行程序,打开文件对话框,右键单击文本文件=>不正确显示菜单项(显示无效字符)

使用XE8订阅更新1(Windows从8.1升级到10)进行测试

delphi topendialog vcl-styles windows-10 delphi-xe8

10
推荐指数
1
解决办法
862
查看次数

使用Delphi创建文件夹选择对话框的最常用方法是什么?

尽管通过TOpenDialog提供了文件选择对话框,但在Delphi 2009中似乎没有可用于创建文件夹选择对话框的简单组件.

使用Delphi创建现代文件夹选择对话框的最常用方法是什么?

delphi folderbrowserdialog delphi-2009 topendialog

7
推荐指数
1
解决办法
3779
查看次数

使用Delphi自定义预览对话框

我需要在Windows 7/Vista的文件打开对话框中预览多种CAD格式.在过去,我使用了Delphi Preview Open Dialog,我可以注册并实现我必须预览的CAD格式.我发现了一些关于如何在Vista中创建预览处理程序的文章,遗憾的是这对我不起作用.我想知道是否有一种方法可以抓住我创建的对话框的IPreviewHandler接口

delphi preview pane topendialog windows-vista

6
推荐指数
1
解决办法
2765
查看次数

意外的tStringGrid.OnFixedCellClick触发tOpenDialog

我在Windows 10上使用Delphi Berlin.我需要在基于tStringGrid的tForm上使用tOpenDialog.

当我双击一个与打开的对话框上的固定列或行重叠的文件onFixedCellClick事件在打开对话框消失后立即自动触发.在下图中,文件位于第一行的固定行的相同位置.

在此输入图像描述

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    OpenDialog1: TOpenDialog;
    procedure FormClick(Sender: TObject);
    procedure StringGrid1FixedCellClick(Sender: TObject; ACol, ARow: Integer);
    procedure FormCreate(Sender: TObject);
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Options := StringGrid1.Options + [goFixedColClick, goFixedRowClick];
end;

procedure TForm1.FormClick(Sender: TObject);
begin
  OpenDialog1.Execute;
end;

procedure TForm1.StringGrid1FixedCellClick(Sender: TObject; ACol, ARow: Integer);
begin
  Caption := '';
end;
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,我可以通过移动对话框窗口或单击文件一次并单击打开按钮来处理此问题,但我无法保证将使用此功能的其他人会这样做.

是什么原因以及如何解决这个问题?

delphi topendialog tstringgrid

5
推荐指数
1
解决办法
277
查看次数

在Windows 7中打开/保存对话框时应用程序挂起

我有一个由Delphi 7编写的应用程序,这个应用程序在Windows XP中运行良好.

现在我已经将我的电脑升级到Windows 7,并且除了当我点击执行TOpenDialog和TSaveDialog然后挂起的按钮时,每个都可以正常使用这个应用程序.

在Windows 7中使用delphi 7时有人有这个问题吗?

delphi delphi-7 topendialog windows-7 tsavedialog

4
推荐指数
1
解决办法
2984
查看次数

Delphi 7 - 窗体中的嵌入式文件打开对话框

有谁知道是否可以在自己的表单中嵌入文件打开对话框?

我们有一个选项卡式对话框,在其中一个选项卡上,我们希望用户能够浏览具有与标准打开对话框相同功能的文件,例如'查找'组合框,放置栏,shell文件列表,文件名组合名称完成等

我已经看过用一些第三方组件重新创建对话框,即Jam Shell Browser Components

我可以通过这种方式获得大部分功能,但我遗漏了一些东西,比如地方栏和文件名自动完成\建议

delphi delphi-7 topendialog opendialog

2
推荐指数
1
解决办法
3968
查看次数

OpenDialog没有出现在Delphi MultiThreaded应用程序中

我试图在新线程中使用openDialog,但它做了如此奇怪的行为..

如果我把if opendialog.execute然后放在create构造函数中,如下所示:

constructor TChatMemberThread.Create(Name: string);
begin
  inherited Create(True);
  FName := Name;
  FreeOnTerminate := True;
  Opendialog := TOpenDialog.create(nil);
  if opendialog.execute then
    for 0 to opendialog.filescount do
      somecodeishere
    end;
end;
Run Code Online (Sandbox Code Playgroud)

opendialog正常打开但是当我把它放在线程的执行生成器中时它根本没有打开!!

我是线程的初学者,所以任何人都可以向我解释发生了什么?

提前致谢 .

[编辑]

unit Unit1;

interface

uses
  Classes,Dialogs,ComCtrls,SysUtils,DCPcrypt2, DCPmd5;

type
  TOpenThread = class(TThread)
  private
    { Private declarations }
    OpenDlG : TOpenDialog;
    LI : TListItem;
    Procedure Openit;
    Function MD5it(Const filename : string ):String;
  protected
    procedure Execute; override;
  Public
    Constructor Create;
    Destructor Destroy;Override;
  end;

implementation
uses Main;

{ TOpenThread }

Constructor …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading delphi-2009 fileopendialog topendialog

2
推荐指数
1
解决办法
1744
查看次数

为什么打开和保存对话框不显示与所选过滤器匹配的文件?

我希望我的打开和保存对话框显示XML文件.我有这个定义:

// The save dialog
dlg := TSaveDialog.Create(nil);
dlg.Options := [ofOverwritePrompt];
dlg.Title := 'Seleccione la ubicación del archivo';
dlg.Filter := 'Xml | *.xml | Todo | *.*';
dlg.DefaultExt := 'xml';
dlg.Execute();
// The open dialog
dlg := TOpenDialog.Create(self);
dlg.Title := 'Seleccione la ubicación del archivo';
dlg.Filter := 'Xml | *.xml | Todo | *.*';
dlg.DefaultExt := 'xml';
dlg.Execute();
Run Code Online (Sandbox Code Playgroud)

但它不显示XML文件.要在路径中显示任何XML文件,我需要选择"Todo"(*.*)过滤器.选择XML过滤器时为什么不显示文件?

delphi filter topendialog tsavedialog

2
推荐指数
1
解决办法
1071
查看次数