小编Jus*_*tMe的帖子

拖动节点时TTreeView选择毛刺

我正在实现拖放功能TTreeView.在OnStartDrag它的事件上,我正在创建DragOcject我的派生类:

  TTreeDragControlObject = class(TDragObject)
  private
    FDragImages: TDragImageList;
    FText: String;
  protected
    function GetDragImages: TDragImageList; override;
  end;

procedure TfrmMain.tvTreeStartDrag(Sender: TObject;
  var DragObject: TDragObject);
begin
  DragObject := TTreeDragControlObject.Create;
  TTreeDragControlObject(DragObject).FText := tvTree.Selected.Text;
end;
Run Code Online (Sandbox Code Playgroud)

这是我的覆盖GetDragImages函数DragObcject:

function TTreeDragControlObject.GetDragImages: TDragImageList;
var
  Bmp: TBitmap;
begin
  if FDragImages = nil then
  begin
    FDragImages := TDragImageList.Create(nil);
    Bmp := TBitmap.Create;
    try
      Bmp.Width := Bmp.Canvas.TextWidth(FText) + 25;
      Bmp.Height := Bmp.Canvas.TextHeight(FText);

      Bmp.Canvas.TextOut(25, 0, FText);

      FDragImages.Width := Bmp.Width;
      FDragImages.Height := Bmp.Height;
      FDragImages.SetDragImage(FDragImages.Add(Bmp, nil), 0, …
Run Code Online (Sandbox Code Playgroud)

delphi treeview drag-and-drop delphi-7

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

将输入的下一个控制重点放在重写的KeyUp上

我有我的自定义类扩展TEdit:

  TMyTextEdit = class (TEdit)
   private
     fFocusNextOnEnter: Boolean;
   public
    procedure KeyUp(var Key: Word; Shift :TShiftState); override;
   published
     property FocusNextOnExnter: Boolean read fFocusNextOnEnter
                                 write fFocusNextOnEnter default false;
  end;
Run Code Online (Sandbox Code Playgroud)

在KeyUp程序中我做:

procedure TMyTextEdit.KeyUp(var Key: Word; Shift: TShiftState);
begin
  inherited;

  if FocusNextOnExnter then
    if Key = VK_RETURN then 
      SelectNext(Self as TWinControl, True, false);
end;
Run Code Online (Sandbox Code Playgroud)

但它没有将焦点转移到下一个控制.我试过了

if Key = VK_RETURN then
      Key := VK_TAB;
Run Code Online (Sandbox Code Playgroud)

但它也没有用.我错过了什么?

delphi delphi-2010

9
推荐指数
3
解决办法
2万
查看次数

布尔值设置为true的类默认属性在运行时给出false

我有一个带布尔属性的简单组件类:

  TmyClass = class(TComponent)
    private
      fSomeProperty: boolean;
    published
      property SomeProperty: boolean 
                  read fSomeProperty 
                  write fSomeProperty
                  default true;

  end;
Run Code Online (Sandbox Code Playgroud)

我把它放在我的表单上,将其设置为true(SomeProperty设置为false,为什么?),但是当我尝试从运行时访问SomeProperty时它会给我错误.为什么会这样?

delphi delphi-2010

8
推荐指数
2
解决办法
7382
查看次数

delphi加载屏幕上的自定义组件

如何让我的自定义视觉控件出现在delphi启动画面上?

像这样:

delphi delphi-2010

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

OnClick事件覆盖

我的自定义类女巫来自TButton:

TLoginResultEvent = procedure (Sender: TObject; LoginResult: boolean) of object;
TLoginButton = class(TButton)
    private
      fLogin: TLoginChooser;
      fOnClick: TLoginResultEvent;
    public
      constructor Create(AOwner: TComponent); override;
      destructor Destroy; override;

      procedure OnClickResult(Sender: TObject; LoginResult: boolean);
    published
      property Login: TLoginChooser read fLogin write fLogin;
      property OnClick: TLoginResultEvent read fOnClick write fOnClick;
  end;
Run Code Online (Sandbox Code Playgroud)

在构造函数中我添加了:

constructor TLoginButton.Create(AOwner: TComponent);
begin
  inherited;

  fOnClick := OnClick;
  OnClick := OnClickResult;
end;
Run Code Online (Sandbox Code Playgroud)

但是当我点击按钮时它没有触发OnClickResult,我做错了什么?是否可以"覆盖"OnClick事件处理程序,还是应该隐藏它并制作示例OnResultClick事件?

delphi delphi-2010

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

从EndOfTheMonth(date)到Variant值的转换错误

我有一个TDateTime值(我得到的结果EndOfTheMonth(date))变量类型.结果错误地四舍五入.我们来看看例子:

  data := EndOfTheMonth(date);
  V := data;
  ShowMessage(DateTimeToStr(data) + ' vs ' + VarToStr(V));
 // output is
 // data = 2012-01-31 23:59:59
 // v    = 2012-02-01            // why next day?
Run Code Online (Sandbox Code Playgroud)

它是设计行为吗?如何解决这个问题?

delphi datetime rounding variant delphi-xe2

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

拖动网格时拖动图像更改

我正在StartDrag上创建自定义DragObject的实例:

procedure TForm1.GridStartDrag(Sender: TObject;
  var DragObject: TDragObject);
begin
  DragObject := TMyDragControlObject.Create(Sender as TcxGridSite);
end;
Run Code Online (Sandbox Code Playgroud)

最近在DragOver上的另一个网格上:

procedure TForm1.SecondGridDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := False;
  if Source is TMyDragControlObject then
    with TMyDragControlObject(Source) do
      // using TcxGrid
      if (Control is TcxGridSite) or (Control is TcxGrid) then begin
          Accept := True            

          // checking the record value on grid
          // the label of drag cursor will be different
          // getting the record value works fine!
          if RecordOnGrid.Value …
Run Code Online (Sandbox Code Playgroud)

delphi drag-and-drop draggable tcxgrid delphi-2010

5
推荐指数
2
解决办法
3269
查看次数

TIdHttp.Post - 无法获得utf-8编码

如何强制TIdHttp.post方法返回以utf-8编码的网页?我试过http.Request.ContentEncoding := 'UTF-8'但它没用.这是我的代码:

procedure TeUpdateNews.Check;
var url: string;
    Http: TIdHttp;
    SS: TStringStream;
    param: TStringList;
    SWIDESTRING: WideString;
begin
  http := TIDHttp.Create(nil);
  http.HandleRedirects := true;
  http.ReadTimeout := 5000;
  http.Request.ContentEncoding := 'UTF-8';

  param := TStringList.create;
  param.Clear;

  url := CONST_SOME_WWW;

  try
    SS := TStringStream.Create;
    try
      SWIDESTRING := http.Post(url, param);

       // it's not getting utf-8!
       ShowMessage(SWIDESTRING); 
    finally
      SS.Free;
      param.free;
    end;
  finally
    Http.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi indy delphi-xe2

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

说明 - 只插入一行

我正在尝试手动保存优化程序计划以进行进一步分析,如下所示:

do $$
declare
tmp text;
begin
  explain
    select * from public.some_table where 1=2 into tmp;
  insert into public.plans(plan) values (tmp);
end; $$
Run Code Online (Sandbox Code Playgroud)

但是当我稍后选择它时,我看到它只从explain语句中保存了第一行:

Result  (cost=0.00..82.97 rows=1 width=114)
Run Code Online (Sandbox Code Playgroud)

如何保存整个计划呢?

sql postgresql explain postgresql-9.3

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

何时以及如何模糊我的Delphi代码?

关于Delphi中的代码混淆,我应该知道些什么?

我应该或不应该这样做?

它是如何完成的,是否有任何好的工具(商业/免费)自动化它?

delphi obfuscation delphi-2010

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