问题标签 [custom-component]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Delphi 编译器警告指向 Delphi 自己的单元
在 Delphi 2007 中,在一个包含自定义组件的项目上工作,当我进行完整构建时(但不是在我进行直接编译时),我收到这组警告作为消息中的前四个:
我通常会尽量消除编译器警告,但这些是“库存”Delphi 单元。这些警告是我代码中某些内容的间接结果吗?如果是这样,我如何弄清楚什么/在哪里?如果没有,我应该怎么处理它们?
windows - Windows(或其他操作系统)如何更新客户端的后台区域?
或者换一种方式问,OnEraseBkgnd() 是如何工作的?
我正在构建一个自定义控件,我遇到了这个问题。
像往常一样,孩子是矩形。我不得不禁用OnEraseBkgnd() 并且只使用 OnPaint()。
我需要的是有效地清除孩子们背后的区域并且不闪烁。
使用后台缓冲区之类的技术不是一种选择。
编辑:我对 OnEraseBkgnd() 底层的算法非常感兴趣。但任何有用的答案也将被接受。
delphi - 包中的框架继承和重复文件
我一直在使用 TFrames 和 ModelMaker 开发许多组件——我发现视觉设计/开发 + 继承 + ModelMaker 的组合非常引人注目。然后我注册这些带有注册单元的 TFrame 后代,它们从那里成为成熟的基于调色板的组件。我正在使用德尔福 2007。
在我了解这个过程的小“障碍”的早期,我发现通过引入 TFrame 后代流错误(通常在 IDE 中显示为表单,而不是帧)可以完全消除我遇到的一些问题我自己的“TBaseFrame”类从 TFrame 继承而没有 chanegs,然后使用 THAT 作为基类来开发组件(添加方法、属性等)。如果我将属性和方法等添加到直接从 TFrame 继承的类/框架中,则 dfm 文件流式传输经常会感到困惑。
所以,总的来说,它工作得很好,一旦我解决了问题。
不过,昨天我遇到了一个新问题:
我将生成的组件安装在包集中,以有意义的方式分组(即,应用程序 1 的所有“面板”都在一个包中,应用程序 2 的许多“查看器”在另一个包中,等等)。
如果包中不包含 TBaseFrame 类,则继承的 TFrame-descendant 组件将不会加载到 IDE 中。但是,如果我将 TBaseFrame 添加到包中,当它在多个包中具有相同的源 PAS 文件时,我会遇到 Delphi 报告的冲突。
我可以将所有基于框架的组件放入一个巨大的包中,但我真的非常不喜欢这样做,因为我可以清楚地看到随着时间的推移会变得太大/失控,考虑到多少套的性质我打算开发。有没有其他方法可以解决这个冲突?
更新——有一个技巧可以让它“正常”工作——一定要阅读下面的评论。
delphi - 在 Delphi 中使用 TOwnedCollection 后代
我正在尝试使用集合属性创建自定义组件。但是,如果我尝试在设计时通过单击对象检查器中的“...”按钮来打开集合编辑器,则不会发生任何事情。我错过了什么?
这是我的 TCollection 后代:
和项目:
delphi - Delphi 包:“必须进行以下更改......”永远不会消失
在我的一个包中,它是使用另存为和编辑从另一个包改编而来的,我不断收到以下消息(这是在 Delphi 2007 中):
=======
必须进行以下更改才能编译此包。选择 OK 以应用这些更改并继续编译。
=======
我单击确定,然后继续编译。然而,这条消息永远不会消失——我每次编译包时都会收到它。
这是项目源代码,使用右键单击“查看源代码”即可到达:
“cmSizePanel_Reg”不再在项目中,也不会出现在项目管理器面板中。看起来它“隐藏”在 Delphi 用于包的文件之一中,但我没有看到在哪里。有什么想法可以消除这种小小的不便,而不必从头开始重新创建包?
delphi - How to diagnose "Cannot access package information" error in Delphi IDE
I am developing a set of TFrame-based components that inherit from one another (as so many who have helped me tremendously along the way already know!), and am running into yet another little "snag," related to packages and installation.
I have essentially the following hierarchy:
...and a panel, TExtRzPanel, which inherits from a Raize Panel and adds some sizing / moving functionality to it, along w/a few other properties / features. TBaseSizeableFrame uses this component, and passes through much of it's functionality to the frame itself, so I can develop the compound Viewer components visually. Overall it works well.
The TFrame descendants are all registered to the palette (see this post for related question I asked earlier). Currently, I have packages set up like this:
- MyPanels - Contains the TExtRzPanel
- BaseFrames - Contains TBaseFrame, and TBaseSizeableFrame
- ViewerSet1 - Contains one Viewer frame-based component, and a non-visual component which calls that Viewer as a dialog form. (I'm planning on this package having a few other viewers in it as well).
The main error that started my current chaos was this one:
Cannot access package information for package 'MyPanels.bpl'
I'm dizzy enough with this thing now that I'm having trouble remembnering the exact sequences of what I've tried and in what order, but the trouble seems to have started when I added the dialog form to ViewerSet1, which uses a TViewer frame from the same project, and which (of course) thus uses a TExtRzPanel (which is the package the IDE is complaining about).
Based on this I've deleted the DCP files (and DCU files too, I think at some point), uninstalled the packages, and then recompiled/reinstalled them MyPanels -> BaseFrames, and got them all working to that point, but upon installing ViewerSet1 the whole thing blows apart again. Other errors I noted along the way of trying to figure this out include these:
- Package C:\Documents and Settings\All Users\Documents\RAD Studio\5.0\Bpl\MyPanels.bpl can't be installed because it was created with a different version of Delphi or CBuilder. Do you want to attempt to load this package the next time a project is loaded? (Note: I've only built this with ONE version of Delphi -- Delphi 2007)
- At one point, I noticed that the package description for MyPanels didn't "take" (i.e. it showed up as just the file name is Tools -> Compoenent -> Install Packages), which makes me think maybe there are two versions of the file the IDE is finding / using, but I'm not seeing/finding that to be the case.
- The warning Delphi gives when starting up, indicating it can't load an installed package, and do you want to load it next time, etc.
- Cannot access package information for package 'MyPanels.bpl' (Lather, rinse, repeat)
Any and all help / direction re: how to diagnose, along with any conceptual explanation which could help me understand what to even look for, would be most appreciated. THANKS IN ADVANCE. You folks have been SO helpful here! Thank you. : )
Update later:
After setting this aside for a bit and coming back to it, I tried deleting all the DCP / DCU MyPanels files, and then installing the three packages step by step. (VMWare was worth its weight in gold here -- snapshots after each success, so as to not have to start over at the bottom if/when things went wrong). Turns out, if I removed the dialog form from the ViewerSet1 pakckage, it installs OK. If I then add the form again (which doesn't show up with its DFM, like I ran into here), it seems to install OK. I've got all the components installed not and seemingly working OK (and snapshot the whole thing in my VM!), but I'm still not sure what went wrong nor why. What could adding that form have done initially which would cause these kinds of errors? Any idea?
Even a better explanation / understanding of what kinds of things can cause the "Cannot access package information" error would be helpful in the long run, I think.
java - 为什么我的 Facelets 循环变量不会超出范围?
我知道这看起来像很多文字,但我认为这是我缺少的一个非常简单的概念。
我正在用 Facelets 编写一个 Web 应用程序。我有一个自定义标签 rq:request-list,它将请求列表作为参数并输出一个可爱的表格来显示它们。到现在为止还挺好。
rq:request-list 开始于你所期望的:
结果很好。它甚至在表格中有一个链接来编辑请求。伊皮!
在将支持 bean 中的请求设置为我们所在的表行表示的请求之后,这将我们带到编辑页面。这就是问题所在。而且很微妙。
rq:request-list 在一页中多次使用;像这样:
现在表格看起来不错;也就是说,所有的文字都是正确的。但是,commandLinks 指向了错误的 Requests……它们指向页面上最后一个rq:request-list 对应行的 Request。与请求有关的数据按应在表中的形式输出,但 {req} 在单击 commandLink 时指向错误的请求。
重申一下,如果我在页面上有几个 rq:request-lists,则每个rq:request-list 第一行的 Edit 链接指向页面上最后一个 rq:request-list 中的第一个请求(行) . 每个rq:request-list的第二行的 Edit 链接指向页面上最后一个 rq:request-list 的第二个请求(行)。等等。
我怎样才能让 {req} 指向我原来的样子,而不仅仅是成为过时列表中的索引?
谢谢!
delphi - Delphi 2006 丢失组件包
Delphi 2006,每次重新启动,都会丢失组件包。这种情况每天都会发生。我们有我们自己编写的带有自定义 VCL 组件的组件包。启动 Delphi 2006 时,没有任何记录。但是,一旦我打开一个包含其中一些组件的表单,我就会收到
bds.exe - 无法找到组件
此应用程序无法启动,因为未找到 DclOpusRep2006.bpl。重新安装应用程序可能会解决此问题。
当我尝试重新安装组件包时,可能会发生两件事:
- 我得到了一个设计包的空列表,并且必须去 regedit 删除有问题的包,然后才能重新添加它。
- 我得到了设计包的列表,它确实向我显示了有问题的包已加载且可用。
该软件包始终在本地驱动器上可用,但不是 Delphi 所在的驱动器。故障排除有什么想法吗?
只是为了根据第一个答案澄清我的问题:我是这个项目的唯一开发人员。该库已从它仍然驻留的相同位置安装,并且组件包列表中的路径是正确的。
delphi - “无法加载包 A,它包含单元 X,它也包含在包 B 中”
(对我来说更多的包/组件安装乐趣——感谢大家迄今为止的所有帮助)。
我在 Delphi 2007 中将错误列为标题。包 A 是我的基于框架的“查看器面板”包。包 B 是一个包含几个组件的包,这些组件用于显示有关链接到 gven 数据库的数据集的信息(它们的 SQL、状态、类类型等),其中一个是非可视组件(我们称之为检查员)创建并调用显示该信息的表单。单元 X 是该表单的单元。
我将 Inspector 组件添加到 Package 中的一个查看器面板中,但此后将其删除,并且在项目的 View Source 中找不到对它的任何引用,也找不到我添加到的基于框架的查看器面板的单元。参考隐藏在哪里?
此外,将 Inspector 组件添加到其中一个视图面板框架(也作为注册组件安装)会导致此问题的原因是什么?
这可能与上一个问题和这个问题有关,但我决定从这个特定的症状/问题重新开始,只是为了保持简洁明了,希望以后对其他人有用。提前感谢您的任何帮助。
更新:
感谢 Loren,我能够找到并删除保留并导致问题的 USES 引用。但是,我仍然不清楚如何完成我想要完成的事情。: \ 这是最新的:
Inspector 是一个简单的非可视组件,它包含一个 DataSet 属性和一个内部“信息表单”。调用 ShowInfo 方法会创建表单,并使用与链接的 DataSet 相关的各种信息填充它。我想用它来调试驱动观众的 SQL。
如上所述,检查器包含在包 B 中。查看器在包 A 中。我想在一些 TFrame 后代(注册为真正的调色板组件)上使用检查器组件。当我将该组件放在给定的 TFrame 上以使用它并编译/安装包 A 时,我收到“无法加载包 A,它包含单元 X,它也包含在包 B 中”错误。现在显然是原因,我可以按需重新创建问题。
moobaa 下面的建议是有道理的,但似乎即使我试图按照他的建议进行方法 #2,它也不起作用。我错过了什么?看起来这应该是可行的,事实上,我见过的大多数软件包似乎一直在使用其他已安装的软件包(包括 VCL 本身)。
注意:据我所知,包 B 不依赖于包 A(而且我已经单独安装了它,所以似乎同意)。
(顺便说一句,是否有任何工具可以像这样“绘制”包依赖项?我使用的是 D2007)
一如既往,感谢您的时间和帮助。
delphi - Delphi "E2161 Error: RLINK32: Error opening file ________.drf" 在 Build All 期间
我正在尝试使用一组显然存在依赖性问题的包来解决问题。偶尔在 Build All 期间,我会收到此错误:
Delphi“E2161 错误:RLINK32:打开文件 ________.drf 时出错”
它是什么意思/指示,什么是“drf”文件?