小编NGL*_*GLN的帖子

将编辑中的文本插入鼠标指针所在的任何窗口

我怎样才能插入编辑控件到鼠标指针位置是任何窗口中的文本,而无需使用剪贴板和/或窗口句柄.

我使用的是Delphi 7.

delphi text insert

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

如何实例化不同的帧类型?

我又来了这里.我有这个主要形式:

在此输入图像描述

它只是一个简单的表单,用于理解框架的使用.使用表单顶部的两个按钮,我想打开这两个框架:

帧1

在此输入图像描述

和Frame2

在此输入图像描述

这是代码第一帧的简单代码:

unit AppFrame1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls;

type
  TFrame1 = class(TFrame)
    lblFrame1: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R *.dfm}

end.
Run Code Online (Sandbox Code Playgroud)

这是第二帧的代码:

unit AppFrame2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls;

type
  TFrame2 = class(TFrame)
    lblFrame2: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R *.dfm}

end.
Run Code Online (Sandbox Code Playgroud)

所以在两帧中没有什么特别之处.为了从主窗体打开框架,我创建了一个这样的界面:

unit FramesManager;

interface …
Run Code Online (Sandbox Code Playgroud)

delphi metaclass frames class-reference

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

为什么我的背景图像在IE7中无法正常显示?

问题的屏幕截图:这里

网页问题:http://cure.org

违规浏览器:Internet Explorer 7

您将从屏幕截图中注意到,或者如果您在IE7中查看此站点,则背景图像不会显示内容div(#modal-inner-content).奇怪的是,图像显示在使用它的其他div中(因为它是一个精灵,我在#modal-top-border和#modal-btm-border使用相同的图像).

在所有其他浏览器中,它显示正常,甚至在IE8中.我似乎无法找到我可能正在使用的IE规则(或缺少)IE7令人窒息.

注意:要获取模态屏幕,只需单击页面顶部横幅上的链接,即"登录您的CURE帐户"

css css-sprites background-image internet-explorer-7

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

线程安全例程在线程类之外

如果你有一个调用函数的线程,AFAIK是任何全局或VCL组件调用,这使得它不是线程安全的吗?

所以如果你的线程调用了类似的方法

procedure UpdateRow()
begin
    StringGrid1.AddRow(....);
end;
Run Code Online (Sandbox Code Playgroud)

这不是线程安全的.但是如果你有这样的方法

function ParseXML(const XML : String) : string;
var
    xml_parser : TXMLParser;
begin
    xml_parser := TXMLParser.create;
    ... do stuff
    result := xml_parser.something;
    xml_parser.free;
end;
Run Code Online (Sandbox Code Playgroud)

这是线程安全的,只要TXMLParser没有做任何unthread安全的事情.

但是如果两个线程同时调用该方法,它不会抛出异常,因为它们都创建了自己的TXMLParser实例吗?他们得到自己的副本.那是对的吗?

希望有道理:)

delphi multithreading thread-safety

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

Delphi多线程和Oracle db

我需要在Oracle数据库中进行多次登录和查询执行,每个进程10个用户,每台PC 10个进程.

我在想我会创建10个线程,每个用户登录一个线程.

这可行吗?任何建议表示赞赏.

非常新的线程.

更新:

感谢所有的评论和答案.

以下是一些其他细节:

使用Oracle 10.2,Delphi XE和动态创建的dbExpress组件.

我们的设计是每台机器运行10个进程,并为每个进程模拟10个用户登录.每次登录都在自己的线程内(实际上我需要在每个线程中有两个登录,所以我实际上每台机器创建200个会话).

对于此模拟练习,在建立连接之后,每个线程通过调用循环内的多个存储过程来检索一堆数据.对于每个存储过程,我动态创建一个TSQLProcedure对象并关闭,然后在使用它之后将其释放.现在我超过了ORA1000 Max Cursors,我不明白,因为我关闭并释放每个sp对象.

更改服务器端的设置是不可能的.我看到一些文档说明在应用程序端你可以设置RELEASE_CURSOR = YES.我猜这是一个在程序级别设置的选项.

delphi oracle thread-safety

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

获取在读取之前在串行端口上等待的字节数

我有一个定制的设备,通过串口发送/接收数据.我想知道是否有任何函数可以用来获取等待从串口读取的字节数?

我只想要一个windows api解决方案,如果有的话.这似乎是一项微不足道的任务,我不想使用外部组件.

delphi serial-port

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

Delphi对象转换

我有一个主类和几个实现具有相同名称的方法的继承类,如下所示:

MainClass = class(TImage)
  //main class methods...
end;

MyClass1 = class(MainClass)
  procedure DoSomething;
end;

MyClass2 = class(MainClass)
  procedure DoSomething;
end;

MyClass3 = class(MainClass)
  procedure DoSomething;
end;
Run Code Online (Sandbox Code Playgroud)

我还有一个TList包含指向对象实例(几个类)的指针.如果我想DoSomething为每个班级调用正确的程序,我是否使用以下内容?

if TList[i] is MyClass1 then
  MyClass1(TList[i]).DoSomething
else if TList[i] is MyClass2 then
  MyClass2(TList[i]).DoSomething
else if TList[i] is MyClass3 then
  MyClass3(TList[i]).DoSomething
Run Code Online (Sandbox Code Playgroud)

是否有一些转换方法允许我在几行代码中执行此操作?

delphi casting

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

如何声明交叉引用的类类型?

我试图在Delphi中构建一个类系统.的类TFieldSpecTTableSpec通过对象属性相互引用.

type
  TFieldSpec=class(Tobject)
  private
    FTableSpec : TTableSpec;
  public
    property TableSpec : TTableSpec read FTableSpec;
  end;

  TTableSpec=class(Tobject)
  private
    FFields : array[1..100] of TFieldSpec;
  end;
Run Code Online (Sandbox Code Playgroud)

当我编译它时,我收到此错误:

[Error] Objects.pas(66): Undeclared identifier: 'TTableSpec'
Run Code Online (Sandbox Code Playgroud)

如何构建这些类类型?

delphi oop delphi-7 delphi-2010 delphi-xe2

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

将多个TEdits控制为数组

我想编写一个数独解算器,我想控制81个TEdit控件数组,但他们的名字Edit1,Edit2,Edit3而不是Edit[1],Edit[2]等等.

我不想OnChange分别为所有81个控件键入事件处理程序.

我怎么解决这个问题?

delphi delphi-7 delphi-2010

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

TCollectionItem后代中的事件

我编写了简单的代码(见下文):一个TCollectionItem带有事件的后代.但是当我OnDone在对象检查器中单击事件时,我收到消息:

"无法为未命名的组件创建方法".

这段代码有什么问题?

unit MainComponent2;

interface

uses Windows, SysUtils, Classes;

type
  TMyField = class(TCollectionItem)
  private
    FName: string;
    FOnDone: TNotifyEvent;
    FText: string;
  protected
    function GetDisplayName : String; override;
  public
    constructor Create(ACollection: TCollection);override;
    function GetNamePath: string;override;
  published
    property Name: string read FName write FName;
    property Text: string read FText write FText;
    property OnDone: TNotifyEvent read FOnDone write FOnDone;
  end;

  TMyFields = class(TOwnedCollection)
  private
    function GetItem(Index: Integer): TMyField;
    procedure SetItem(Index: Integer; const Value: TMyField);
  protected
    procedure Update(Item: TmyField);reintroduce;
  public …
Run Code Online (Sandbox Code Playgroud)

delphi events tcollectionitem

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