我怎样才能插入编辑控件到鼠标指针位置是任何窗口中的文本,而无需使用剪贴板和/或窗口句柄.
我使用的是Delphi 7.
我又来了这里.我有这个主要形式:
它只是一个简单的表单,用于理解框架的使用.使用表单顶部的两个按钮,我想打开这两个框架:
帧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) 问题的屏幕截图:这里
网页问题:http://cure.org
违规浏览器:Internet Explorer 7
您将从屏幕截图中注意到,或者如果您在IE7中查看此站点,则背景图像不会显示内容div(#modal-inner-content).奇怪的是,图像显示在使用它的其他div中(因为它是一个精灵,我在#modal-top-border和#modal-btm-border使用相同的图像).
在所有其他浏览器中,它显示正常,甚至在IE8中.我似乎无法找到我可能正在使用的IE规则(或缺少)IE7令人窒息.
注意:要获取模态屏幕,只需单击页面顶部横幅上的链接,即"登录您的CURE帐户"
如果你有一个调用函数的线程,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实例吗?他们得到自己的副本.那是对的吗?
希望有道理:)
我需要在Oracle数据库中进行多次登录和查询执行,每个进程10个用户,每台PC 10个进程.
我在想我会创建10个线程,每个用户登录一个线程.
这可行吗?任何建议表示赞赏.
非常新的线程.
更新:
感谢所有的评论和答案.
以下是一些其他细节:
使用Oracle 10.2,Delphi XE和动态创建的dbExpress组件.
我们的设计是每台机器运行10个进程,并为每个进程模拟10个用户登录.每次登录都在自己的线程内(实际上我需要在每个线程中有两个登录,所以我实际上每台机器创建200个会话).
对于此模拟练习,在建立连接之后,每个线程通过调用循环内的多个存储过程来检索一堆数据.对于每个存储过程,我动态创建一个TSQLProcedure对象并关闭,然后在使用它之后将其释放.现在我超过了ORA1000 Max Cursors,我不明白,因为我关闭并释放每个sp对象.
更改服务器端的设置是不可能的.我看到一些文档说明在应用程序端你可以设置RELEASE_CURSOR = YES.我猜这是一个在程序级别设置的选项.
我有一个定制的设备,通过串口发送/接收数据.我想知道是否有任何函数可以用来获取等待从串口读取的字节数?
我只想要一个windows api解决方案,如果有的话.这似乎是一项微不足道的任务,我不想使用外部组件.
我有一个主类和几个实现具有相同名称的方法的继承类,如下所示:
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中构建一个类系统.的类TFieldSpec
和TTableSpec
通过对象属性相互引用.
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)
如何构建这些类类型?
我想编写一个数独解算器,我想控制81个TEdit
控件数组,但他们的名字Edit1
,Edit2
,Edit3
而不是Edit[1]
,Edit[2]
等等.
我不想OnChange
分别为所有81个控件键入事件处理程序.
我怎么解决这个问题?
我编写了简单的代码(见下文):一个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 ×9
delphi-2010 ×2
delphi-7 ×2
casting ×1
css ×1
css-sprites ×1
delphi-xe2 ×1
events ×1
frames ×1
insert ×1
metaclass ×1
oop ×1
oracle ×1
serial-port ×1
text ×1