小编Ian*_*oyd的帖子

如何在Delphi中将图片插入TRichEdit?

我在互联网上搜索了如何插入图片RichEdit.我只发现插入TImageRichedit或其他第三部分组件为我做.我不想使用其他组件或插入TImageRichEdit.

有没有其他方法可以做到这一点?

我想插入它,所以我可以使用段落操作,如对齐(插入TImage不提供这个,因为我在示例中找到并测试,我错了吗?).我想写一些类似于TJVRichEdit(在JVCL包中)发生的事情,在Richedit中重新调整大小的图片可以被忽略.

delphi delphi-xe3

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

如何使用TVirtualStringTree进行增量搜索

我正在学习TVirtualStringTree使用,必须实施增量搜索.当用户输入字符时,TEdit我想将焦点节点移动到树中的第一个合格节点.

我正在阅读我能找到的所有演示和示例代码,似乎无法找到这个的起点.谁能让我开始使用伪代码或更好?

delphi virtualtreeview tvirtualstringtree

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

默认应用程序域的卸载事件?

是否有一个卸载事件,或者任何事件,通知,消息,机制或挂钩,可以用来在“默认”应用程序域卸载之前得到通知?

我有一些代码需要知道应用程序域(几乎总是默认域)何时结束。

注意:我不知道开发人员在使用我的代码时将创建什么样的应用程序。它可能是:

  • 控制台应用程序
  • WinForms应用程序
  • 一个ASP.net应用程序
  • 一个ASP.net网站
  • 运行时可调用包装(RCW)COM对象
  • Windows资源管理器外壳程序扩展
  • 或Windows服务

无论哪种方式,我都需要知道域关闭的时间,以便我可以执行一些“工作”。而且我不会要求用户调用任何形式的“关闭”“清理”方法。(此外,建议要求用户自己调用方法并不能回答问题:这是有关在我正在运行的应用程序域关闭时收到通知的)。

也可以看看

c# clr appdomain

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

虚拟树视图。如何修改子列的宽度?

我的朋友正在使用 VirtualTreeView 在 Delphi 中工作,并且有下一个问题:他有两列,第一列中的每一行都有数据和子项。是否可以不更改第一列宽度来设置最大子列宽度?

任务

传奇:

  • 圆圈是节点
  • 矩形是文本(根节点的黑色矩形是两列)

现在的样子 - 看看孩子的黑色反应角。它必须如何 - 看红色矩形。

delphi virtualtreeview tvirtualstringtree

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

如何在 Windows PE 二进制文件中启用 ASLR?

如何启用可执行文件的地址空间布局随机化?

注意:我没有使用 Visual Studio 或任何提供/dynamicbase编译器选项的编译器。

出于本次讨论的目的,假设我正在向编译器添加功能以启用 ASLR。

其他 PE 标志

我已经知道如何设置其他 Windows 可执行映像选项。例如,然后IMAGE_FILE_NET_RUN_FROM_SWAP标记。您在 PE 二进制标头中设置 PE 选项:

LOADED_IMAGE li;
MapAndLoad(fileName), null, li, false, false)

LI.FileHeader.FileHeader.Characteristics |= IMAGE_FILE_NET_RUN_FROM_SWAP;

UnMapAndLoad(li)
Run Code Online (Sandbox Code Playgroud)

如何启用地址空间布局随机化?它是PE标志吗?它是组装清单条目吗?

奖金

我如何选择一个可执行文件进入 NX(不执行)?

aslr

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

在SSMS2012中禁用更改数据库兼容级别的选项

我正在尝试使用SQL Server Management Studio 2012来更改数据库的兼容级别,但是下拉列表已禁用:

在此输入图像描述

为什么选项被禁用?我如何启用它?

我尝试使用T-SQL手动更改它:

ALTER DATABASE AsiQuanClient
SET COMPATIBILITY_LEVEL =  110; --90 | 100 | 110 
Run Code Online (Sandbox Code Playgroud)

它仍然被禁用:

在此输入图像描述

为什么禁用它,我如何启用它?

奖金Chatter

Microsoft SQL Server Management Studio 11.0.3128.0

SELECT @@version

Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
    Dec 28 2012 20:23:12 
    Copyright (c) Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
Run Code Online (Sandbox Code Playgroud)

sql-server ssms sql-server-2012 ssms-2012

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

这个内存泄漏的来源是什么(使用TCollection时)

我有一些代码,我没有写,但有一个内存泄漏.真正的奇怪之处在于,如果我在返回结构之前将结构归零,则内存只会泄漏.

可重复的最小代码

泄漏在Delphi 5和Delphi 7中是可重现的.

首先我们有一个结构:

type
   TLocalFile = packed record
      FileName: AnsiString;
   end;
Run Code Online (Sandbox Code Playgroud)

此结构是CollectionItem对象的私有成员:

TEntry = class(TCollectionItem)
private
   FLocalFile: TLocalFile;
end;
Run Code Online (Sandbox Code Playgroud)

然后我们拥有拥有的集合,它具有可以返回填充结构的函数:

TEntries = class(TCollection)
protected
    function GetLocalFile: TLocalFile;
public
    procedure DoStuff;
end;
Run Code Online (Sandbox Code Playgroud)

由于功能中的怪异GetLocalFile:

function TEntries.GetLocalFile: TLocalFile;
var
    s: AnsiString;
begin
    //Only leaks if i initialize the returned structure
//  FillChar(Result, SizeOf(Result), 0);
    ZeroMemory(@Result, SizeOf(Result));

    s := 'Testing Leak';
    Result.Filename := s; //'Testing leak';  only leaks if i set the string through a …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7 delphi-5 fastmm

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

在启用调试信息的情况下,无法在发布配置中调试64位应用程序

我正在尝试调试Release Configuration中的应用程序- 64位Windows平台,但不会遇到任何断点.

我启用了编译器调试信息选项:

在此输入图像描述

可以32位版本配置中调试应用程序; 断点工作正常.

| Configuration | 32-bit     | 64-bit     |
|---------------|------------|------------|
| Debug         | Debuggable | Debuggable |
| Release       | Debuggable | Fails      |

All with "Debug information" set to "Debug information", 
and full build (Shift+F9) before running.
Run Code Online (Sandbox Code Playgroud)

所以有三个问题:

  • 为什么设置Debug信息适用于32位调试器,而不适用于64位dubugger?
  • 为什么64位调试器能够在Debug配置中调试应用程序,而不是在Release配置中?
  • 我可以更改哪个选项让我在Release配置中调试64位应用程序?

奖金截图

32位版本链接器选项:

在此输入图像描述

64位版本链接器选项:

在此输入图像描述

delphi 64-bit delphi-xe6

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

如何提取COM消息?

我想等待WebBrowser控件完成导航.所以我创建一个事件,然后我想等待它被设置:

procedure TContoso.NavigateToEmpty(WebBrowser: IWebBrowser2);
begin
   FEvent.ResetEvent;
   WebBrowser.Navigate2('about:blank'); //Event is signalled in the DocumentComplete event

   Self.WaitFor;
end;
Run Code Online (Sandbox Code Playgroud)

然后我在事件中设置DocumentComplete事件:

procedure TContoso.DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);
var
    doc: IHTMLDocument2;
begin
    if (pDisp <> FWebBrowser.DefaultInterface) then
    begin
       //This DocumentComplete event is for another frame
       Exit;
    end;

    //Set the event that it's complete
    FEvent.SetEvent;
end;
Run Code Online (Sandbox Code Playgroud)

问题在于如何等待此事件发生.

等待它

第一反应是等待事件被触发:

procedure TContoso.WaitFor;
begin
   FEvent.WaitFor;
end;
Run Code Online (Sandbox Code Playgroud)

问题在于DocumentComplete事件永远不会触发,因为应用程序永远不会空闲,以允许COM事件通过.

忙碌的睡眠等待

我的第一反应是忙着睡觉,等待一面旗帜:

procedure TContoso.NavigateToEmpty(WebBrowser: IWebBrowser2);
begin
   FIsDocumentComplete := …
Run Code Online (Sandbox Code Playgroud)

windows delphi com events winapi

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

使用TVirtualStringTree.OnGetImageIndex叠加图像

我想ImageList1vtTest组件中的图像显示为叠加层.

我已经在互联网上找到了很多资源,而且在这里 - 就像这样 - 但我不能让它们都没有正常工作.

我确定我错过了一些非常微不足道的东西,但我无法弄清楚它可能是什么.


我得到了什么:  在此输入图像描述       我想要的是:  在此输入图像描述


这是包含显示我的问题的基本示例的表单.

Unit1.pas

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VirtualTrees, Vcl.ImgList;

type
  PMyVtTestData = ^TMyVtTestData;
  TMyVtTestData = record
    isLocked: Boolean;
  end;

  TForm1 = class(TForm)
    vtTest: TVirtualStringTree;
    ImageList1: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure vtTestGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
      Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean;
      var ImageIndex: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: …
Run Code Online (Sandbox Code Playgroud)

delphi virtualtreeview tvirtualstringtree

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