标签: vcl

在DevExpress网格中显示提示中的单元格内容

我正在使用DevExpress的TcxGridDBTableView.有些单元格包含非常长的字符串,所以我希望能够使用提示向用户显示它们.我希望能够在我的文本中以分号的形式提示线刹.

你知道怎么做到这一点吗?

delphi vcl devexpress delphi-2009 tcxgrid

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

Dll可以为主程序提供模块化吗?

简单的任务:我想制作一个程序(parent.exe).有三个按钮.当我单击Button1时,出现Form1; 按钮2,Form2出现时; 当Button3,Form3出现时......

Form1,Form2,Form3存储在三个不同的dll(Form1dll.dll,Form2dll.dll,Form3dll.dll)中.

我想让父程序(parent.exe)运行模块化.我计划添加和删除dll,但Parent.exe要求所有dll都存在,否则会发生异常.

我该如何解决这个问题?

感谢名单

这是来自parent.exe的代码:

  procedure ShowForm1;stdcall;external 'Project1dll.dll' name 'ShowForm1';
  procedure ShowForm2;stdcall;external 'Project2.dll' name 'ShowForm2';
  procedure ShowForm3;stdcall;external 'Project3.dll' name 'ShowForm3';

var
  ParentForm: TParentForm;

implementation

{$R *.DFM}



procedure TParentForm.Button1Click(Sender: TObject);
begin
  ShowForm1;
end;

procedure TParentForm.Button2Click(Sender: TObject);
begin
  ShowForm2;
end;

procedure TParentForm.Button3Click(Sender: TObject);
begin
  ShowForm3;
end;
Run Code Online (Sandbox Code Playgroud)

delphi vcl

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

如何在运行时注册组件和属性编辑器?

一番搜索之后,它看起来像我不得不分配RegisterComponentsProcRegisterPropertyEditorProc,这是我做的事.

但是,我认为我可以调用我的设计时间寄存器功能,即<myComponentUnit>.Register();.

当我这样做时,我得到堆栈溢出,因为,好吧......

procedure myComponentUnit.Regiter;
begin
  RegisterPropertyEditor(TypeInfo(Integer), 
                         TMyComponent, 'myProperty',   TMyProperty);
Run Code Online (Sandbox Code Playgroud)

结束;

procedure RegisterPropertyEditor(PropertyType: PTypeInfo;
  ComponentClass: TClass; const PropertyName: string;
  EditorClass: TPropertyEditorClass);
begin
  if Assigned(RegisterPropertyEditorProc) then
    RegisterPropertyEditorProc(PropertyType, ComponentClass, PropertyName,
      EditorClass);
end;
Run Code Online (Sandbox Code Playgroud)

所以,我打电话给.Register();
调用RegisterPropertyEditorProc()
调用RegisterPropertyEditorProc()
调用RegisterPropertyEditor()<=== aaargh !!

那么,我应该在RegisterPropertyEditorProc的主体中拥有什么?

进一步搜索后,看起来我想DesignEditors.RegisterPropertyEditor()直接调用,但它不在界面部分......

delphi vcl

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

Delphi中类似WinDirStat的控件

WinDirStats程序(用C++编写,参见http://sourceforge.net/projects/windirstat/)在顶部有一个控件,它结合了树状结构("名称"列,左边第一个)和其他类型数据("子树百分比"列中的图形栏)和其他文本列.

我的问题是,使用Delphi 7,我应该使用哪种控制来做类似的事情?这是我觉得更难找到的树部分.

delphi vcl

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

如何在施工期间在TPanel后代设置标题?

TMyPanel = class(TPanel)
public
  procedure AfterConstruction; override;
end;

procedure TMyPanel.AfterConstruction;
begin
  inherited AfterConstruction;
  Caption := '';
end;
Run Code Online (Sandbox Code Playgroud)

我想在构造期间清除标题,但是这段代码不能像我期望的那样工作.它不会将标题设置为空字符串.如果我将''(空格)分配给Caption,它将保留,但这不是一个合适的解决方案.

我正在使用Delphi 2006.

delphi vcl

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

自定义组件TImage事件导致错误"不存在"

我有一个自定义组件,包含以下事件

 private
    { Private declarations }
    ...
    fOnImageClick: TNotifyEvent;
    fOnImageMouseUp: TMouseEvent;
    fOnImageMouseDown: TMouseEvent;
    fOnImageMouseMove:  TMouseMoveEvent;
    fOnImageMouseEnter: TNotifyEvent;
    fOnImageMouseLeave: TNotifyEvent;
    fOnImageSelect: TNotifyEvent;
    fOnImageDblClick: TNotifyEvent;
  protected
    ...
  public
    { Public declarations }
     ...
  published
     ...
     property OnImageClick: TNotifyEvent read  fOnImageClick write  fOnImageClick;
     property OnImageSelect: TNotifyEvent read  fOnImageSelect write  fOnImageSelect;
     property OnImageDblClick: TNotifyEvent read  fOnImageDblClick write  fOnImageDblClick;
     property OnImageMouseDown: TMouseEvent read  fOnImageMouseDown write  fOnImageMouseDown;
     property OnImageMouseUp: TMouseEvent read  fOnImageMouseUp write  fOnImageMouseUp;
     property OnImageMouseMove:  TMouseMoveEvent read  fOnImageMouseMove write  fOnImageMouseMove;
     property OnImageMouseLeave: TNotifyEvent read  fOnImageMouseLeave …
Run Code Online (Sandbox Code Playgroud)

delphi vcl delphi-2010

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

Delphi中编译时设置数据库连接断开的方法

是否有方法或编译器指令或某种方式来确保某些组件(例如查询或数据库连接)在运行构建/编译时设置为 active=false 或断开连接?这些似乎经常被其他东西打开,直到为时已晚你才注意到它。

我的特定安装是 Delphi 7

delphi vcl database-connection delphi-7

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

打开dfm文件时出错 - 找不到类xxxx

通过双击打开dfm文件时,我收到以下错误:

Class TMyClass not found. Ignore the error and continue? Note: Ignoring the error may cause components to be deleted or property values to be lost.
Run Code Online (Sandbox Code Playgroud)

当我单击取消时,我收到以下消息

Error creating form: Class TMyClass not found.
Run Code Online (Sandbox Code Playgroud)

当我单击"确定"时,仅打开pas文件.

在pas文件中添加了MyClass单元(其中包含了TMyClass定义),并且它的路径也添加到了我的搜索路径中(按住单击名称的Ctrl,将我带到单元文件)

一切都很好,就像我一样.我不知道为什么我收到此错误,为什么我无法在RAD工作室中打开此dfm文件?请帮忙.

delphi vcl delphi-xe4

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

创建 Firemonkey 表单并按代码填充

我正在将 VCL 组件移植到 FMX。99% 的代码是纯对象 pascal,所以工作得很好 - 但我有一个方法可以创建一个表单,用按钮和文本框填充它,这在 FMX 下根本不起作用。

手动创建表单然后从代码填充它的重点是确保它在 VCL、LCL 和 FMX 下编译;并且它在 iOS、Android 和任何使用的平台下也能正常显示。

但我不断收到“资源 /classname/ 未找到”,其中/classname/是我给我的临时表单类的任何类名。

像这样简单的事情会产生错误:

type
TMyDialogForm = Class(TForm);

procedure TForm1.Button1Click(Sender: TObject);
var
  LDialog:  TMyDialogForm;
begin
  LDialog := TMyDialogForm.Create(application.MainForm);
  try
    LDialog.Caption := 'Yahoo!';
  finally
    LDialog.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

由于错误涉及资源,我怀疑它正在寻找某种类型的布局数据。我刚刚开始玩 FMX,我确实注意到不同的平台允许不同的布局。但我必须承认,无论您的目标平台是什么,我都希望它回退到默认主题。

那么 - 我究竟如何通过代码创建表单,填充它并使用 Firemonkey 显示 ut 而不会遇到这种错误?它在 VCL 和 LCL 下工作得很好,但 FMX 一直在处理资源。

请不要告诉我所有的表格都必须设计?

delphi vcl firemonkey

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

是否可以将 jpg/png 图像加载到 TbitBtn 或 TSpeedButton 中?

我需要在按钮中显示图像,以便用户在视觉上更容易知道按钮的用途,而不是阅读其文本。

据我所知TBitBtnTSpeedButton按钮可以显示图像,但我对此一无所知,我想知道是否可以拥有 .JPG 或 .PNG 文件并将该图像加载到按钮中它显示它。

delphi vcl

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