您知道在Visual Studio中,您可以使用"+ ="语法和几个选项卡让它自动生成事件处理程序的代码吗?
我如何在Delphi中完成同样的事情?我正在尝试为我使用导入组件功能导入的不可见activex库中的事件创建事件处理程序.
我意识到,使用导入的activex控件,您只需单击该对象,浏览事件选项卡以获取该组件提供的内容,然后双击该事件以使其为您生成一个.
这些特定的activex组件是不可见的,因此您可以在表单上选择它们.Delphi可以自动生成代码吗?如果没有,有人可以指点我一些示例代码吗?
我做了一个简短的谷歌,发现什么,但我觉得我应该问.我真的不希望有任何东西,但宁愿现在问一个没有答案的问题,而不是问问题何时出错,并发现每个人都知道'陷阱'......!
为了使整体支持/开发生活更轻松(并引入madExcept等),我将采用D5编写的半GUI应用程序(使用NativeDB连接到ASA6)并将其移植到D2007,最终将其转换为D2007进入控制台应用程序和/或服务.(目前的GUI只是一个荣耀的开始/停止按钮和活动日志).
它是一个经典的TServerSocket应用程序,在指定的端口上进行监听,并在客户端连接时执行各种操作.我并不期待NativeDB方面存在任何大问题,但我想知道,就TServerSocket而言,D5和D2007之间是否有任何变化(错误修复,改进)?
我们不使用阻塞套接字,Indy等 - 它只是来自scktcomp单元的TServerSocket,直接来自D5 Enterprise盒.除非在D2007下TServerSocket出现问题,否则我不打算大幅更改代码.:-)
我试图在Vista机器上调试Delphi 2007中的应用程序.该应用程序最初是为XP编写的,因此必须以管理员权限运行.我知道我可以将一些信息放入清单或更新代码,但我正在寻找可以在我所有项目中使用的快速修复.
有谁知道是否有一种简单的方法让Delphi在Vista中以管理员身份启动应用程序?
我有一个Delphi应用程序,它使用TOpenDialog让用户选择一个文件.默认情况下,打开的对话框以当前监视器为中心显示,现在可以离应用程序窗口"英里".我希望对话框以TOpenDialog的所有者控件为中心显示,如果失败了,我会选择应用程序的主窗口.
以下代码类型的工作,它是从TJvOpenDialog派生的,它给了我一些如何做到的提示:
type
TMyOpenDialog = class(TJvOpenDialog)
private
procedure SetPosition;
protected
procedure DoFolderChange; override;
procedure WndProc(var Msg: TMessage); override;
end;
procedure TMyOpenDialog.SetPosition;
begin
var
Monitor: TMonitor;
ParentControl: TWinControl;
Res: LongBool;
begin
if (Assigned(Owner)) and (Owner is TWinControl) then
ParentControl := (Owner as TWinControl)
else if Application.MainForm <> nil then
ParentControl := Application.MainForm
else begin
// this code was already in TJvOpenDialog
Monitor := Screen.Monitors[0];
Res := SetWindowPos(ParentWnd, 0,
Monitor.Left + ((Monitor.Width - Width) div 2),
Monitor.Top + ((Monitor.Height - Height) div …Run Code Online (Sandbox Code Playgroud) 我在Delphi IDE(Delphi 2007)的主菜单中添加了一个新条目,并将bmp图像添加到与菜单关联的图像列表中(不将掩码作为参数传递)
IDEMainMenu.Images.Add(Image,nil);
Run Code Online (Sandbox Code Playgroud)
但添加的图像没有显示透明色,我尝试使用8和24位bmp并使用fucsia作为背景颜色,但ide始终显示带背景的图标.所以问题是which is the color depth of the bmp images which i must use and the color of the backgrpund to make appear the image transparent in the delphi ide menu?或者我需要将掩码bmp传递给Images.Add函数?
在我看来,静态类方法和常规例程指针从实际角度兼容,但编译器不知道这一点.例:
type
TFunc = function(i: Integer): string;
TMyClass = class
public
class function StaticMethod(i: Integer): string; static;
end;
class function TMyClass.StaticMethod(i: Integer): string;
begin
Result := '>' + IntToStr(i) + '<';
end;
function GlobalFunc(i: Integer): string;
begin
Result := '{' + IntToStr(i) + '}';
end;
procedure CallIt(func: TFunc);
begin
Writeln(func(42));
end;
begin
CallIt(TMyClass.StaticMethod); // 1a: doesn't compile
CallIt(GlobalFunc); // 1b: compiles
CallIt(@TMyClass.StaticMethod); // 2a: compiles iff $TYPEDADDRESS OFF
CallIt(@GlobalFunc); // 2b: compiles iff $TYPEDADDRESS OFF
CallIt(Addr(TMyClass.StaticMethod)); // 3a: compiles
CallIt(Addr(GlobalFunc)); …Run Code Online (Sandbox Code Playgroud) 我有一个问题,在Windows Server 2003或2008等64位窗口中运行时,表单上的内容未更新正确.有一个简短的视频在截屏视频中说明了这一点.
当我调整主窗口的大小时,内容不会重新绘制.但如果我更换小分割器,它会重新粉刷.在32位Windows上,一切都很完美.我没有为此做过任何OnResize事件.
有任何想法吗 ?
编辑:是的,可执行文件是32位.它只是64位的Windows操作系统.
我想创建一个以shorttring数组作为参数的过程
procedure f(const a, b: Array of shortstring);
Run Code Online (Sandbox Code Playgroud)
我想用已知长度和已知长度的短串的数组来称呼它,例如
var
A, B: array[1..2] of string[5];
C, D: array[1..40] of string[12];
begin
f(A,B);
f(C,D);
end;
Run Code Online (Sandbox Code Playgroud)
这导致编译器错误E2008不兼容的类型.这是为什么?我可以编写一个可以获取shorttring数组的过程(任何长度的数组/字符串)吗?
为什么要使用短裤?
缺点是现有记录中的字段.这些记录有很多短线串.为了将数据从turbo power B-Tree Filer迁移到SQL数据库,一步是将记录转换为数据集,然后返回记录,以确认所有字段都在两个方向上正确转换.我一直在使用CompareMem记录来检查这一点,但它没有提供关于转换错误所在的字段的足够信息.因此创建了一个小程序,从记录定义中可以生成代码来比较两个记录.对于这个代码生成器,我需要一个函数来比较shorttrings.它最终CompareMem用于短线.
我正在尝试截取屏幕特定部分的屏幕截图.这是我要"剪切"的屏幕部分的坐标:
左:442上:440右:792下:520
也就是说,宽度为350px,高度为80px的矩形.但我不知道如何使用CopyRect来完成这项任务,而不是我得到一个空白的图像.这是我的代码:
function screenshot: boolean;
var
Bild : TBitmap;
c: TCanvas;
rect_source, rect_destination : TRect;
begin
c := TCanvas.Create;
bild := tbitmap.Create;
c.Handle := GetWindowDC(GetDesktopWindow);
try
rect_source := Rect(0, 0, Screen.Width, Screen.Height);
rect_destination := Rect(442,440,792,520);
Bild.Width := 350;
Bild.Height := 80;
Bild.Canvas.CopyRect(rect_destination, c, rect_source);
Bild.savetofile('c:\users\admin\desktop\screen.bmp');
finally
ReleaseDC(0, c.Handle);
Bild.free;
c.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud) 我试图检测Ctrl+ V从TEdit的OnKeyPress事件,我已经注意到,Key当按下参数假定一个不寻常的值Ctrl+ AnyKey.
例:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
ShowMessage(IntToStr(Ord(Key)));
end;
Run Code Online (Sandbox Code Playgroud)
它产生以下结果:
我不明白如何翻译密钥,这些代码是什么意思?
它似乎与ASCII表无关:
谁能对此有所了解?
delphi ×10
delphi-2007 ×10
64-bit ×1
activex ×1
arrays ×1
delphi-5 ×1
delphi-xe ×1
ota ×1
windows-xp ×1
winsockets ×1