标签: delphi-xe4

Firemonkey designide.dcp 64位

有没有人使用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 64-bit delphi-xe4 firemonkey-fm3

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

Delphi编译器警告:不推荐使用单元'ExceptionLog'

我在我的Delphi应用程序中使用EurekaLog 7 Professional.从Delphi 7迁移到Delphi XE4时,我收到以下编译器警告.

[dcc32 Warning] myproject.dpr(4): W1006 Unit 'ExceptionLog' is deprecated
Run Code Online (Sandbox Code Playgroud)

我应该如何摆脱这种警告?

delphi delphi-7 delphi-xe4

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

检测字符串是否包含浮点数?

如何检测字符串是否包含浮点数.例如:'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)

这将检查字符串是否为正整数但不是浮点数.

delphi delphi-xe4

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

cxGrid使用enter将行高扩展到新行

这有点难以解释所以请耐心等待.当我在其中一个列中编辑文本字段时,当我按Enter键时,转到编辑文本下的新行,以便网格基本上扩展.选项-View-CellAutoHeight设置为true会扩展单元格,但编辑很糟糕.可以看到第一行所在的位置,结束位置等等...

这是网格:

在此输入图像描述

我不能用鼠标光标跟上最后一个字母'a',然后按Enter键以便添加另一行.哪些设置可以规范这个 我知道它可以完成,因为我有一个网格,可以做到这一点.

编辑:这不需要代码只应用设置.

delphi devexpress tcxgrid delphi-xe4

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

在 Delphi 中使用 StretchDraw 方法拉伸位图

我有一个尺寸为(宽度= 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

并且,这是这样做的正确方法吗?

delphi canvas bitmap delphi-xe4

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

TClientDataSet 缺少数据提供程序

这个问题没有任何代码,但我必须寻求帮助,因为我无法解决这个问题。我在 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)

delphi delphi-xe4

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

如何区分UI关闭和使用Delphi强制关闭

如果用户尝试关闭应用程序,我想显示一个“关闭查询”确认对话框。如果系统关闭或任务管理器中的任务或进程正在结束,我只想清理并关闭。

我尝试了这段代码:

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)

弹出确认显示我是从任务管理器中关闭程序还是终止进程。

delphi shutdown application-shutdown delphi-xe4

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

是否可以在Delphi中组合资源字符串?

我想替换看起来像的代码

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)

delphi delphi-xe4

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

如何为`TBitBtn`设置`ElevationRequired`

我需要标记一个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不是。

delphi delphi-xe4

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

KeyDown KeyPress难题 - 如何在Ctrl +空格中取消空格

如果我理解正确,KeyDown事件不能阻止字符键(空格)传递给控件.

但KeyPress事件并没有告诉我Ctrl是否已关闭.

但是如果Ctrl关闭,我只需要取消空格.

如果ctrl也关闭,如何阻止编辑控件接收空格键?

目的:我有一个文本框,我正在从中提出搜索建议.我想使用快捷键ctrl + space弹出建议.但在这种情况下,我不想在编辑文本中添加空格.

delphi delphi-xe4

0
推荐指数
1
解决办法
1052
查看次数