如果您想了解Delphi:你能在DLL中有一个组件类定义,并在运行时加载并创建它吗?的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于caching–MVC4StyleBundle:你能在D
如果您想了解Delphi:你能在DLL中有一个组件类定义,并在运行时加载并创建它吗?的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于caching – MVC4 StyleBundle:你能在Debug模式下添加一个缓存清除查询字符串吗?、Delphi 2009 – 在运行时创建一个TPanel并改变其颜色、delphi TreeView – 在运行时创建节点、delphi – 你能在Windows中创建一个没有WS_POPUP样式的无边界应用程序主窗口吗?的有价值的信息。
本文目录一览:- Delphi:你能在DLL中有一个组件类定义,并在运行时加载并创建它吗?
- caching – MVC4 StyleBundle:你能在Debug模式下添加一个缓存清除查询字符串吗?
- Delphi 2009 – 在运行时创建一个TPanel并改变其颜色
- delphi TreeView – 在运行时创建节点
- delphi – 你能在Windows中创建一个没有WS_POPUP样式的无边界应用程序主窗口吗?
Delphi:你能在DLL中有一个组件类定义,并在运行时加载并创建它吗?
是否可以在DLL中创建一个组件类,比如TPanel或TDBGrid的后代,然后在运行时将该DLL加载到另一个应用程序中,然后创建这些控件并像普通的Delphi组件一样使用它们?
如果是这样,你可以给我任何指示,看看从哪里开始这样做?
解决方法
请记住,您需要在可执行文件和DLL旁边分发RTL [ver] .bpl,VCL [ver] .bpl和任何其他必需的运行时软件包.
理想情况下,您应该在从未安装过Delphi / RAD Studio的VM或系统上测试您的应用程序.这样,如果您的发行版缺少任何必需的Package文件,Execption对话框将告诉您需要包含哪些文件.
caching – MVC4 StyleBundle:你能在Debug模式下添加一个缓存清除查询字符串吗?
bundles.Add(new StyleBundle("~/bundles/css").Include("~/Content/*.css"));
我有的问题是,在调试模式下,CSS网址单独渲染,我有一个Web代理积极缓存这些网址。在发布模式下,我知道一个查询字符串被添加到最终的URL,以使每个发布的任何缓存无效。
是否有可能配置StyleBundle在调试模式下添加一个随机查询字符串,以产生以下输出来解决缓存问题?
<link href="/stylesheet.css?random=some_random_string" rel="stylesheet"/>
解决方法
public class filehashVersionBundleTransform: IBundleTransform { public void Process(BundleContext context,BundleResponse response) { foreach(var file in response.Files) { using(FileStream fs = File.OpenRead(HostingEnvironment.MapPath(file.IncludedVirtualPath))) { //get hash of file contents byte[] filehash = new SHA256Managed().ComputeHash(fs); //encode file hash as a query string param string version = HttpServerUtility.UrlTokenEncode(filehash); file.IncludedVirtualPath = string.Concat(file.IncludedVirtualPath,"?v=",version); } } } }
然后,您可以通过将类添加到您的bundle的Transforms集合来注册该类。
new StyleBundle("...").Transforms.Add(new filehashVersionBundleTransform());
现在只有文件内容改变时版本号才会改变。
Delphi 2009 – 在运行时创建一个TPanel并改变其颜色
这里的代码:
procedure TForm1.Button1Click(Sender: TObject); var pnlTest : TPanel; begin pnlTest := TPanel.Create(Form1); pnlTest.Parent := Form1; pnlTest.Width := 100; pnlTest.Height := 100; pnlTest.Color := clRed; end;
有任何想法吗?谢谢!
解决方法
delphi TreeView – 在运行时创建节点
>创建节点
>启用/禁用单个节点
我想知道如何在Application运行时执行上述操作,例如在Form的OnCreate事件中.
解决方法
function FindRootNode(ACaption: String; ATreeView: TTreeView): TTreeNode; var LCount: Integer; begin result := nil; LCount := 0; while (LCount < ATreeView.Items.Count) and (result = nil) do begin if (ATreeView.Items.Item[LCount].Text = ACaption) and (ATreeView.Items.Item[LCount].Parent = nil) then result := ATreeView.Items.Item[LCount]; inc(LCount); end; end; ... var LDestNode: TTreeNode; begin LDestNode := FindRootNode('category',TreeView1); if LDestNode <> nil then begin TreeView1.Items.AddChild(LDestNode,'node1'); TreeView1.Items.AddChild(LDestNode,'node2'); end; end;
(另见http://msdn.microsoft.com/en-us/library/70w4awc4.aspx)
消除节点
据我所知,没有办法禁用TreeNode.你唯一能做的就是拦截beforeSelect-event并取消那里的选择.不太好.
delphi – 你能在Windows中创建一个没有WS_POPUP样式的无边界应用程序主窗口吗?
> WindowsKey M最小化除应用程序主窗口之外的所有窗口.
>在任务栏上单击一次(在win7中),然后再次,应该在正常和最小化状态之间切换应用程序主窗口的状态/可见性.这不适用于这样的窗口.
在简单的Win32编程术语中,我在询问dwStyle的参数值,如调用CreateWindow(WS _…常量)或CreateWindowEx(WS_EX _…常量).对于delphi用户,这些值将在您将覆盖的CreateParams方法中设置,然后设置Params.Style:= WS_xxx;对于MFC/C++用户和C用户,框架中的某些内容最终将使用此dwStyle值调用CreateWindow.
在delphi术语中,设置form.BorderStyle = bsNone,得到dwStyle = WS_POPUP.但是我想要一个不使用dwStyle = WS_POPUP的无边框窗口.
注意:下面的所有答案都很好,但是在生产场景中使用每个答案都是有问题的,而且我尝试这样做会导致遇到许多故障,对于专业质量的应用程序,我仍然觉得我无法解决.戴维斯的回答虽然是一个很好的纯Win32 API答案,但符合要求.似乎工业强度解决方案应该结合多种品质,包括我在上面的问题中所拥有的所有品质.简而言之,使用BorderStyle = bsNone(dwStyle = WS_POPUP)的无边框表单会阻止通常应用于应用程序主窗口的所有Windows功能,下面的所有解决方案都可以解决部分问题.
根据大卫的建议,我写了以下内容,但不起作用:
我想要一个没有边框的窗口,它可以在所有方面(如Windows应用程序窗口)运行到系统,也就是说,可以通过单击任务栏中的窗口来最小化/恢复它,并且将由WindowsKey M最小化.我开始认为这样做的唯一方法是添加非客户端绘制代码并将顶部非客户区域边界调整为零.这当然不是一个微不足道的想法.
事实证明,我在编码中犯了一个简单的错误(因此上面的两段),实际上下面的代码现在按照我的意愿工作.这个是pascal,但它应该很容易转换为C或其他任何东西.
program NoBorderProject; uses Windows,Messages; {the Messages unit contains the windows Message constants like WM_COMMAND} {$R *.RES} var wClass: TWndClass; Msg: TMsg; win:HWND; function WindowProc(hWnd,Msg,wParam,lParam:Integer):Integer; stdcall; begin if Msg = WM_DESTROY then PostQuitMessage(0); Result := DefWindowProc(hWnd,lParam); end; begin wClass.lpszClassName:= 'CN'; wClass.lpfnWndProc := @WindowProc; wClass.hInstance := hInstance; wClass.hbrBackground:= 1; RegisterClass(wClass); win := CreateWindow(wClass.lpszClassName,'Title Bar',WS_POPUP,//WS_OVERLAPPEDWINDOW or WS_VISIBLE,10,340,220,hInstance,nil); SetwindowLong(win,GWL_STYLE,WS_POPUP or WS_MINIMIZEBox); SetwindowLong(win,GWL_EXSTYLE,0 ); ShowWindow(win,SW_SHOW); while GetMessage(Msg,0) do dispatchMessage(Msg); end.
解决方法
hWnd = CreateWindow(...); SetwindowLong(hWnd,WS_POPUP | WS_MINIMIZEBox); SetwindowLong(hWnd,0); ShowWindow(hWnd,...);
您可能缺少WS_MINIMIZEBox.
今天关于Delphi:你能在DLL中有一个组件类定义,并在运行时加载并创建它吗?的分享就到这里,希望大家有所收获,若想了解更多关于caching – MVC4 StyleBundle:你能在Debug模式下添加一个缓存清除查询字符串吗?、Delphi 2009 – 在运行时创建一个TPanel并改变其颜色、delphi TreeView – 在运行时创建节点、delphi – 你能在Windows中创建一个没有WS_POPUP样式的无边界应用程序主窗口吗?等相关知识,可以在本站进行查询。
本文标签: