我正在使用DevExpress的TcxGridDBTableView.有些单元格包含非常长的字符串,所以我希望能够使用提示向用户显示它们.我希望能够在我的文本中以分号的形式提示线刹.
你知道怎么做到这一点吗?
简单的任务:我想制作一个程序(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) 一番搜索之后,它看起来像我不得不分配RegisterComponentsProc和RegisterPropertyEditorProc,这是我做的事.
但是,我认为我可以调用我的设计时间寄存器功能,即<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()直接调用,但它不在界面部分......
WinDirStats程序(用C++编写,参见http://sourceforge.net/projects/windirstat/)在顶部有一个控件,它结合了树状结构("名称"列,左边第一个)和其他类型数据("子树百分比"列中的图形栏)和其他文本列.
我的问题是,使用Delphi 7,我应该使用哪种控制来做类似的事情?这是我觉得更难找到的树部分.
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.
我有一个自定义组件,包含以下事件
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) 是否有方法或编译器指令或某种方式来确保某些组件(例如查询或数据库连接)在运行构建/编译时设置为 active=false 或断开连接?这些似乎经常被其他东西打开,直到为时已晚你才注意到它。
我的特定安装是 Delphi 7
通过双击打开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文件?请帮忙.
我正在将 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 一直在处理资源。
请不要告诉我所有的表格都必须设计?
我需要在按钮中显示图像,以便用户在视觉上更容易知道按钮的用途,而不是阅读其文本。
据我所知TBitBtn,TSpeedButton按钮可以显示图像,但我对此一无所知,我想知道是否可以拥有 .JPG 或 .PNG 文件并将该图像加载到按钮中它显示它。
delphi ×10
vcl ×10
delphi-2009 ×1
delphi-2010 ×1
delphi-7 ×1
delphi-xe4 ×1
devexpress ×1
firemonkey ×1
tcxgrid ×1