首先,我在http://swigartconsulting.blogs.com/tech_blender/2005/08/how_to_move_the.html找到了此代码:
public class Win32
{
[DllImport("User32.Dll")]
public static extern long SetCursorPos(int x, int y);
[DllImport("User32.Dll")]
public static extern bool ClientToScreen(IntPtr hWnd, ref POINT point);
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int x;
public int y;
}
}
Run Code Online (Sandbox Code Playgroud)
将以下代码粘贴到按钮的click eventhandler中:
Win32.POINT p = new Win32.POINT();
p.x = button1.Left + (button1.Width / 2);
p.y = button1.Top + (button1.Height / 2);
Win32.ClientToScreen(this.Handle, ref p);
Win32.SetCursorPos(p.x, p.y);
Run Code Online (Sandbox Code Playgroud)
这会将鼠标指针移动到按钮的中心.
这段代码效果很好,但我似乎无法弄清楚如何扩展它.假设我有一个Internet浏览器(嵌入在windows窗体中)打开一个网页(一些我手头不知道的随机页面),里面有一个下拉列表框.我已修改上面的代码,将光标移动到下拉列表框(使用下面显示的鼠标单击方法将列表向下拖放),并在列表中上下移动,突出显示每个项目作为鼠标指针过去,但对于我的生活,我无法弄清楚如何实际让鼠标点击当前选定的项目来保持选择.我正在这样做的方式现在下拉列表框只是关闭,选择不会改变.我正在使用以下代码进行鼠标单击(这会使列表下拉):
private static void MouseClick(int x, int y, IntPtr handle) //handle for the browser …Run Code Online (Sandbox Code Playgroud) 我必须比较2个stringlist,我想知道第二个stringlist中的第一个stringlist是否是执行此问题的唯一或推荐版本
我的代码就是这样的
var
aFirstStrList: TStringList ;
aSecondStringList: TStringList;
MissingElement_firstElement_not_inside_second: TStringList;
MissingElement_SecondElement_not_inside_First: TStringList;
...
for i := 0 to aFirstStrList.Count - 1 do
begin
if aSecondStringList.IndexOf(aFirstStrList[i] < 0 ) then
begin
// react on not found elements
....
MissingElement_firstElement_not_inside_second.add(...);
end;
end;
// and now same code just opposite search direction ....
....
Run Code Online (Sandbox Code Playgroud) 我有一个服务应用程序,通过TCP处理客户端请求并将任何事件写入Windows EventLog.由于这个应用程序预计会在很短的时间内为每个客户端提供大量请求(假设每秒1到50个请求),我很想知道它是多么密集(CPU明智和时间)和写入Windows EventLog的速度有多快?
更具体地说,连接,读取和写入EventLog的操作有多密集?
我正在为我的下一个项目考虑不同的用户界面布局,我想知道是否有集成或第三方框架允许我创建选项卡式文档界面?
为了澄清,我想要的不是某种对接机制或者是MDI接口,而是主要是一个框架,它允许我有一个主要形式和一个或多个辅助形式,它们将在主要形式中显示为制表符.
虽然我说我不想要任何类型的对接机制,但我做了一个实际使用它的小型测试应用程序.我得到的结果非常接近我想要的.首先,我想念一些功能,如每个标签上的关闭按钮.其次,我必须创建自己的某种框架,以便自动执行所有任务,例如创建和销毁选项卡,将每个新表单与其选项卡相关联,在关联的选项卡关闭时释放表单等等.我不是说我做不到,但我想知道是否有任何现成的框架已经拥有所有这些功能.虽然我更喜欢开源解决方案,但也欢迎使用商业解决方案.
delphi user-interface docking tabbed-document-interface delphi-2010
哪个主流Delphi报告生成器(如果有)支持生成符合PDF/A标准的PDF文件?我对FastReports和QuickReport非常好奇.
我正试图找到一种方法来使用我的第二种形式作为我的第一种形式的组件(例如TLabel)的提示窗口.
目前,我正在探索使用THintWindow和HintWindowClass,但它不可能直接分配TForm给HintWindowClass.到目前为止我看到的一些例子使用的TBitmap是然后绘制的THintWindow.Canvas,这也不错,但我还是想使用某种集成的自动机制.
掠过我脑海的另一个解决方案是使用手动实现这个功能OnMouseEnter,OnMouseMove而且OnMouseLeave上述的TLabel的事件.
如果确实有一种方法可以"分配" TForm到HintWindowClass,我想问一下是否有人可以提供说明这一点的代码片段.谢谢.
我正在尝试创建复合组件TTreePage(后代形式TCustomControl).它应该包含3个子组件:Treeview(TTreeview)align:= alLeft,Splitter(TSplitter)align:= alLeft和Container(TPanel)align:= alClient.
这是contstructor:
constructor TTreePage.Create(AOwner: TComponent);
begin
inherited;
FTreeview := TTreeView.Create(self);
FTreeview.SetSubComponent(True);
InsertControl(FTreeview);
FSplitter := TSplitter.Create(self);
FSplitter.SetSubComponent(True);
FSplitter.Width := 3;
FSplitter.Color := clBlack;
InsertControl(FSplitter);
FContainer:= TPanel.Create(Self);
FContainer.SetSubComponent(True);
FContainer.BevelInner := bvNone;
FContainer.BevelOuter := bvNone;
FContainer.Color := clYellow;
InsertControl(FContainer);
RefreshLayout; // this performs alignment of subcomponents
end;
Run Code Online (Sandbox Code Playgroud)
这里是创建参数程序:
procedure TTreePage.CreateParams(var Params:TCreateParams);
begin
inherited;
Params.Style := Params.Style + WS_EX_CONTROLPARENT;
ControlStyle := ControlStyle + [csAcceptsControls, csCaptureMouse, csOpaque];
end;
Run Code Online (Sandbox Code Playgroud)
整个组件表现为单个块.我无法通过鼠标选择任何子组件(TTreeview,TSplitter或TPanel).是的,我可以在Object Inspector中编辑它们的属性,但是我无法编辑例如TTreeview的宽度或拖动TSplitter.对我来说最重要的是在设计时在TTreeview中添加节点,但我不能为它唤起树节点编辑器.
我该怎么办?
感谢名单
我有一个名为AxiomSubset6列的C#列表,其中有几行数据,我想检查列表中特定列的所有值是否相等,如果它们相等则应返回true并转到下一列列并检查它们的相等性等.
例如,我在列表中有以下数据行
CC Mon str stg rate units
HP 15-Mar 4.0800 4
HP 15-Feb 4.0800 4
HP 15-Jan 4.0800 4
LN 15-Mar 3.25 Put 0.0500 50
LN 15-Feb 3.25 Put 0.0500 50
LN 15-Jan 3.25 Put 0.0500 50
LN 15-Mar 3.50 Put 0.1000 50
LN 15-Feb 3.50 Put 0.1000 50
LN 15-Jan 3.50 Put 0.1000 50
Run Code Online (Sandbox Code Playgroud)
在上面的数据中检查列的相等性时,CC它应该返回false,因为它们都不相等
我尝试按如下方式进行操作,将一行与前一行进行比较,显然没有给出预期的结果
for (int i = 0; i < AxiomSubSet.Count; i++)
{
if (AxiomSubSet[i].CC.ToString() == AxiomSubSet[i + 1].CC.ToString())
{
result …Run Code Online (Sandbox Code Playgroud) 我试图从Observable Collection显示一些数据到ListView.绑定工作正常.我无法解决的唯一问题是ListView的布局.我使用一个包含2行的Grid来分割我的View.ListView是第二行之一.我只尝试使用*来设置大多数来源中建议的列和行.ListView的代码就是这个.
<Grid Grid.Row="1" Margin="10,0,10,0" HorizontalAlignment="Stretch">
<ListView ItemsSource="{Binding Collection}" HorizontalAlignment="Stretch">
<ListView.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" HorizontalAlignment="Center" Text="{Binding Period}" Foreground="{StaticResource ColorBrush}" FontFamily="{StaticResource Family}" FontSize="20"/>
<TextBlock Grid.Column="1" HorizontalAlignment="Center" Text="{Binding Currency}" Foreground="{StaticResource ColorBrush}" FontFamily="{StaticResource Family}" FontSize="20"/>
<TextBlock Grid.Column="2" HorizontalAlignment="Center" Text="{Binding Date}" Foreground="{StaticResource ColorBrush}" FontSize="20" FontFamily="{StaticResource Family}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
Run Code Online (Sandbox Code Playgroud)
当我对包含ListView和ListView本身的网格使用HorizontalAlignment ="Stretch"时,数据显示在左侧而不获取父视图的整个宽度.当我明确地将Width设置为某个值(即380)时,它显示OK.
<Grid Grid.Row="1" Margin="10,0,10,0">
<ListView ItemsSource="{Binding Collection}" Width="380">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Width="380">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" …Run Code Online (Sandbox Code Playgroud) 我有带字段的Firebird数据库表(FK - ForeignKey字段):
ID integer,
FACILITY_ID integer, --FK
SERVICE_ID integer, --FK
PROVIDER_ID integer, --FK
SELLER_ID integer, --FK
TARIFF_GROUP_ID integer, --FK
DATE_START date,
N_NORMATIVE_VALUE numeric(15,2),
N_METER_VALUE numeric(15,2),
T_NORMATIVE_VALUE numeric(15,2),
T_METER_VALUE numeric(15,2),
IS_ACTIVE smallint
Run Code Online (Sandbox Code Playgroud)
我想将这个表加载到内存中并在我的Delphi程序中使用它(readonly).我必须搜索所有FK的记录(......其中FACILITY_ID =:FACILITY_ID和SERVICE_ID =:SERVICE_ID等...)
什么是该任务的最佳容器:动态数组或列表或其他什么?以及如何实现此搜索?哈希可能吗?
它不是非常大的表(1000条记录),但将在FOR构造中使用超过100000次迭代.
我正在使用带有IBX和UIB和FB25的Delphi XE2
delphi ×7
c# ×2
delphi-2010 ×2
comparison ×1
cursor ×1
delphi-xe2 ×1
docking ×1
fastreport ×1
firebird ×1
firebird2.5 ×1
hints ×1
layout ×1
list ×1
mouse ×1
pinvoke ×1
quickreports ×1
tstringlist ×1
vcl ×1
winapi ×1
windows ×1
wpf ×1