小编Mas*_*ler的帖子

为什么我的TSplitter在错误的地方?

我有一个对话框,其中列出了这样的内容:

---------------------------------------------
|                                           |
| CONFIG AREA                               |
| Align: alTop                              |
--------------------------------------------- <-static boundary
|                                           |
| DISPLAY AREA 1                            |
| Align: alTop                              |
============================================= <-TSplitter Align: alTop
|                                           |
| DISPLAY AREA 2                            |
| align: alClient                           |
--------------------------------------------- <-bottom of dialog
Run Code Online (Sandbox Code Playgroud)

但是,在运行时,分割器不会显示在显示区域1和显示区域2之间,而是显示在配置区域和显示区域1之间,从而导致一些恼人的接口问题.表单中与设置相关的事件处理程序中没有任何内容可以改变任何这些组件的Visible或Align属性.有谁知道为什么分割器没有加载到它在表单设计器中的位置?

delphi user-interface splitter

5
推荐指数
3
解决办法
1391
查看次数

当任何线程终止时,我可以做某事吗?

有没有办法设置一个回调,当程序中的任何线程终止时将调用该回调?我需要的唯一信息是垂死线程的ThreadID.(不是一些关于.NET的类似问题的重复;我需要一种方法在本机代码中执行此操作.)

delphi winapi multithreading

5
推荐指数
0
解决办法
294
查看次数

什么可以使用VBO的glDrawArrays不能绘制任何东西?

我正在尝试使用OpenGL 2.0渲染上下文来弄清楚如何使用VBO.我已经设置了2D(正交)渲染上下文,我可以绘制一个像这样的简单矩形:

glBegin(GL_QUADS);
   glColor4f(1, 1, 1, 1);
   glVertex2f(0, 0);
   glVertex2f(0, 10);
   glVertex2f(100, 10);
   glVertex2f(100, 0);
glEnd;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用VBO时,它会失败.我像这样设置VBO,使用与以前相同的数据:

procedure initialize;
const
   VERTICES: array[1..8] of single =
   (
   0, 0,
   0, 10,
   100, 10,
   100, 0
   );
begin
   glEnable(GL_VERTEX_ARRAY);
   glGenBuffers(1, @VBO);
   glBindBuffer(GL_ARRAY_BUFFER, VBO);
   glBufferData(GL_ARRAY_BUFFER, sizeof(VERTICES), @VERTICES[1], GL_DYNAMIC_DRAW);
   glBindBuffer(GL_ARRAY_BUFFER, 0);
end;
Run Code Online (Sandbox Code Playgroud)

我试着像这样画:

begin
   glColor4f(1, 1, 1, 1);
   glEnableClientState(GL_VERTEX_ARRAY);
   glBindBuffer(GL_ARRAY_BUFFER, VBO);
   glVertexPointer(2, GL_FLOAT, 0, 0);
   glDrawArrays(GL_QUADS, 0, 1);
   glBindBuffer(GL_ARRAY_BUFFER, 0);
end;
Run Code Online (Sandbox Code Playgroud)

从我读过的所有内容中,都应该有效.我通过gDEBugger运行它并且没有GL错误,并且VBO中的数据正在正确加载,但是当我交换缓冲区时实际上没有出现.更改顶点数组中的数据以使用标准化坐标(从0..1.0开始)也不会显示任何内容.知道我做错了什么吗?(假设渲染上下文本身设置正确,GL函数指针都已正确加载.)

delphi opengl

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

如何检测是否支持HTML5输入控件?

如果我<input type="range">在窗体上放置一个控件,某些浏览器会(正确地)渲染一个滑块控件,而其他浏览器则不会知道是什么range,而是会渲染一个文本框.处理这种情况需要额外的验证,因为文本框可以包含任何任意文本.是否有任何JavaScript可以放入页面中说"在DOM中查看此控件,如果它是文本框控件,那么foo()"?

html javascript html5

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

如何使 Visual Studio 的立即窗口为我提供纯字符串输出?

如果我在 Immediate 中评估生成长且复杂的字符串的内容,则调试器会对 C 字符串转义中的所有内容进行编码,因此我最终会在整个文本中出现混乱的\n\t等内容,然后我必须手动修复这些内容。(这在 的情况下特别烦人\n,因为大多数文本编辑器无法进行多行搜索和替换!)

有什么方法可以让调试器为我提供原始的、未修改的多行字符串值吗?

debugging visual-studio visual-studio-2013

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

为什么不在组件创建或流式传输期间使用句柄?

我想通过SDL_CreateWindowFrom函数创建一个自定义VCL控件来包装SDL渲染表面.SDL_CreateWindowFrom获取现有的HWND句柄并将高性能渲染上下文(它有几个后端可用,包括DirectX和OpenGL)放在其上.

帮助文件说"在组件创建或流式传输期间不要引用Handle属性".但它并没有说明原因.它说,当您第一次尝试访问Handle属性时,它将调用HandleNeeded以确保存在有效句柄.

所以我有两个问题.1:在组件创建期间不应引用Handle属性的原因是什么?2.如果控件的整个点是要包装需要初始化HWND的渲染表面,那么何时可以安全地执行(理想情况下)应该在创建/流式传输期间进行的初始化?

delphi vcl sdl custom-controls

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

如何让TProgressBar停止滞后?

我有一个运行一系列操作的应用程序,我正在尝试使用TProgressBar来跟踪正在发生的事情.我设置了许多步骤,并调用.StepIt来增加进度条.

问题是,它没有很好地跟上.它似乎喜欢逐渐滑向它,而不是直接跳到正确的位置.如果它是你所追求的眼睛糖果,这一切都很好,但是当我试图准确地表达我的例程进展时,这使得它似乎总是落后于真实状态.如何关闭"功能"?

我只注意到在Windows Vista下发生这种情况.不确定它是否也在XP上进行,因为当我在XP上测试它时,过程进行得更快,而且过快.:P但这可能是也可能不是特定于Vista的.无论哪种方式,它都让我疯狂.有谁知道如何修理它?

delphi delphi-2009 windows-vista

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

为什么getElementsByTagName返回undefined?

无论我通过什么参数document.getElementsByTagName,我都试图打电话,undefined结果我回来了.(即使我通过"*".)

我尝试使用谷歌搜索,但所有搜索结果都是关于未定义的getElementsByTagName结果数组的元素.我得到的是undefined结果本身,它正在推动我的问题.

有谁知道是什么原因引起的?(使用Firefox 12.0.在Chrome中,我得到了预期的结果.)

编辑:好的,这是示例代码:

function buttonClick(){
   var xhr = new XMLHttpRequest();
   var msg = document.getElementById('message');
   var buttons = document.getElementsByTagName("button");
   var button, i;
   for (i = 0; i < buttons.length; ++i){
      button = buttons[i];
      msg.removeChild(button);
   }

   xhr.onreadystatechange = function() {
        if(xhr.readyState == 4){
            handleResult(xhr.responseText, msg);
        }
   };
   xhr.open("POST", location.href, true);
   xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   xhr.send("cmd=MyCommand");
}
Run Code Online (Sandbox Code Playgroud)

并且getElementsByTagName总是返回undefined,无论我是在Firebug的脚本选项卡中跟踪它还是从控制台选项卡中调用它.(同样在Firebug,因为这似乎让人感到困惑.显然有太多的控制台漂浮在周围.).

作为证据,这是我尝试使用Firebug控制台时所获得的:

>>> document.getElementsByTagName("button");
undefined
>>> msg.getElementsByTagName("button");
undefined
>>> msg.getElementsByTagName
getElementsByTagName()
>>> msg.getElementsByTagName("BUTTON");
undefined
>>> msg.getElementsByTagName("*");
undefined …
Run Code Online (Sandbox Code Playgroud)

html javascript firefox dom

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

如何查明我的程序是否已加载某个 DLL?

我正在开发一个具有基于插件的架构的程序。所有插件都是 DLL,其中一些插件可以依赖于其他插件 DLL。我希望能够执行以下操作:

  • 在程序启动时,扫描插件文件夹。
  • 对于找到的每个插件,检查该插件是否已加载。(如果之前加载的插件导致它作为依赖项加载,则可能是这样)。
  • 如果没有,请加载它。

第一步和第三步很简单,但是第二步该怎么做呢?是否有一个 winapi 调用,在给定 DLL 文件名的情况下,会告诉我该 DLL 当前是否已加载到当前进程中?(或者可能需要一个文件名和一个进程句柄?)

请不要回答说“无论如何都加载它”。我知道这会起作用。我正在努力避免这种情况。

windows winapi

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

如何在Firebird Embedded中访问UDF DLL?

我尝试为Firebird构建UDF.我能够编译DLL并向数据库注册UDF,但我实际上无法运行它.每一次,我都会收到错误:

invalid request BLR at offset 63.
function [FUNCTION_NAME] is not defined.
module name or entrypoint could not be found.
Run Code Online (Sandbox Code Playgroud)

我已经尝试将UDF DLL放在与应用程序相同的文件夹中,并且放在与数据库相同的文件夹中,但无论如何它似乎永远不会加载它.

当我尝试Googling寻求帮助时,我得到的所有结果似乎要么通过将它放在服务器的UDF文件夹中来使它在FB服务器上工作(这不适用于我使用FB Embedded)或者通过编辑conf文件在FB服务器上修复权限问题(由于我使用的是FB Embedded,因此不适用).

那么,如果我使用FB Embedded,如何确定/配置放置UDF DLL的正确位置

firebird

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