小编Sal*_*dor的帖子

具有csOwnerDrawFixed样式的Combobox如何表现得像csDropDown样式?

我正在使用一个TComboBox组件,其style属性设置为csOwnerDrawFixed,我实现了OnDrawItem并且一切正常,现在我想要哪个组合框表现得像csDropDown样式(csOwnerDrawFixed样式的行为类似于csDropDownList样式),我的意思是内部编辑.这可能吗?

delphi ownerdrawn delphi-xe tcombobox

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

如何使用Delphi在控制台应用程序中激活玻璃效果(Windows Vista/7)

因为我可以在我的控制台应用程序上激活玻璃效果.我使用的是Windows 7和Delphi 2010.

我发现这个应用程序应该是可能的.

delphi console-application windows-vista windows-7 aero-glass

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

如何在不可见时强制加载Twebbrowser控件中的页面

我需要从delphi代码执行一些javascript函数,但如果页面未在Twebbrowser控件中加载,则此函数将失败.所以问题是如果页面位于一个未激活的tabhet中,则在标签页变为活动状态之前不会加载页面.

问题是如何在Twebbrowser不可见的情况下强制加载控件中的页面.

测试这个行为只是在第二个标签页中放置一个pagecontrol,带有2个tabheet和一个twebbrowser,现在在表单的oncreate事件中放入此代码

WebBrowser1.Navigate('http://stackoverflow.com');
Run Code Online (Sandbox Code Playgroud)

现在,当您运行应用程序时,页面仅在您显示第二个标签页时加载.

提前致谢.

delphi twebbrowser

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

在TListView中绘制一个复选框

我需要在a中的特定列中绘制一个复选框TListView,所以我检查这个问题How can I setup TListView with CheckBoxes in only certain columns?并在接受的答案中建议使用另一个问题中描述的方法How to set a Checkbox TStringGrid in Delphi?,现在移植该代码以使用ListView我带有这个:

procedure TForm15.ListView1CustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
const
  PADDING = 4;
var
  h    : HTHEME;
  s    : TSize;
  r    : TRect;
  Rect : TRect;
  i    : Integer;
  Dx   : Integer;
begin
  if (SubItem=1) then
  begin
    DefaultDraw:=True;
    Rect  :=Item.DisplayRect(drBounds);
    Dx:=0;

    for i := 0 to SubItem do
    Inc(Dx,Sender.Column[i].Width);
    Rect.Left  :=Rect.Left+Dx;

    Rect.Right :=Rect.Left+Sender.Column[SubItem+1].Width; …
Run Code Online (Sandbox Code Playgroud)

delphi checkbox listview tlistview delphi-xe

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

如何使用delphi检查XML文件是否格式正确?

如何检查xml文件是否格式正确,没有无效的字符或标记.

例如,考虑这个xml

<?xml version="1.0"?>
<PARTS>
   <TITLE>Computer Parts</TITLE>
   <PART>
      <ITEM>Motherboard</ITEM>
      <MANUFACTURER>ASUS</MANUFACTURER>
      <MODEL>P3B-F</MODEL>
      <COST> 123.00</COST>
   </PART>
   <PART>
      <ITEM>Video Card</ITEM>
      <MANUFACTURER>ATI</MANUFACTURER>
      <MODEL>All-in-Wonder Pro</MODEL>
      <COST> 160.00</COST>
   </PART>
</PARTSx>
Run Code Online (Sandbox Code Playgroud)

最后一个标签</PARTSx>必须是</PARTS>

xml delphi

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

我如何在delphi控制台应用程序中实现IsKeyPressed函数?

我有一个delphi控制台应用程序,我需要在用户按任意键时终止,问题是我不知道如何实现一个功能来检测按键何时,我想这样做.

{$APPTYPE CONSOLE}

begin
 MyTask:=MyTask.Create;
 try
 MyTask.RunIt; 
  while MyTask.Running and not IsKeyPressed do //how i can implement a IsKeyPressed  function?
    MyTask.SendSignal($56100AA);
 finally
   MyTask.Stop;
   MyTask.Free;
 end;
Run Code Online (Sandbox Code Playgroud)

结束.

delphi

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

检测前景窗口何时更改

我知道哪个使用GetForegroundWindow函数我可以获得当前活动窗口句柄,但现在i want to detect when the active window (of any application) changes (become active).我想到的第一个解决方案是

  1. 存储GetForegroundWindow函数返回的当前值(句柄).
  2. 使用计时器组件再次检查GetForegroundWindow返回的值并与旧值进行比较.

我想知道是否存在更好的方法来执行此操作可能使用Windows消息或其他东西.

delphi winapi

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

如何在对象类型的过程参数中传递一个nil值

我想在声明为的参数中传递一个nil值 procedure of object

考虑这段代码

情况1

type
  TFooProc = procedure(Foo1, Foo2 : Integer) of object;


procedure DoSomething(Param1:Integer;Foo:TFooProc);overload;
var
  a, b : Integer;
begin
   a:=b*Param1;
   //If foo is assigned
   if @Foo<>nil then
    Foo(a, b);
end;

procedure DoSomething(Param1:Integer);overload;
begin      
  DoSomething(Param1,nil);//here the delphi compiler raise this message [DCC Error] E2250 There is no overloaded version of 'DoSomething' that can be called with these arguments
end;
Run Code Online (Sandbox Code Playgroud)

案例2

我发现,如果我声明TFooProcprocedure类型的代码被编译.(但在我的情况下,我需要一种procedure of object类型)

type
  TFooProc = procedure(Foo1, Foo2 : Integer);


procedure …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007 delphi-xe

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

当vcl样式被激活时,我如何为我的应用程序的消息框设置外观?

我使用的是Application.MessageBox展现在我的VCL应用程序的消息,但是当应用程序有一个VCL样式应用显示与windows风格,而不是目前的VCL风格的消息窗口.

示例代码

 Application.MessageBox('Hello World', 'Hello', MB_OK + MB_ICONINFORMATION);
Run Code Online (Sandbox Code Playgroud)

示例图像

在此输入图像描述

如何显示当前vcl样式的消息框?

delphi delphi-xe2 vcl-styles

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

格式函数vs sql注入方案中的参数?

我知道sql语句中参数的用法,但只是为了好奇,使用Format函数来防止sql注入而不是使用参数是安全的.

喜欢这个样本

sCustomer : string
begin
 AdoSql.CommandText:=Format('Select SUM(value) result from invoices where customer=%s',[QuotedStr(sCustomer)]);
end;
Run Code Online (Sandbox Code Playgroud)

sql delphi sql-injection

7
推荐指数
3
解决办法
1608
查看次数