小编Car*_*lho的帖子

如何知道在处理TTN_LINKCLICK消息后点击气球上的链接?

TLama先生回答了我的最后一个问题(如何捕获TTN_LINKCLICK通知?)之后,有一点未得到答复,因为没有问过:)

如果有多个链接,如何识别我在气球上点击的每个链接?

我希望能够在气球中包含多个链接,并以不同方式响应点击.

delphi winapi notifications tooltip

7
推荐指数
2
解决办法
343
查看次数

协调错误:有没有人遇到截断错误消息的问题?

我在这里再次向你寻求帮助.这次我相信,鉴于我将涉及的问题的特殊性,很少有人会作出回应.我开始在DataSnap的世界里,仍然有一些我不明白我将如何关联这个错误的事情.

我的Delphi是XE(版本1,Update1).我正在使用Postgres生成葡萄牙语(葡萄牙语巴西)的错误消息,因此错误消息有重音符号.连接组件是ZeosLib包.

我正在使用一个对话框"reconcile error"来显示更新应用程序产生的错误并进行测试,我试图插入已存在的记录,从而违反了一个唯一的密钥,从而显示了协调错误对话框.

在对话框的备忘录中,出现的消息被截断,即被剪切.看看这个:

ERRO:  duplicar valor da chave viola a restrição de unicidade "uc_usu_va_login"
DETAIL:  Chave (va_login)=(admin) já existe.
CONTEXT:  comando SQL "INSERT INTO USUARIOS (VA_NOME
                           ,VA_LOGIN
                           ,CH
Run Code Online (Sandbox Code Playgroud)

但实际应该返回的是:

ERRO:  duplicar valor da chave viola a restrição de unicidade "uc_usu_va_login"
DETAIL:  Chave (va_login)=(admin) já existe.
CONTEXT:  comando SQL "INSERT INTO USUARIOS (VA_NOME
                               ,VA_LOGIN
                               ,CH_SENHA
                               ,VA_EMAIL)
                        VALUES (pVA_NOME
                               ,pVA_LOGIN
                               ,pCH_SENHA
                               ,pVA_EMAIL)"
    PL/pgSQL function "idu_usuarios" line 7 at comando SQL
Run Code Online (Sandbox Code Playgroud)

我在服务器上做了一个调试,看看问题是否是ZeosLib,但我发现服务器上生成的错误消息已经完成,证明ZeosLib没有截断消息.一切都是unicode.我的程序和ZeosLib中的所有字符串都是WideString(默认值).

如你所知,要抛出服务器,异常会被DataSnap转发给客户端,在客户端,TClientDataSet的Reconcile方法验证是否存在问题,然后抛出可能出现的着名异常EReconcileError在TClientDataSet的OnReconcileError事件中处理,因此我认为该消息被DataSnap截断.

在客户端我调试Reconcile方法(DBClient.pas),并在抛出异常之前,流进入cpp源代码中的函数,我认为这是库midas.dll,MidasLib.obj的一部分更具体,因为我是使用此策略,不必使用我的应用程序分发DLL.

Check(FDSBase.Reconcile_MD(FReconcileDataSet.FDSBase, FDeltaPacket, VarToDataPacket(Results), Integer(Self), RCB));
Run Code Online (Sandbox Code Playgroud)

此调用在Delphi XE …

delphi tclientdataset datasnap

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

如何从midas源代码构建midas.obj

最近我在midas上发现了一个问题并且我修复了它,现在的问题是我想使用MidasLib而不是midas.dll和源代码我只能构建DLL.

源代码是C++,我对它的知识很少.我知道MidasLib.pas在内部使用midas.obj,所以我需要创建它以将midas静态链接到我的应用程序.如何在C++ Builder上完成?(XE)

c++ delphi datasnap static-linking .obj

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

如何捕获TTN_LINKCLICK通知?

我正在尝试使用"tooltips_class32"实现一个简单的气球提示.事实上,除了气球上的链接外,所有行为都是正确的.

我的气球正确创建,我可以看到链接,但当我点击链接没有任何反应.

我试图在两个窗口过程中捕获TTN_LINKCLICK通知.我的工具提示之一和我的工具提示的父窗口之一.

我知道这个通知是以WM_NOTIFY的形式发送的,但是当我删除链接时什么也没做.

那么,如何捕获TTN_LINKCLICK通知?如何让这个在Delphi上运行?

下面是我的TKRKBalloonHint组件的完整代码.

unit KRKBalloonHint;

interface

uses
  SysUtils, Classes, Graphics, ExtCtrls, Types, CommCtrl, Controls, Messages,
  Windows;

type
  TTipIcon = (tiNone,tiInfo,tiWarning,tiError,tiInfoLarge,tiWarningLarge,tiErrorLarge);

  TTipAlignment = (taTopLeft,taTopMiddle,taTopRight,taLeftMiddle,taRightMiddle,taBottomLeft,taBottomMiddle,taBottomRight,taCustom);

  TMaxWidth = 0..320;

  TKRKBalloonHintOption = (kbhoActivateOnShow, kbhoSetFocusToAssociatedWinContronOnDeactivate, kbhoHideOnDeactivate, kbhoHideWithEnter, kbhoHideWithEsc, kbhoSelectAllOnFocus);
  TKRKBalloonHintOptions = set of TKRKBalloonHintOption;

  TKRKBalloonHint = class(TComponent)
  private
    FParentHandle: HWND;
    FAutoGetTexts: Boolean;
    FMaxWidth: TMaxWidth;
    FBackColor: TColor;
    FForeColor: TColor;
    FVisibleTime: Word;
    FDelayTime: Word;
    FTipHandle: THandle;
    FAssociatedWinControl: TWinControl;
    FTipTitle: String;
    FTipText: String;
    FTipIcon: TTipIcon;
    FTipAlignment: TTipAlignment;
    FShowWhenRequested: Boolean;
    FCentered: Boolean;
    FForwardMessages: Boolean;
    FAbsolutePosition: Boolean; …
Run Code Online (Sandbox Code Playgroud)

delphi winapi notifications tooltip

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