小编TLa*_*ama的帖子

如何在一个地方为多个应用程序定义应用程序版本?

我们有一个由众多应用程序组成的系统.所有应用程序的版本都同时更改.目前,当我们发布新版本时,我们必须手动打开每个应用程序的项目选项并逐个更改版本.有没有办法在同一版本上编译所有应用程序,例如,将其保存在全局文件中并在编译时,读取此文件并将该版本分配给项目?我只是想消除太多步骤,因为我们计划更频繁地更改版本号.我想在一个地方改变它.可以这样做吗?如何?

delphi msbuild compilation version delphi-xe2

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

如何通过多字符分隔符拆分字符串?

是否有Delphi函数通过多字符分隔符而不是单个字符来分割字符串?

例如,当我以这种方式使用该功能时:

SplitString('Whale<->Mammal<->Ocean', '<->')
Run Code Online (Sandbox Code Playgroud)

我会得到这3个字符串的结果:

'Whale', 'Mammal', 'Ocean'
Run Code Online (Sandbox Code Playgroud)

Delphi中有这样的功能吗?

delphi delphi-2010

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

如何将版本信息包含到设置输出文件名中?

我有一个带有版本信息的应用程序,我想将其包含在setup输出文件名中.例如,如果应用程序有版本,3.10.1我想获取setup_3.10.1.exe输出文件而不是默认值setup.exe作为Inno Setup生成的输出文件.

是否可以将某个应用程序的版本信息包含到设置输出文件名中?

inno-setup

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

如何在不使用Web浏览器的情况下呈现HTML元素?

有没有办法在不使用任何Web浏览器控件的情况下在画布上绘制特定的HTML元素内容?

使用此代码,我将元素呈现给窗体的画布(仅作为示例).
它虽然有效,但这段代码不是一个好习惯 - 见下文,为什么......

uses
  SHDocVw, MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
var
  WebBrowser: TWebBrowser;
  HTMLElement: IHTMLElement;
  HTMLRenderer: IHTMLElementRender;
begin
  WebBrowser := TWebBrowser.Create(nil);
  try
    WebBrowser.ParentWindow := Application.Handle;
    WebBrowser.Navigate('https://stackoverflow.com/questions/2975586/good-delphi-blogs');

    while WebBrowser.ReadyState < READYSTATE_COMPLETE do
      Application.ProcessMessages;

    HTMLElement := (WebBrowser.Document as IHTMLDocument3).getElementById('question');
    HTMLRenderer := (HTMLElement as IHTMLElementRender);
    HTMLRenderer.DrawToDC(Canvas.Handle);

  finally
    HTMLElement := nil;
    HTMLRenderer := nil;
    WebBrowser.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

这很糟糕,因为

有没有一种干净的方法来解决这个使用MSHTML?

html delphi mshtml ihtmldocument

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

我如何用接口的safecall函数方法进行RTTI调用?

我有这个测试程序https://gist.github.com/real-mielofon/5002732

  RttiValue := RttiMethod.Invoke(RttiInstance, [10]);
Run Code Online (Sandbox Code Playgroud)

和带接口的简单单元:

unit Unit163;

interface

type
{$M+}
  ISafeIntf = interface
    function TestMethod(aI: integer): integer; safecall;
  end;
{$M-}
 type
   TSafeClass = class(TInterfacedObject, ISafeIntf)
   public
     function TestMethod(aI: integer): integer; safecall;
   end;

implementation

function TSafeClass.TestMethod(aI: integer): integer;
begin
  result := aI+1; // Exception !!
end;

end.
Run Code Online (Sandbox Code Playgroud)

我有kaboom

result := aI+1;
Run Code Online (Sandbox Code Playgroud)

如果它是程序或不安全,那么它没关系:-(

delphi rtti delphi-xe2 delphi-xe3

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

我需要在Delphi中完成记录数组吗?

在我的申请中,我有以下记录:

TTransaction = record
  Alias: string
  Description: string
  Creation: TDateTime
  Count: Integer
end;
Run Code Online (Sandbox Code Playgroud)

我在这个数组中使用此记录:

Transactions = array of TTransaction;
Run Code Online (Sandbox Code Playgroud)

我在运行时保持数组加载,但在给定时间我需要清除所有数据并添加一些新数据.

仅仅使用它就足够了:

SetLength(Transactions, 0); ?
Run Code Online (Sandbox Code Playgroud)

或者我需要完成一些事情吗?

delphi record finalization dynamic-arrays delphi-6

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

如何检测没有焦点的控件中的修改键更改?

背景:

我正在研究一个从TCustomControl类派生的控件,它可以获得焦点,并且里面有一些内部元素.如果用户使用光标悬停它们,则可以突出显示这些内部元素,您可以选择它们,移动它们等等.现在问题......

问题:

如果用户持有或使用修饰符CTRL,我会使用(比如说)聚焦元素执行不同的操作.我想要的是如果用户悬停元素并保持例如键,则更改鼠标光标.非常简单,你只需覆盖和方法,并检查它们的参数是否等于.在这样的代码中:ALTSHIFTCTRLKeyDownKeyUpKeyVK_CONTROL

procedure TMyCustomControl.KeyDown(var Key: Word; Shift: TShiftState);
begin
  inherited;
  if Key = VK_CONTROL then
    Screen.Cursor := crSizeAll;
end;

procedure TMyCustomControl.KeyUp(var Key: Word; Shift: TShiftState);
begin
  inherited;
  if Key = VK_CONTROL then
    Screen.Cursor := crDefault;
end;
Run Code Online (Sandbox Code Playgroud)

即使这不是检查CTRL按键是否被按下和释放的最佳方式(例如,由于现有的Shift状态参数),它可以按预期工作,控制具有焦点,甚至可以获得,但......

我的目标是当用户悬停控件时(或者确切地说,它内部的某个元素)更改鼠标光标,并且CTRL即使我的控件没有焦点也保持例如该键.可以说,所以只需覆盖MouseMove方法并在那里询问修饰符状态.这将是方式,但......

如果用户将鼠标光标停留在我的控件上并按下并释放该CTRL键,该怎么办?对于我的控制,这不会产生任何鼠标移动或按键事件,或者我错了?那么,我的问题很明显......

题:

如果控件没有焦点且用户没有用鼠标移动,如何检测修改键更改?我在想这两个选项,但我希望有一些我错过的东西:

  • 键盘钩 - 可靠,但看起来对我来说太过分了
  • 用定时器定期检查修改器状态 - 我不能忍受延迟

那么,您如何检测当前未关注的控件的修改键更改?

delphi winapi delphi-xe3

14
推荐指数
2
解决办法
2461
查看次数

如何在Windows Vista及更高版本上进入Windows Flip 3D模式?

是否有可能以Flip 3D mode编程方式触发Windows Vista上面的系统?

在此输入图像描述

这与手动按CTRL+ WIN+相同TAB

windows delphi winapi desktop windows-shell

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

如何检测设置是否以非常静音模式运行?

我知道有一个WizardSilent功能可以检查设置是否以静默模式运行,但我找不到与非常静音模式等效的功能(当使用/VERYSILENT命令行参数执行设置时).

有没有办法检测设置是否以非常静音模式运行?

inno-setup

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

如何读写XML文档节点值?

我想阅读一些XML文件的节点,并在一些自定义输入字段中显示它们的值.然后,用户可以根据需要更改值,单击Next按钮,这些值应保存回XML.

如何在InnoSetup脚本中执行此操作?

xml inno-setup

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