小编Rob*_*ank的帖子

将DeDe常量转换为有效声明或其他接口提取工具?

我正在使用DeDe创建一个我可以编译的API(接口).(严格合法:当我们等待供应商在两个月内交付D2010版本时,我们至少可以让我们的应用程序编译......)

我们将剔除所有方法.

Dede发出如下的常量声明:

  LTIMGLISTCLASS = 
    00: ÿÿÿÿ....LEADIMGL|FF FF FF FF 0D 00 00 00 4C 45 41 44 49 4D 47 4C|
    10: IST32.          |49 53 54 33 32 00|;

  DS_PREFIX = 
    0: ÿÿÿÿ....DICM.|FF FF FF FF 04 00 00 00 44 49 43 4D 00|;

我如何将这些转换为可编辑的声明?

从理论上讲,我不关心实际值,因为我怀疑它们在任何地方使用,但我想让它们的大小正确.这些整数,LongInts还是???

任何其他关于使用DeDe的提示都会受到欢迎.

delphi decompiling

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

Delphi 2010"is"声明的行为与Delphi 7不同?

为什么以下代码在Delphi 7中返回TRUE而在Delphi 2010中返回FALSE?TBitBtn是TButton的后代.

    type
      TForm1 = class(TForm)
        Button1: TButton;
        BitBtn1: TBitBtn;
        procedure Button1Click(Sender: TObject);
      private
      public
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TestControl( aControl: TControl);
    begin
      if (aControl is TButton) then showmessage('TRUE') else showmessage('FALSE');
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      TestControl(BitBtn1);
    end;
Run Code Online (Sandbox Code Playgroud)

delphi

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

TCheckListBox项目的唯一提示?

当用户将鼠标向下移动到TCheckListBox中的项目列表时,如何显示特定于鼠标下项目的提示?

在Delphi 2010中.

汤姆

delphi

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

Graphics32:使用鼠标拖动平移,使用鼠标滚轮缩放到鼠标光标

当我单击并拖动鼠标时,我需要实现一个平移,并且使用鼠标滚轮朝向/远离鼠标光标进行缩放/缩放.(在Delphi 2010中,图像锚定在表单的左侧,右侧,顶部,底部.)

我刚安装了Graphics32,看看它的内置滚动条和.Scale如何允许其中一些.到目前为止,至少可以轻松实现这一目标.

问题:

Graphics32是一个很好的工具吗?我可能会研究其他(也许更简单的)工具吗?

有没有人有关于如何实现上述的指针或示例代码?

谢谢.

delphi

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

如何确定Windows主题TColors

我正在仿效(尽可能)TPopup菜单,以便它可以浮动,用户可以拖动它.

为此,它采用自己的形式,并使用TPanels,就好像它们是可点击的TMenuItems一样.

我正在使用TPanels,所以我可以改变它们的颜色.

为了获得正确的颜色,我如何在运行时(在Delphi 2010中)确定TMenuItem.Color和TMenuItem.Font.Color的当前主题颜色(假设存在这样的属性).

TIA

编辑

我可以使用clBtnFace作为背景,使用clWindowText作为文本颜色.但是,我需要知道鼠标在菜单选择上的主题颜色.

delphi colors custom-controls delphi-2010

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

如何自动扩展"在文件中查找"结果

简单的问题,(简单点!)

在Delphi 2010中(更新4和5)"在文件中查找"显示每个文件关闭树的结果.我必须单击加号才能打开每个文件的结果.

我知道有一种方法可以配置IDE以自动显示所有树打开的结果,但由于某种原因(我的疲劳?)我无法找到设置该选项的位置.

汤姆

一年后编辑:我在这里重新提出这个问题:在消息窗口中自动扩展"在文件中查找"的结果,得到了一个很好的答案:

 "[Use the] Group results by file" checkbox on the Find In Files dialog. 
Run Code Online (Sandbox Code Playgroud)

不知何故,我忽略了这一点!我发布了这个编辑,以便将来的其他读者可以在这里找到它.

delphi

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

名称/值对上的TStringList CustomSort方法

是否可以使用名称/值对中的名称在TStringList上使用customSort

我当前正在使用TStringList对每个pos中的一个值进行排序.我现在需要使用此值添加其他数据,因此我现在使用TStringList作为名称/值

我目前的CompareSort是:

function StrCmpLogicalW(sz1, sz2: PWideChar): Integer; stdcall;
  external 'shlwapi.dll' name 'StrCmpLogicalW';


function MyCompare(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result := StrCmpLogicalW(PWideChar(List[Index1]), PWideChar(List[Index2]));
end;
Usage:
  StringList.CustomSort(MyCompare);
Run Code Online (Sandbox Code Playgroud)

有没有办法修改它,以便它根据名称值对的名称进行排序?

或者,还有另一种方式吗?

delphi delphi-2010

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

Delphi 2010中的BalloonHint.ShowHint获得控件的提示作为标题

这是我第一次使用BalloonHints.我正在使用Delphi 2010.

我不确定我是否正确使用提示,因为在下面的场景中,我得到了两次相同文本的提示:一次作为标题,一次作为正文.我已经挣扎了一段时间,这里也提到了其他帖子,Delphi的帮助,以及Cantu在D2009手册中的例子.

如果检测到用户需要单击按钮,我希望我的代码弹出一个提示.然后我想要显示相同的提示,如果用户稍后将鼠标悬停在按钮上.

按照以下顺序,在步骤3中,按钮的提示文本显示为气球文本上的标题,就好像有一个管道符...

第1步:调用ShowHint.提示正确显示,然后正常消失.

第2步:用户将鼠标移到按钮上.按钮的提示正确显示.

第3步:再次调用ShowHint.出现的提示具有来自气球提示的描述中的正确文本,但它具有来自按钮的标题.

Procedure TForm.ShowHintIfNeeded.
var
  Pt: TPoint;
begin
  if fNeedFileName then
  begin
    BalloonHint1.Description := 'Click this button to open';
    Pt.X := btnOpenFile.Width Div 2;
    Pt.Y := 0;
    BalloonHint1.ShowHint(btnOpenFile.ClientToScreen(Pt));
  end;
end;
Run Code Online (Sandbox Code Playgroud)

和我的按钮的dfm:

object btnOpenFile: TBitBtn
  Hint = 'Click this button to open'
  CustomHint = BalloonHint1
  ShowHint = True
end
Run Code Online (Sandbox Code Playgroud)

delphi

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

Delphi中的StringBuilder.Split?

有人知道在Delphi中使用StringBuilder的好的Split过程吗?

delphi

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

OO设计:使用属性还是重载方法?

关于OO设计的问题.

假设我有一个基础对象车辆.还有两个后代:卡车和汽车.

此外,假设基础对象具有基本方法:

Procedure FixFlatTire(); abstract;
Run Code Online (Sandbox Code Playgroud)

当卡车和汽车覆盖基础对象时,它们需要来自呼叫者的不同信息.

我最好在两个后代对象中像这样重载FixFlatTire:

Procedure Truck.FixFlatTire( OfficePhoneNumber: String;
                             NumberOfAxles: Integer): Override; Overload;

Procedure Automobile.FixFlatTire( WifesPhoneNumber: String;
                                  AAAMembershipID: String): Override; Overload;
Run Code Online (Sandbox Code Playgroud)

或者在每个后代中引入新属性,然后在调用FixFlatTire之前设置它们,如下所示:

Truck.OfficePhoneNumber := '555-555-1212';
Truck.NumberOfAxles := 18;
Truck.FixFlatTire();

Automobile.WifesPhoneNumber := '555-555-2323';
Automobile.AAAMembershipID  := 'ABC';
Automobile.FixFlatTire();
Run Code Online (Sandbox Code Playgroud)

delphi oop

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

检测到Dbgrid处于拖动模式

如何检测TDbGrid当前是否处于"拖动模式",用户将一行(或多行)拖动到另一个组件.

我以为:

 if Screen.Cursor = DBGrid.DragCursor then   
Run Code Online (Sandbox Code Playgroud)

但这似乎太暴力了.

我可以使用OnStartDrag和OnEndDrag事件来跟踪自己.

我无法在TDbGrid中找到指示当前模式的属性.

有什么建议?

delphi

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

标签 统计

delphi ×11

delphi-2010 ×2

colors ×1

custom-controls ×1

decompiling ×1

oop ×1