Delphi的对话框窗体

窗体也可以用作对话框,实际上,对于用户来说,作为对话框的Delphi窗体与真正的对话框之间没有区别的。

真正的对话框”意思是指用传统方法建立起来的对话框,它有资源编译器和资源脚本文件建立,在其他一些编程环境中其对话框就是用这种方式建立的,Delphi没有用传统的对话框)。

对话框有以下几种特征,这正是与正常窗体的不同之处:

1、对话框通常不能调整大小,它们通常是用来完成一个特殊的功能,改变对话框的大小没啥用处;

2、对话框几乎总有一个OK按钮,还有一些对话框有一个Close按钮,此按钮也是完成相同的任务,一个典型的简单对话框只有一个OK按钮,比如Delphi 7的About关于对话框就是这种对话框,如下:

0081

3、对话框可能有一个Cancel(关闭)按钮和Help(帮助)按钮;

4、有一种对话框是扩展标签对话框(Tabbed dialog boxes),这种对话框显示好几个可供用户选择的标签钮,当点击一个标签钮时,就会显示对话框的不同页面,例如Delphi 7主菜单【Tools | Environment Option…】对话框,如下:

0082

5、大部分对话框中,Tab键可以用来从一个控件移到另一个相邻的控件;

6、对话框一般在标题栏上有一个系统关闭按钮,它们通常没有最小化和最大化按钮。

每种规律都有例外,大部分对话框都有这些常用的特征,但也有一些对话框执行一些特别的任务,这样它就会与这些正规的情况有这样或那样的不同。

 

Delphi方式对话框

Delphi中,对话框只是另一种形式的窗体,建立一个对话框就与建立一个主窗口窗体或其他窗体一样。为了防止对话框缩放,需要设置Form的BorderStyle属性为bsDialog或者bsSingle。通过改变对话框窗体上各个空间的TabOrder属性,就可以改变Tab键切换次序。

模式(modal)对话框是一种在用户继续使用应用程序之前必须消失的对话框,当这种对话框打开时,应用程序主窗体要停止工作。大部分对话框都是模式对话框。

非模式(modeless)对话框是一中当显示此对话框时,用户可以继续使应用程序工作的对话框。一些字处理程序中的Find对话框就是非模式对话框。

Delphi对话框(实际上就是任何Delphi窗体)是模式或非模式完全依赖它的显示方式,为了显示一个模式对话框,可以调用TForm的ShowModal方法,为了显示一个非模式对话框,就要调用TForm的Show方法。

 

创建对话框窗体

1、打开在“最简单的多重窗体的应用(Delphi)”中的示例程序,通过主菜单【File | Reopen】或者工具栏上“Open”按钮旁边的箭头按钮查看MRU(最近使用过的)清单,该清单分为上下两部分。顶端部分为最近使用过的5个工程,而底部显示的是最近使用过的10个文件,只需点击这些工程或文件,就可以重新打开此工程或文件,如下图:

0083

2、打开Multiple工程后,我们将这个工程的MainForm的Caption属性修改为“About Dialog Forms Test Program”,btnShowForm2按钮的Caption属性修改为“Show About”;

3、通过工具栏的“View Forms”按钮或者按Shift + F12显示出SecondForm窗体,并将SecondForm窗体的BorderStyle属性修改为“bsDialog”,Caption属性修改为“About”;

4、在SecondForm窗体上放置一个Additional标签卡上的BitBtn按钮,并设置该按钮的Kind属性为“bkOK”,此时按钮的Caption属性自动改为了“OK”,而此时BitBtn按钮已经包含了点击OK按钮时关闭窗体的代码,如下:

0084

5、回到MainForm窗体,双击“Show About”按钮,看看代码如下:

procedure TMainForm.btnShowForm2Click(Sender: TObject);
begin
  SecondForm.ShowModal; { 显示出SecondForm模式化窗口}
end;

6、按F9运行程序后,点击“Show About”按钮,出现About对话框,注意此对话框为模式对话框,并且不能缩放,如下:

0085

Note

通用对话框(TOpenDialog、TSaveDialog、TFontDialog等等)不代表Delphi窗体建立的对话框,Windows提供这些对话框作为通过对话框集合,所有的Windows应用程序都可以用它,(实际上这些对话框包含在系统的comdlg32.dll文件中),VCL对话框类封装了此通用对话框,使它们用来起来很方便。

*以上代码均在Delphi 7中测试通过,示例代码下载:对话框窗体.rar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Delphi是一款用于开发跨平台应用程序的集成开发环境(IDE),它支持使用Object Pascal语言编写应用程序。在Delphi中,我们可以利用一些库和组件来实现Android选择文件对话框的功能。 要在Delphi中实现Android选择文件对话框功能,我们可以使用TOpenDialog组件,该组件允许用户选择一个或多个文件。首先,我们需要在Delphi中创建一个新的Android应用程序项目。 然后,在项目中添加一个TButton按钮和一个TOpenDialog组件。调整按钮的属性,如位置和文本等。接下来,我们需要在按钮的OnClick事件中添加一些代码来触发选择文件对话框。 在OnClick事件中,我们将使用TOpenDialog的Execute方法来显示选择文件对话框,并等待用户选择文件。一旦用户选择了文件,我们就可以使用TOpenDialog的FileName属性获取用户选择的文件名。 接下来,我们可以使用该文件名来执行一些操作,例如读取文件内容或处理文件数据。最后,我们可以将文件名显示在应用程序界面的某个位置,以便用户知道选择了哪个文件。 需要注意的是,在使用TOpenDialog组件之前,我们需要在项目设置中配置相应的权限,以允许应用程序访问设备上的文件系统。 总结起来,实现Delphi Android选择文件对话框的功能,我们需要创建一个TOpenDialog组件,并在按钮的OnClick事件中调用该组件的Execute方法来显示选择文件对话框。一旦用户选择了文件,我们可以使用FileName属性获取文件名,并使用该文件名进行后续操作。 ### 回答2: Delphi是一种强大的开发工具,可以用于开发Android应用。在Delphi中,有一个方便的组件可以用来创建选择文件对话框,让用户能够选择他们的文件。 要创建该对话框,可以使用TOpenDialog组件。首先,在设计界面中找到该组件,然后将其拖放到你的Android应用的表单上。 接下来,你需要在代码中设置TOpenDialog的一些属性。这些属性包括Filter,Title和Options。Filter属性用来设置文件的类型和筛选器,Title属性用于设置对话框的标题,Options属性用于设置对话框的行为选项。 要弹出对话框并获取用户选择的文件,可以调用TOpenDialog组件的Execute方法。当用户选择了文件后,对话框会报告选择的文件名。你可以使用SelectedFiles属性来获取选定的文件。如果用户取消了选择,SelectedFiles属性将为空。 这是一个简单的示例代码: ```Delphi procedure TForm1.Button1Click(Sender: TObject); var OpenDialog: TOpenDialog; SelectedFile: string; begin OpenDialog := TOpenDialog.Create(nil); try OpenDialog.Filter := '文本文件|*.txt|所有文件|*.*'; OpenDialog.Title := '选择文件'; if OpenDialog.Execute then begin SelectedFile := OpenDialog.SelectedFiles[0]; ShowMessage('选择的文件是:' + SelectedFile); end else begin ShowMessage('取消选择'); end; finally OpenDialog.Free; end; end; ``` 在这个例子中,我们创建了一个TOpenDialog实例,并设置了筛选器和标题。然后,我们调用Execute方法来显示对话框,并根据用户的选择进行相应的操作。如果用户选择了文件,我们获取选择的文件路径,并在消息框中显示它。如果用户取消了选择,我们显示一个取消选择的消息。 这就是使用Delphi Android选择文件对话框的简单示例。希望对你有帮助! ### 回答3: 在Delphi中,如果需要在Android应用程序中实现选择文件对话框,可以使用TOpenDialog组件或Android内置的文件选择器。 1. 使用TOpenDialog组件: a. 在Delphi中创建一个新的Android应用程序项目。 b. 在设计时,选择“Standard”标签页,并将TButton和TOpenDialog组件拖放到窗体上。 c. 双击按钮,编写OnClick事件的代码,打开对话框并获取选定的文件。 代码示例: ```Delphi uses Androidapi.Helpers, Androidapi.JNI.JavaTypes; procedure TForm1.Button1Click(Sender: TObject); var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_OPEN_DOCUMENT); Intent.addCategory(TJIntent.JavaClass.CATEGORY_OPENABLE); Intent.setType('application/*'); //限定文件类型,如果不指定,可选择任意文件类型 if Intent.resolveActivity(MainActivity.getPackageManager) <> nil then MainActivity.startActivityForResult(Intent, 1); end; ``` d. 在窗体的OnActivityResult事件中获取选中文件的路径。 代码示例: ```Delphi uses Androidapi.JNI.GraphicsContentViewText; procedure TForm1.FormActivityResult(requestCode, resultCode: Integer; data: JIntent); begin if resultCode = TJActivity.JavaClass.RESULT_OK then ShowMessage(JStringToString(data.getDataString)); end; ``` 2. 使用Android内置的文件选择器: a. 在Delphi中创建一个新的Android应用程序项目。 b. 在设计时,选择“Standard”标签页,并将TButton组件拖放到窗体上。 c. 双击按钮,编写OnClick事件的代码,打开Android内置的文件选择器并获取选定的文件。 代码示例: ```Delphi uses Androidapi.Helpers, Androidapi.JNI.JavaTypes; procedure TForm1.Button1Click(Sender: TObject); var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_GET_CONTENT); Intent.setType('*/*'); //限定文件类型,如果不指定,可选择任意文件类型 if Intent.resolveActivity(MainActivity.getPackageManager) <> nil then MainActivity.startActivityForResult(Intent, 1); end; ``` d. 在窗体的OnActivityResult事件中获取选中文件的路径。 代码示例: ```Delphi uses Androidapi.JNI.GraphicsContentViewText; procedure TForm1.FormActivityResult(requestCode, resultCode: Integer; data: JIntent); var Uri: Jnet_Uri; Cursor: JCursor; FilePath: string; begin if resultCode = TJActivity.JavaClass.RESULT_OK then begin Uri := data.getData; Cursor := TAndroidHelper.ContentResolver.query(Uri, nil, nil, nil, nil); if Cursor.moveToFirst then FilePath := JStringToString(Cursor.getString(Cursor.getColumnIndexOrThrow(TJOpenableColumns.JavaClass.DISPLAY_NAME))); Cursor.close; ShowMessage(FilePath); end; end; ``` 以上是使用Delphi实现Android选择文件对话框的两种方法,根据需要选择其中一种。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值