标签: delphi-5

如何最小化任务栏的窗口?(即没有iconify)

我有一个窗口,我想最小化(到任务栏),所以我打电话ShowWindow:

ShowWindow(Handle, SW_MINIMIZE);
Run Code Online (Sandbox Code Playgroud)

除了不是最小化自身(到任务栏),窗口被图标化:

在此输入图像描述

窗口是无人值守的:

在此输入图像描述

如何最小化任务栏的窗口?


更新:

根据2002年的一些建议,我尝试设置WS_EX_APPWINDOW窗口样式和/或确保窗口没有所有者:

在此输入图像描述

不幸的是,这改变了我的(Delphi)应用程序的行为,因为我的应用程序现在有两个任务栏图标,而不是一个:

在此输入图像描述

当然,这是Delphi(5)的神器; 因为我试图解决另一个问题.

但这不应该影响这个问题.我正在调用ShowWindow(..., SW_MINIMIZE)API,而不是最小化窗口Windows正在图标化应用程序.

如何最小化任务栏的窗口?

windows delphi delphi-5 windows-7 windows-95

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

如何验证文本框中是否只包含Delphi中的数字?

这可能是一个非常简单的问题,但我从未接触过delphi.我有一个编辑框,可以接受角色.但在某些特殊情况下,我必须验证编辑框字符只是数字.

我们怎么做?

注意:用户可以输入任何char,但在验证时我必须验证上面的一个.

delphi delphi-5

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

FastMM无法检测到内存泄漏

我在Delphi5的应用程序中使用FastMM 4.97.

一切都运行良好,如果我从IDE运行我的应用程序,故意泄漏用于测试目的.我得到适当的通知和错误日志.

但是,如果我在IDE之外运行我的应用程序(从Windows资源管理器运行.exe文件),则不会发生任何事情.

我错过了什么吗?这种行为是有意的吗?可以改变吗?

delphi memory-leaks memory-management delphi-5 fastmm

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

在Delphi 5中,Free可以提出例外吗?

在Delphi 5中,我目前编写的代码调用块中的Free多个变量finally,例如

...
finally
    a.Free;
    b.Free;
    c.Free;
end;
Run Code Online (Sandbox Code Playgroud)

这段代码假设Free永远不会引发,因为,例如,如果a.Free提出,内存bc将被泄露.这个假设是否合理?

delphi exception-handling delphi-5

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

在delphi中使用WebKit(Safari兼容)来模拟iPhone手机

有没有人在Delphi中成功使用过WebKit

WebKit是一个开源的Web浏览器引擎.WebKit也是Safari,Dashboard,Mail和许多其他OS X应用程序使用的引擎的Mac OS X系统框架版本的名称.

我想创建一个与电子设备相同的iPhone/iPad移动模拟器.(我试过免费版 - 似乎它也使用Adobe AIR).

使用Safari浏览器,我们可以为iPhone移动网站提供最准确的预览结果.所以我想在我的应用程序中嵌入WebKit(Safari使用),这样我的客户就可以对他们的移动网站进行可靠的预览.

我在网上搜索过,但找不到合适的代码.(我能找到的最好的是这个,但它不起作用).


Delphi Chromium Embedded在答案中提出的3个主要问题是:

  • 它不支持D5
  • 我可以克服这样一个事实,即不支持D5(在单独的进程或DLL中创建带有D7的组件)但是,它非常不稳定!我用D7测试了它:随机访问违规.
  • 它不会渲染具有div布局/ HTML5的HTML页面与Safari一样(或者电动 - "电动移动模拟器").

delphi iphone safari webkit delphi-5

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

当responseText包含有效的Xml时,IXMLHttpRequest.responseXml为空,没有解析错误

我从政府网站上获取一些XML :

http://www.bankofcanada.ca/stats/assets/rates_rss/noon/en_all.xml
Run Code Online (Sandbox Code Playgroud)

我正在使用以下相当简单的代码:

var
   szUrl: string;
   http: IXMLHTTPRequest;
begin
   szUrl := 'http://www.bankofcanada.ca/stats/assets/rates_rss/noon/en_all.xml';

   http := CoXMLHTTP60.Create;
   http.open('GET', szUrl, False, '', '');
   http.send(EmptyParam);

   Assert(http.Status = 200);

   Memo1.Lines.Add('HTTP/1.1 '+IntToStr(http.status)+' '+http.statusText);
   Memo1.Lines.Add(http.getAllResponseHeaders);
   Memo1.Lines.Add(http.responseText);
Run Code Online (Sandbox Code Playgroud)

我不会显示返回的所有正文,但它确实返回有效的xml responseText:

HTTP/1.1 200 OK
Cache-Control: max-age=5
Connection: keep-alive
Connection: Transfer-Encoding
Date: Fri, 30 Mar 2012 14:50:50 GMT
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
Expires: Fri, 30 Mar 2012 14:50:55 GMT
Server: Apache/2.2.16 (Unix) PHP/5.3.3 mod_ssl/2.2.16 OpenSSL/1.0.0d mod_perl/2.0.4 Perl/v5.12.0
X-Powered-By: PHP/5.3.3


<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://purl.org/rss/1.0/"
    xmlns:cb="http://www.cbwiki.net/wiki/index.php/Specification_1.1" …
Run Code Online (Sandbox Code Playgroud)

xml delphi xmlhttprequest serverxmlhttp delphi-5

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

在树视图节点中显示额外的文本,而不仅仅是node.text

我在Delphi中有一个TTreeView,其节点分为三个级别.

我使用节点数据来存储除节点文本之外的另一个标签.

Type
  TNodeData = class
    ExtraNodeLabel: WideString;
    //... other members
  end;
Run Code Online (Sandbox Code Playgroud)

我有一个OnAdvancedCustomDrawItem事件,我想ExtraNodeLabel在节点文本之前显示它. 我希望实现这一目标:

  • 蓝色文本将是额外的标签.
  • higlighted项目:前两个单词也是一个额外的标签

在此输入图像描述

到目前为止,我得到的是:

在此输入图像描述

问题:

  1. 出于某种原因,如果我使用DrawText/ drawTextW我不能用不同的样式绘制文本(因为unicode数据我需要drawtextW)
  2. 另一个问题是,虚线焦点矩形之外的任何东西都是不可点击的

需要解决的问题:

  1. 如何使用DrawText/ 绘制不同风格的文本DrawtextW
  2. 如何使整个文本可点击?

码:

procedure TMainForm.TntTreeView1AdvancedCustomDrawItem(
  Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
  Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
var
  txtrect, fullrect : TRect;
  DC: HDC;
  fs: integer;
  fc: TColor;
  ExtralabelRect: TRect;
  nData: TNodeData;
begin
  nData := nil;

  if assigned(Node.Data) then begin
    nData := TNodeData(Node.Data);
  end;

  DC := TntTreeView1.canvas.Handle;
  txtRect := …
Run Code Online (Sandbox Code Playgroud)

delphi treeview custom-draw delphi-5

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

如何在编辑框中接收TAB键?

我想OnKeyPress在用户按下Tab键时接收事件.

procedure TForm1.Edit1(Sender: TObject; var Key: Char);
begin
   case Key of
   #09:
      begin
         //Snip - Stuff i want to do
      end;
   end;
end;
Run Code Online (Sandbox Code Playgroud)

我尝试子类化Edit框,并处理WM_GETDLGCODE消息:

procedure TfrmEnableVIPMode.AccountNumberWindowProc(var Message: TMessage);
begin
   case Message.Msg of
   WM_GETDLGCODE: Message.Result := DLGC_WANTTAB;
   else
      FOldAccountNumberWindowProc(Message);
   end;
end;
Run Code Online (Sandbox Code Playgroud)

我现在收到Tab KeyPress事件(正如我所希望的那样),但现在按下LeftRight光标键会使焦点转移到Tab键顺序中的上一个或下一个控件.

收到Tab键按键事件的正确方法是什么?

奖金阅读

我试着做MSDN文档所说的内容:

wParam
用户按下的虚拟键,提示Windows发出此通知.处理程序必须有选择地处理这些键.例如,处理程序可能接受并处理VK_RETURN,但将VK_TAB委托给所有者窗口.有关值列表,请参阅虚拟键代码.

lParam指向MSG结构的指针(如果系统正在执行查询,则为NULL).

wParamwParam均为零.

更新二

我意识到我和这个答案有同样的错误:

if Message.Msg …
Run Code Online (Sandbox Code Playgroud)

delphi accessibility delphi-5 subclassing

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

如何在Delphi中连续运行视频文件?

我正在使用Delphi 5.

我想知道使用'TFilterGraph'完成avi文件播放的时间.我想自动一个接一个地运行多个avi文件.所以我下载了DSPack并使用了'TFilterGraph'和'TVideoWindow'组件.avi文件视频正常显示.我如何知道avi视频或任何视频已完成播放,以便我可以选择下一个avi或任何其他视频文件播放?

procedure TForm1.Button2Click(Sender: TObject);
begin
  videowindow1.FilterGraph:=filtergraph1; //query interfaces to video window
  filtergraph1.Active:=true;
  filtergraph1.RenderFile('I:\Project Part 1\Clips\More Clips\D.avi');
  filtergraph1.Play;
end;
Run Code Online (Sandbox Code Playgroud)

delphi directshow delphi-5 dspack

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

Delphi"default"关键字,旧版Delphi版本中包含Record类型

我在Delphi Detours库中有这个代码,我正在尝试移植:

type
  TInstruction = record
    Archi: Byte; { CPUX32 or CPUX64 ! }
    AddrMode: Byte; { Address Mode }
    Addr: PByte;
    VirtualAddr: PByte;
    NextInst: PByte; { Pointer to the Next Instruction }
    OpCode: Byte; { OpCode Value }
    OpType: Byte;
    OpKind: Byte;
    OpTable: Byte; { tbOneByte,tbTwoByte,... }
    OperandFlags: Byte;
    Prefixes: Word; { Sets of Prf_xxx }
    ...
  end;

var
  Inst: TInstruction;
begin
  ...
  Inst := default (TInstruction); // <-
  Inst.Archi := CPUX;
  Pvt := PPointer(AIntf)^; // vTable !
  PCode …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7 delphi-5

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