小编OZ8*_*8HP的帖子

如何循环类中的所有属性

我在我的Delphi应用程序中有一个类,我想要一种简单而动态的方法将所有字符串属性重置为'',并将所有布尔属性重置为False就我在网上看到的那样,应该可以创建一个循环某种形式,但如何做到这一点对我来说并不清楚.

delphi properties class rtti delphi-xe

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

在Outlook中创建带附件的邮件并显示它

我想在Outlook中创建一个带附件的邮件并在发送之前显示它,但我想我已经尝试了几乎我在网上找到的所有样本而没有任何运气.我可以使用Indy,但我非常希望使用Outlook来确保邮件是正确的,因为它是供业务使用的.

函数的任何输入,将地址,主题,消息和附件作为参数,然后在发送之前在Outlook中显示消息.

delphi outlook mailing

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

按名称设置属性值

在Delphi类中,我有一些属性,我想通过名称访问它们来设置它们.现在我使用egSettings.AllowSysop := True;

我想做点什么 Settings('AllowSysop').Value := True;

这样做的原因是,当设置我的用户可以访问的内容时,从许可文件中读取这些文件,其中从文件读取的行(它类似于INI加密)可能看起来像

AllowSysop = True
Run Code Online (Sandbox Code Playgroud)

我知道这是一些必须要制作的RTTI外观代码,但我无法弄明白.

如果可能的话,我认为这对我来说会更容易一些.

希望解释是有道理的

delphi properties rtti

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

从Delphi创建Word文档,另存为Doc和PDF

我需要使用特定模板从Delphi创建Word文档,将文档保存为具有给定名称的Word文档,然后使用相同的名称保存相同的文档,但保存为PDF文件.(在Word 2007中,可以使用SaveAsPdf ...插件完成.在Word 2010中,它是内置功能)

如何使用Delphi XE完成这项工作?

delphi automation templates ms-word

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

如何禁用TdxRibbon(DevExpress功能区控件)中的控件?

我在我的Delphi应用程序中有一个DevExpress VCL功能区有时候应用程序正在进行一些更新,在那段时间我需要确保用户没有做任何事情,所以我希望能够禁用所有控件功能区,但我不能让每个选项卡上的控件计数工作

无论我怎么做,ComponentCount都返回0但我可以看到控件.我的testcode看起来像这样:

procedure TfrmMain.RibbonDisable(var aMessage: TMessage);
var
  i: integer;
begin
  try
    for i := 0 to ribMain.TabCount - 1 do
      begin
        ribMain.Tabs.Items[i].Active := True;
        ShowMessage(IntToStr(ribMain.ActiveTab.ComponentCount));
      end;
  except
    on E:exception do
      Logfile.Error('frmMain.RibbonDisable: ' + E.Message);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi devexpress ribbon

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

尝试在注册表中保存值时出错

使用下面的代码我尝试在注册表的HKEY_LOCAL_MACHINE部分设置一个值,但是我收到错误'无法为.....设置数据'如果我使用HKEY_CURRENT_USER没有问题.

我可能会在这里失踪什么.

(代码不完整,但我认为这是它的重要部分)

type
  TTypWinBits = (Bit32, Bit64);

function WinBits: TTypWinBits;
type
  TIsWow64Process = function(Handle:THandle; var IsWow64 : BOOL) : BOOL; stdcall;
var
  hKernel32 : Integer;
  IsWow64Process : TIsWow64Process;
  IsWow64 : BOOL;
begin
  Result := Bit32;
  hKernel32 := LoadLibrary('kernel32.dll');
  if (hKernel32 = 0) then RaiseLastOSError;
  @IsWow64Process := GetProcAddress(hkernel32, 'IsWow64Process');
  if Assigned(IsWow64Process) then
    begin
      IsWow64 := False;
      if (IsWow64Process(GetCurrentProcess, IsWow64)) then
        Result := Bit64
      else
        RaiseLastOSError;
    end;
  FreeLibrary(hKernel32);
end;

function TFastRegistry.CreateConnection: TRegistry;
begin
  Result := TRegistry.Create;
  try
    case WinBits of
      Bit32: …
Run Code Online (Sandbox Code Playgroud)

delphi registry 32bit-64bit

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

从Delphi打开并编辑Word模板

我需要能够从Delphi中打开和编辑Word模板(使用Word)我可以打开模板,但Word假定它是文档而不是模板.

问题是我需要编辑模板而不是将其用作新文档的模板.我使用模板作为文档处理系统的一部分,我希望用户能够从我的应用程序编辑模板.因为现在他们必须打开Word,然后从那里打开模板并进行编辑 - 从我的应用程序中执行它将更容易,更安全.

实验代码

fWordApp: WordApplication;
TempName: OleVariant;
WordDoc: WordDocument;
TemplateFile: string;
begin
  TemplateFile := Settings.Directories.RootInsert(qryTemplates.FieldByName('fldtemplate_path').AsString);
  if TemplateFile <> '' then
    begin
      if not Assigned(fWordApp) then
        begin
          fWordApp := CreateOleObject('Word.Application') as WordApplication;
          while fWordApp.Templates.Count = 0 do
            Sleep(200);                                 // Normal.dot must be loaded
        end;
      if Assigned(fWordApp) then
        fWordApp.Visible := True
      else
        raise Exception.Create('Cannot initialize Word application');
      TempName := TemplateFile;
      WordDoc := fWordApp.Documents.Add(TempName, EmptyParam, wdFormatTemplate, EmptyParam);
Run Code Online (Sandbox Code Playgroud)

delphi templates ms-word edit

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

SQLite SQL 中 Left 命令的替换

我有以下查询,在 MS Access、MySQL 和 SQL Server 中运行良好,但当我尝试在 SQLite 中使用它时,出现错误:

靠近“(”:语法错误:

我在 SQLite 的任何文档中都找不到 Left 命令,所以我猜它不在那里,但我怎样才能让它工作呢。

SELECT 
    Left(fldcall, 3) AS Group1, 
    Mid(fldcall, 4, 1) AS Group2, 
    tblcalls.*, 
    tblzip.fldcity
FROM 
    tblcalls 
LEFT JOIN 
    tblzip ON tblcalls.fldzipcode = tblzip.fldzipcode;
Run Code Online (Sandbox Code Playgroud)

sql sqlite

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

循环TabSheet上的所有组件

我有以下代码,可以在我的标签页上的给定选项卡上循环所有组件.我已经尝试过在网上找到的相同代码的许多变体,但我根本无法让它工作.首先,我检查它是否是正确的选项卡 - 这是有效的.然后我检查看有多少组件 - 这不起作用.即使我现在有2个面板共有9个复选框,它也会显示0个组件.

procedure TfrmHsUsers.pagUsersClick(Sender: TObject);
var
  i: integer;
  Fieldname: string;
begin
  if pagUsers.Properties.ActivePage.Name = 'tabProgram' then
    begin
ShowMessage(IntToStr(pagUsers.Properties.ActivePage.ComponentCount));
      for i := 0 to pagUsers.Properties.ActivePage.ComponentCount - 1 do
        if (pagUsers.Properties.ActivePage.Components[i]) is TcxDbCheckBox then
          begin
            Fieldname := TcxDbCheckBox(pagUsers.Properties.ActivePage.Components[i]).DataBinding.DataField;
            TcxDbCheckBox(pagUsers.Properties.ActivePage.Components[i]).Enabled := Settings.License.IsEnabled(Fieldname);
          end;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

我的代码中可能有什么问题的任何提示?

delphi components count ttabsheet

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

将邮件从OutLook拉到文件

从我的Delphi程序中,我希望能够从OutLook中的某个文件夹中检索所有邮件,并将它们保存为文件.我需要检索发件人,主题,日期和消息iD,以便将信息保存在表格中(如果可能的话,更多部分)我希望将每封邮件保存在一个文件中,以便我以后可以访问它们.

delphi outlook message export

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