Articles of 控件

调用更新过程时,TStatusBar会闪烁。 方法来无痛地解决这个问题

所以,这里是我刚刚阅读的讨论: http : //www.mail-archive.com/delphi@delphi.org.nz/msg02315.html BeginUpdate和EndUpdate不是我需要的程序… 重写API调用? 我试图从ComCtrls单位得到更新程序代码,坚果没有find… 也许你可以在这里发布一个代码来修复状态栏compoent的闪烁,如果唯一的文本改变了吗? 我的意思是 – 像TextUpdate或某种TCanvas方法或PanelsRepaint …? 闪烁是由以下代码引起的: Repeat BlockRead(Fp, BuffArrayDebug[LineIndex], DataCapac, TestByteBuff); // DataCapac = SizeOf(DWORD) ProgressBar1.StepIt; if RAWFastMode.Checked then begin // checks for fast mode and modifyies progressbar if BuffArrayDebug[LineIndex] = 0 then begin ProgressBar2.Max := FileSize(Fp) – DataCapac; ProgressBar2.Position := (LineIndex + 1) * DataCapac; LineDecr := […]

对于Windows窗体,PostMessage等于自己的什么?

我正在写一个从System.Windows.Forms.Control派生自定义控件。 该控件使用Control.KeyDown事件来观察击键:我应该处理一些击键(例如<Ctrl>-K )作为热键,这使我启动一个对话框。 如果我从我的onKeyDown事件处理程序启动对话框,则在将KeyEventArgs.SuppressKeyPress设置为true并返回(因此我无法抑制K按键)之前,会显示该对话框。 相反,我想从onKeyDown事件处理程序返回,然后启动对话框。 要做到这一点,我从onKeyDown事件处理程序返回后,我需要以某种方式再次调用,与某种“启动对话”事件。 在Win32上,我可以使用PostMessage API生成这个事件,向我自己发送一个注册的窗口消息:我将在消息队列中的任何先前消息之后立即收到此消息,并将其用作启动对话框的信号。 但是在这里,我不能使用PostMessage函数(也不是WndProc方法),因为我想使用严格pipe理的 API(不需要SecurityPermissionFlag::UnmanagedCode )。 那么对于一个线程(我的用户界面线程)来说,pipe理的等价物是什么,来安排一个asynchronouscallback:或许是某种types的定时器? 某种自我Invoke ?

如何使用Windows ToolTip控件,而不必绑定到工具

我想使用本地窗口工具提示控制(纯Win32 API,没有MFC的东西)。 我阅读文档,似乎我必须发送一个TTM_ADDTOOL消息来绑定工具提示控件的工具。 只有在此之后,才能发送TTM_TRACKACTIVATE&TTM_TRACKPOSITION以显示工具提示。 但是我想在任何我想要的地方显示工具提示。 例如,当鼠标hover在我的窗口的一个区域。 这个区域不是Windows的工具,它只是我窗口中的一个区域。 也许我可以将窗口绑定到工具提示控件,但是,这不意味着我必须将我创build的每个窗口绑定到工具提示控件吗? 有一个简单的解决scheme,所以我不必为每个窗口发送TTM_ADDTOOL消息? 我实际上已经写了一些代码,但工具提示只是不出现。 安德斯的答案实际上解决了一些问题。 当我捅了我的代码之后,我就开始工作了。 如果有人想知道它是如何工作的: HWND toolTipWnd = ::CreateWindowExW(WS_EX_TOPMOST, TOOLTIPS_CLASSW,0,WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, 0,0,appHandle,0); TOOLINFOW ti = {}; ti.cbSize = sizeof(TOOLINFOW); ti.uFlags = TTF_ABSOLUTE | TTF_IDISHWND /* | TTF_TRACK */; // Don't specify TTF_TRACK here. Otherwise the tooltip won't show up. ti.hwnd = toolTipWnd; […]

使用FindVCLWindow在Delphi中调用WinHelp32(WinXP Pro SP3 32bit)

那里有什么问题? procedure TForm1.VCLHelpClick(Sender: TObject); var Ctrl : TWinControl; begin Ctrl := FindVCLWindow(Mouse.CursorPos); if Ctrl <> nil then if Form2.Cursor = crHelp then begin if Ctrl = CreatorEdit then Application.HelpCommand(HELP_CONTEXT,001); if Ctrl = EditorEdit then Application.HelpCommand(HELP_CONTEXT,002); if Ctrl = UpdaterEdit then Application.HelpCommand(HELP_CONTEXT,003); if Ctrl = IdeaEdit then Application.HelpCommand(HELP_CONTEXT,004); if Ctrl = PorterEdit then Application.HelpCommand(HELP_CONTEXT,005); end; end; […]

在运行时拖动窗体上的控件

我刚开始使用WPF。 但我试图添加我的代码(从Winforms),使用户可以拖动任何他们希望在运行时控制。 但我似乎无法得到鼠标的当前位置…呃? 没有鼠标的位置? 🙁