小编Lig*_*ulb的帖子

以编程方式移动鼠标光标

首先,我在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)

c# mouse pinvoke internet-explorer cursor

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

与Stringlist比较

我必须比较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)

delphi comparison tstringlist

11
推荐指数
1
解决办法
3732
查看次数

Windows EventLog:操作的速度有多快?

我有一个服务应用程序,通过TCP处理客户端请求并将任何事件写入Windows EventLog.由于这个应用程序预计会在很短的时间内为每个客户端提供大量请求(假设每秒1到50个请求),我很想知道它是多么密集(CPU明智和时间)和写入Windows EventLog的速度有多快?

更具体地说,连接,读取和写入EventLog的操作有多密集?

windows delphi winapi

9
推荐指数
3
解决办法
1539
查看次数

Delphi中的选项卡式文档界面

我正在为我的下一个项目考虑不同的用户界面布局,我想知道是否有集成或第三方框架允许我创建选项卡式文档界面?

为了澄清,我想要的不是某种对接机制或者是MDI接口,而是主要是一个框架,它允许我有一个主要形式和一个或多个辅助形式,它们将在主要形式中显示为制表符.

虽然我说我不想要任何类型的对接机制,但我做了一个实际使用它的小型测试应用程序.我得到的结果非常接近我想要的.首先,我想念一些功能,如每个标签上的关闭按钮.其次,我必须创建自己的某种框架,以便自动执行所有任务,例如创建和销毁选项卡,将每个新表单与其选项卡相关联,在关联的选项卡关闭时释放表单等等.我不是说我做不到,但我想知道是否有任何现成的框架已经拥有所有这些功能.虽然我更喜欢开源解决方案,但也欢迎使用商业解决方案.

delphi user-interface docking tabbed-document-interface delphi-2010

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

报告可生成PDF/A兼容文件的生成器

哪个主流Delphi报告生成器(如果有)支持生成符合PDF/A标准的PDF文件?我对FastReportsQuickReport非常好奇.

delphi quickreports fastreport delphi-2010

5
推荐指数
1
解决办法
1724
查看次数

创建自定义提示窗口

我正试图找到一种方法来使用我的第二种形式作为我的第一种形式的组件(例如TLabel)的提示窗口.

目前,我正在探索使用THintWindowHintWindowClass,但它不可能直接分配TFormHintWindowClass.到目前为止我看到的一些例子使用的TBitmap是然后绘制的THintWindow.Canvas,这也不错,但我还是想使用某种集成的自动机制.

掠过我脑海的另一个解决方案是使用手动实现这个功能OnMouseEnter,OnMouseMove而且OnMouseLeave上述的TLabel的事件.

如果确实有一种方法可以"分配" TFormHintWindowClass,我想问一下是否有人可以提供说明这一点的代码片段.谢谢.

delphi hints

5
推荐指数
1
解决办法
3865
查看次数

在设计时访问子组件属性

我正在尝试创建复合组件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中添加节点,但我不能为它唤起树节点编辑器.

我该怎么办?

感谢名单

delphi vcl

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

将C#列的值一起比较

我有一个名为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)

c# list

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

ListView填充父级,屏幕或其他任何内容的宽度

我试图从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本身的网格使用Horizo​​ntalAlignment ="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)

wpf layout windows-phone-8.1

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

在Delphi中实现SQL"Where"构造的最佳方法是什么?

我有带字段的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 firebird firebird2.5 delphi-xe2

0
推荐指数
1
解决办法
383
查看次数