问题标签 [delphi-prism]

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.

0 投票
2 回答
153 浏览

input - 添加 Microsoft.VisualBasic 参考后,无法在 Delphi Prism 上访问 InputBox

我需要显示一个输入消息框来从用户那里收集信息。我正在使用德尔福棱镜。

我确实通过将 Microsoft.VisualBasic 引用添加到我的程序以访问 InputBox 来尝试其他人的建议,但它没有用。编译器一直说“未知标识符”。

Delphi Prism 有 InputBox 命令吗?如果是这样,你是怎么做到的。如果没有,德尔福棱镜是否有类似的东西。

我知道,我可以简单地使用 Editbox 和按钮创建一个简单的窗口窗体,但是当 Delphi Prism 可能有一些 bultin 并且更易于用于输入框命令时,我认为这是乏味和多余的工作。

对你的帮助表示感谢。

谢谢,

0 投票
2 回答
269 浏览

delphi - 无法访问基础事件字段

我试图通过简单地调用从 TListBox 双击事件中引发 TButton Click 事件:

我总是能够在 Delphi XE 及其以下版本下做到这一点,但现在它在 Delphi Prism 中引发错误。错误消息是“无法访问基础事件字段”。那么,您将如何从另一个控件(例如 TListBox)的事件中引发事件?

例如:

上面的代码与单击表单上的 OK T 按钮相同。

0 投票
2 回答
230 浏览

linux - 如何在 Delphi Prism 中为 .net 创建适用于 windows 和 Linux(Mono) 的 inifile?

我的 Delphi Prism 程序需要创建并读取和写入 inifile,但我想我注意到 Delphi Prism 并不真正支持任何类型的 Inifile 结构。(如果我错了,请纠正我。)

这让我开始谈论支持 inifile 的 ShineOn 库文件。但是,当您在 Mono 下的 Linux 上运行程序时,它会使程序崩溃。我是否使用 ShineOn 的任何方法都没有关系。只要将 ShineOn 库文件列在 uses 关键字下,程序就不会在 Linux 上运行而是完全崩溃。你可以在 Delphi Prism 中为 .net 创建适用于 windows 和 Linux(Mono) 的 inifile 吗?如果是这样,你会怎么做?

我确实在互联网和 Stackoverflow 上搜索了答案,这导致了我的 C# Class INI 文件。我想,在我注意到它需要加载 Kernel32.dll 文件才能工作之前,它很有希望。(如果我错了,请再次纠正我)。显然,互联网上关于 Delphi Prism Inifile 的信息很少。

0 投票
2 回答
135 浏览

events - 什么决定了 Delphi Prism 中源文件的编译或执行顺序?

在编写了足以在 Window 和 Linux(单声道)上编译和运行而没有编译错误的 Delphi Prism 程序之后,我发现我的构造函数和加载事件的触发顺序与我预期的不同。我想,文件按照它们在项目文件中列出的顺序执行,就像在 Delphi .dpr 文件中一样。说到 .dpr 文件,是否有类似的 Delphi Prism 文件我没有研究。我查看了 program.pas 文件和属性。我没有看到任何可以给我提示或线索的东西。

您如何确保项目文件在 Delphi Prism 中以正确的顺序执行?

0 投票
4 回答
1343 浏览

.net - 如何在整个程序中显示单个 Winform 实例?

如果我的问题和描述看起来太简单或已经被其他人问过,请接受我的道歉。

我以前可能问过类似的问题。但是,我仍然对winform有点困惑。假设您有一个带有Mainform, Form1, Form2, Form3的 Delphi prism .net 程序。另外,您希望能够从 Mainform、Form2 和 Form3 中显示 Form1 的单个瞬间。你是怎样做的?我必须有一个需要在整个程序中根据需要显示的 winform,以在 RichTextBox 中显示应用程序错误。这意味着可以在我的程序中随时随地调用 SysErrorDlg winform 来显示程序错误。对我来说,如果在我的整个程序中只能访问 SysErrorDlg winform 的单个实例,则能够做到这一点。

按照下面非常简单的代码。这几乎就是我想要做的。

甚至有可能做到这一点吗?我的编译器不允许我声明一个全局 winform 变量,但抱怨它需要被标识为公共变量。即使有启用此功能的选项,我也不想因为我喜欢将变量保持为私有或类本地的想法。

如果 form1 的实例已经在 Mainform 中声明和实例化,如何将 form1 的实例传递给 form2 或 form3?我了解 show 和 showdialog 的工作原理。如果 Form1 实例位于 MainForm 中,您将使用哪一行代码从 Form2 访问 Form1 实例?

您可以提供一些代码以及您的解释。

0 投票
1 回答
1307 浏览

configuration - Writing/Reading User-Defined settings in app.config file

I am trying to read and write into app.config file of user-settings. I found a snippet of a code for working with confige file. I finally got it compiling and running, but it absolutely seems to be doing nothing to the App.config file.

Here is the code:

It is compiling without any errors, but I don't know if it is doing anything.

Is there anything wrong with the code? I need to be able to write/read a section and write/read a key/value. Thanks in advance.

UPDATE: Instead of using ConfigurationManager, I simply use Properties.Settings.Default. However, I am having bit of a problem writing into it and reading back from it, although program complies with without any errors and the code seems simple.

How do you read and write to Properties.Settings.Default from within your code?

0 投票
1 回答
854 浏览

insert - 索引超出了数组的范围 - RichTextBox lines setvalue

我在网上和 StackOverflow 上进行了搜索,但我似乎找不到我的问题的答案,尽管其中一些非常接近。

我正在为 Delphi Prism 中的 .Net 编程。我在 WinForm 上有一个 RichTextBox,每次程序插入时我都需要在顶部插入一行文本。因此,我正在执行以下操作,它运行到最后并引发以下异常。

违规代码:

异常: 索引超出了数组的范围

我想,我想我知道为什么它会引发异常。这是因为 RichTextBox 中没有插入任何行。所以,我的程序真的不能插入任何文本行。每次我的程序插入新的文本行时,我都需要在顶部插入一行文本。

如果我确实调用了 RichTextBox1.AppendText(str);,那么它可以工作并插入 str 文本而不使用换行符,但它会在末尾附加。我希望它每次都在顶部插入文本。

如何在 RichTextBox 中插入一行文本?谢谢。

0 投票
2 回答
1455 浏览

.net - 应用程序属性设置实际保存或写入到哪里?

我要一下子把我所有的头发都拔掉。不用说,我很沮丧。我在 Delphi Prism 中为 .NET 编码,目前正在努力将我的应用程序的用户定义属性保存到应用程序配置文件中。我已将所有内容设置如下。它正在工作,但根本没有保存或检索某些值。因此,我查看了 app.config 文件,认为它们都会在那里,但我没有看到文件中保存的任何值与正在检索的值匹配。它只有我放入 Properties.Designer 的默认值。有人在网上说配置文件只会在您在 Delphi Prism IDE 之外运行应用程序时更新。我做到了,那仍然没有用。我什至重新启动了我的计算机,认为 Delphi Prism 可能是片状的,需要快速休息一下。即使这样也没有用。

那么,这些值保存在哪里——在 app.config 文件中还是在内存中?

(我的代码可能不连贯。在完善代码之前,我正在尝试让我的应用程序的基本设置正常工作。)

这是我的 Properties.Settings.Designer 的图像:

属性.设置.设计器

这是 app.config 文件:

以下是写入 app.config 的代码:

以下是代码阅读:

这是显示或检索的实际值。我任意设置了一些要保存和读回的值,但它与我在 app.config 文件中看到的不匹配。

窗户

0 投票
2 回答
540 浏览

singleton - Delphi Prism中的静态或类方法

我正在为 .NET 使用 Delphi Prism。我需要从另一个 winform 方法调用我的 mainform 类中的公共方法。所以,最近了解了静态,我在我的程序中使用了它。静态或类 winform 效果很好,但将方法设为静态或类似乎不一样。

我的主窗体类中有一个名为 updateButtons 的方法。它根据用户的操作更新主窗体上的所有按钮和控件。此方法需要从另一个 winform 方法调用。因此,我将 UpdateButtons 方法设为静态或类。虽然现在我看到了要调用的方法,但编译器不喜欢。它不断引发以下错误,“无法在没有实例引用的情况下调用实例成员(任何控件)。”

如何使方法成为类或静态方法,并且仍然可以从 winform 访问控件?

具有静态或类方法的主类:

更新按钮的定义:

0 投票
1 回答
245 浏览

linux - Delphi Prism 中的操作系统指令

由于我正在编写一个最终将在从相同项目文件编译的 Windows 和 Linux 环境上运行的程序,因此我想测试一下操作系统指令的性能如何。所以,我写了一个示例代码。代码似乎意外运行,或者只是我的想象。

这是代码:

现在,当我在 Windows 上运行此方法时,它会弹出一个带有“这是 .NET Framework”的消息框。万岁!!!' 我有点期待它在 Windows 上运行。当我在 Mono 下的 Linux 上运行它时,它会弹出一个带有相同消息的消息框,“这是 .NET FrameWork。万岁!!!” 我期待看到 Linux 消息,即“这是 Linux。万岁!!!” 如果此代码工作正常,那么如果您确实需要执行仅受 Linux、Mac 或 Windows 支持的不同方法,您如何检查程序运行在哪个平台上。