有没有人使用designide.dcp为64位操作系统在Firemonkey中成功构建自定义组件?我正在尝试将设计编辑器添加到自定义组件.我按照http://docwiki.embarcadero.com/RADStudio/XE3/en/Creating_a_Component_Editor_and_a_Property_Editor_for_FireMonkey_Components上的教程进行操作.这在编译为32位时工作正常,但我得到以下64位错误:[dcc64致命错误] ComponentEditor.pas(10):E2213错误的打包单位格式:c:\ program files(x86)\ embarcadero\rad studio\11.0\lib\win32\release\designide.dcp.DesignEditors - 预期版本:25.0,Windows Unicode(x64)发现版本:25.0,Windows Unicode(x86)
查看路径,这有意义,因为文件引用了lib\win32.但是,在lib\win64下没有这样的文件.
我一直试图在互联网上找到一个没有运气的解决方案.看起来好像很多人都没有尝试过这个.
我在我的Delphi应用程序中使用EurekaLog 7 Professional.从Delphi 7迁移到Delphi XE4时,我收到以下编译器警告.
[dcc32 Warning] myproject.dpr(4): W1006 Unit 'ExceptionLog' is deprecated
Run Code Online (Sandbox Code Playgroud)
我应该如何摆脱这种警告?
如何检测字符串是否包含浮点数.例如:'0.004'
但是没有使用,StrToFloat因为该功能很慢,而是通过迭代迭代.
function IsInteger(const S: String): Boolean;
var
P: PChar;
begin
P := PChar(S);
Result := True;
while not (P^ = #0) do
begin
case P^ of
'0'..'9': Inc(P);
else
Result := False;
Break;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这将检查字符串是否为正整数但不是浮点数.
这有点难以解释所以请耐心等待.当我在其中一个列中编辑文本字段时,当我按Enter键时,转到编辑文本下的新行,以便网格基本上扩展.选项-View-CellAutoHeight设置为true会扩展单元格,但编辑很糟糕.可以看到第一行所在的位置,结束位置等等...
这是网格:

我不能用鼠标光标跟上最后一个字母'a',然后按Enter键以便添加另一行.哪些设置可以规范这个 我知道它可以完成,因为我有一个网格,可以做到这一点.
编辑:这不需要代码只应用设置.
我有一个尺寸为(宽度= 250,高度= 200)的位图图像。我用以下代码片段对其进行拉伸,但质量下降了。有没有办法在拉伸位图图像的同时保持其质量?
with Bitmap do
begin
Width := 200;
Height := 150;
PixelFormat := pf1bit;
TransparentMode := tmAuto;
Canvas.CopyMode := cmSrcCopy;
Canvas.FillRect(Rect(0, 0, Width, Height));
Canvas.StretchDraw(Rect(0, 0, Width, Height), MyBitMap);
end;
Run Code Online (Sandbox Code Playgroud)
这里,是我加载原始位图图像的MyBitMap类型。TBitMap
并且,这是这样做的正确方法吗?
这个问题没有任何代码,但我必须寻求帮助,因为我无法解决这个问题。我在 SO 上搜索了类似的问题,发现了几个答案并没有帮助我解决这个问题。
我在用我的主开发电脑创建 TClientDataSet 项目时遇到问题,所以我尝试在我的 Windows 平板电脑上创建一个项目。两台电脑都运行带有 DelphiXE4 的 Windows 8.1。
我在一个新项目中添加了一个 TClientDataSet、一个 TDataSource 和一个 TDatasetProvider。我在设计时在 FieldDefs 中添加了 3 个字段,然后从 TClientDataSet 的弹出菜单中选择了 CreateDataset。数据集创建得很好,所以我继续添加一个 TDBGrid,TDBNavigator,输入一些数据并将 TClientDataSet 保存到一个文件中。
小型演示应用程序运行良好,没有任何问题。我可以查看和输入数据,保存到文件并从文件加载,所以我压缩了项目并将其复制到我的开发电脑。我尝试运行演示,但是当 LoadFromFile 被调用时,会发生缺失数据提供程序异常。我尝试删除 xml 文件,然后尝试使用我在平板电脑上使用的相同过程重新创建该文件,但我再次收到缺少数据提供程序的消息。
在跟进 SO 答案时,我按照几个 SO 答案中的建议添加了 MidasLib,但未能解决问题。我搜索了 Midas.DLL 并发现它们存在。
我的问题:dsnap180.bpl 是否可能已损坏或我的开发电脑中缺少其他东西?我的目标是能够在我的开发电脑上创建和打开 TClientDataset。任何建议或指导表示赞赏。
编辑 Kens 演示
帕斯
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids,
Vcl.DBGrids, Data.DB, Datasnap.DBClient;
type
TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
{ Private …Run Code Online (Sandbox Code Playgroud) 如果用户尝试关闭应用程序,我想显示一个“关闭查询”确认对话框。如果系统关闭或任务管理器中的任务或进程正在结束,我只想清理并关闭。
我尝试了这段代码:
private
procedure WMEndSession(var Message: TWMEndSession); message WM_ENDSESSION;
Run Code Online (Sandbox Code Playgroud)
...
procedure TxxxForm.WMEndSession(var Message: TWMEndSession);
begin
gShuttingDown := Message.EndSession;
end;
Run Code Online (Sandbox Code Playgroud)
...
procedure TxxxForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Application.ProcessMessages;
if gShuttingDown then
CanClose := True
else
CanClose := MessageDlg('Are you sure you want to stop the close?', mtConfirmation,
[mbYes, mbNO], 0) = mrYes;
end;
Run Code Online (Sandbox Code Playgroud)
弹出确认显示我是从任务管理器中关闭程序还是终止进程。
我想替换看起来像的代码
resourcestring
RESSTR_ERR1_TRYAGAIN = 'Error 1. Please try again.';
RESSTR_ERR2_TRYAGAIN = 'Error 2. Please try again.';
RESSTR_ERR3_TRYAGAIN = 'Error 3. Please try again.';
Run Code Online (Sandbox Code Playgroud)
用这样的东西:
resourcestring
RESSTR_ERR1 = 'Error 1.';
RESSTR_ERR2 = 'Error 2.';
RESSTR_ERR3 = 'Error 3.';
RESSTR_TRYAGAIN = 'Please try again.';
RESSTR_ERR1_TRYAGAIN = RESSTR_ERR1 + ' ' + RESSTR_TRYAGAIN; //error
RESSTR_ERR2_TRYAGAIN = RESSTR_ERR2 + ' ' + RESSTR_TRYAGAIN;
RESSTR_ERR3_TRYAGAIN = RESSTR_ERR3 + ' ' + RESSTR_TRYAGAIN;
Run Code Online (Sandbox Code Playgroud)
但这会导致错误E2026 Constant expression expected.,我明白了.
不过,我想知道是否有解决方案,允许我以RESSTR_ERRx_TRYAGAIN上述方式定义.(目标是在不触及使用RESSTR_ERRx_TRYAGAIN的所有位置的情况下消除其他翻译).
直到现在我唯一的想法是以下,但我不想使用它,因为这是相当丑陋的:
var
RESSTR_ERR1_TRYAGAIN: string; …Run Code Online (Sandbox Code Playgroud) 我需要标记一个TBitBtn(不是TButton),按钮动作需要提升。我设置ElevationRequired为 True,但我没有得到盾牌图标。
要复制,请将 aTButton和 aTBitBtn放在表单上:
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.ElevationRequired := True;
BitBtn1.ElevationRequired := True;
end;
Run Code Online (Sandbox Code Playgroud)
Button1显示有盾牌图标,BitBtn1不是。
如果我理解正确,KeyDown事件不能阻止字符键(空格)传递给控件.
但KeyPress事件并没有告诉我Ctrl是否已关闭.
但是如果Ctrl关闭,我只需要取消空格.
如果ctrl也关闭,如何阻止编辑控件接收空格键?
目的:我有一个文本框,我正在从中提出搜索建议.我想使用快捷键ctrl + space弹出建议.但在这种情况下,我不想在编辑文本中添加空格.
delphi ×10
delphi-xe4 ×10
64-bit ×1
bitmap ×1
canvas ×1
delphi-7 ×1
devexpress ×1
shutdown ×1
tcxgrid ×1