我有以下两个类:
TcmTPDataPanel = class(TcmTPBasePanel)
Database: TnxDatabase;
Session: TnxSession;
private
FDataConnector: TcmTPDataConnector;
MyNxDataBase: TnxDatabase;
MyNxSession: TnxSession;
MyRefNxDataBase: TnxDatabase;
protected
procedure Disconnect; virtual; abstract;
procedure Refresh; virtual;
procedure Requery; virtual; abstract;
public
procedure Connect;
published
property DataConnector: TcmTPDataConnector read FDataConnector write
FDataConnector;
end;
TcmTPDataConnector = class(TComponent)
private
FDatabase: TnxDatabase;
FObservers: TList;
FTableForCategories: TnxTable;
FTableForItemCategoryLinks: TnxTable;
FTableForItems: TnxTable;
procedure SetTableForItemCategoryLinks(const Value: TnxTable);
protected
procedure IterateObservers;
public
constructor Create;
destructor Destroy; override;
procedure Register(Instance: TcmTPDataPanel);
procedure Unregister(Instance: TcmTPDataPanel);
published
property Database: TnxDatabase read FDatabase …Run Code Online (Sandbox Code Playgroud) 这是我在这里工作的项目的延续: 与相互使用的类的循环引用问题
在那里收到的建议修复了ciruclar参考问题(再次感谢您的帮助).现在我正在与其他东西搏斗:TcmDataPanel.FObservingDataPanels总是最终= nil,显然是因为它永远不会被创建.(最初我遇到了访问冲突,但在进一步测试时发现FObserver始终为零).
这是相关的代码(它是一个TFrame单元,TcmTPDataPanel是TFrame descednent):
unit cmTPDataPanelFrame;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cmTPBasePanelFrame, cmTPPanels, nxdb, nxllComponent;
type
TcmTPDataConnector = class;
TcmTPDataPanel = class(TcmTPBasePanel)
Database: TnxDatabase;
Session: TnxSession;
private
FDataConnector: TcmTPDataConnector;
MyNxDataBase: TnxDatabase;
MyNxSession: TnxSession;
MyRefNxDataBase: TnxDatabase;
protected
procedure Disconnect; virtual; abstract;
procedure Refresh; virtual;
procedure Requery; virtual; abstract;
public
procedure Connect;
published
property DataConnector: TcmTPDataConnector read FDataConnector write
FDataConnector;
end;
TcmTPCustomDataConnector = class(TComponent)
private
FDatabase: TnxDatabase;
FObservingDataPanels: TList;
FTableForCategories: TnxTable;
FTableForItemCategoryLinks: TnxTable;
FTableForItems: …Run Code Online (Sandbox Code Playgroud) 这个目的主要是为了美观,我已经在 JTextArea 上做过类似的事情,但我无法弄清楚或无法从 JComboBox 的弹出窗口中访问垂直滚动条。我已经通过将其witdh设置为0来删除显示在顶部的箭头。
setUI(new BasicComboBoxUI(){
protected JButton createArrowButton(){
return new JButton(){
@Override public int getWidth() {
return 0;
}
@Override
public void setFocusable(boolean focusable) {
super.setFocusable(false);
}
};
}
});
Run Code Online (Sandbox Code Playgroud)
这是 JScrollPane 内的 JTextArea,没有箭头和更细的条
getVerticalScrollBar().setPreferredSize(new Dimension(10, 0));
getVerticalScrollBar().setUI(new BasicScrollBarUI(){
@Override
protected JButton createDecreaseButton(int orientation) {
return createZeroButton();
}
@Override
protected JButton createIncreaseButton(int orientation) {
return createZeroButton();
}
private JButton createZeroButton() {
JButton jbutton = new JButton();
jbutton.setPreferredSize(new Dimension(0, 0));
jbutton.setMinimumSize(new Dimension(0, 0));
jbutton.setMaximumSize(new Dimension(0, 0));
return …Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我已经四处搜索,但仍然找不到解决我的问题的方法。我在这里有一个自定义类:
import UIKit
/**
DatasourceController is simply a UICollectionViewController that
allows you to quickly create list views.
In order to render our items in your list, simply provide it with a
Datasource object.
*/
open class DatasourceController: UICollectionViewController,
UICollectionViewDelegateFlowLayout {
open let activityIndicatorView: UIActivityIndicatorView = {
let aiv = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
aiv.hidesWhenStopped = true
aiv.color = .black
return aiv
}()
open var datasource: Datasource? {
didSet {
if let cellClasses = datasource?.cellClasses() {
for cellClass in cellClasses {
collectionView?.register(cellClass, forCellWithReuseIdentifier: …Run Code Online (Sandbox Code Playgroud) 我不确定我是否已经解释了这个我能做到的最好但是,我们在这里......
我在表单上有2个自定义组件,它们在设计时通过IDE链接在一起.每当我从组件上调用一个过程时,我都会获得访问冲突,
模块"Project2.exe"中地址0049A614的访问冲突.读取地址00000034.
这是我的代码的一小部分
TMyClient = class(TClientSocket)
{...}
end;
Run Code Online (Sandbox Code Playgroud)
和...
TPresence = class(TComponent)
private
ftheClient: TMyClient
public
procedure SetStatus(status: string);
published
property UserName : string read fUserName write fUserName;
property theClient: TMyClient read ftheClient write ftheClient;
end;
procedure TPresence.SetStatus(status: string);
begin
try
***** if theClient = nil then
Exception.Create('theClient is Nil');
except
on e:Exception do
MessageDlg(e.classname+', '+e.message, mtWarning, [mbOK], 0);
end;
{...}
end;
Run Code Online (Sandbox Code Playgroud)
0049A614在*****,IDE停在此处.
我也尝试过在运行时进行分配
Presence1.theClient := MyClient1;
Run Code Online (Sandbox Code Playgroud)
没有运气
使用Presence1或MyClient1中不依赖于彼此的程序可以正常工作.
德尔福7
跟进:从mghie的评论,我重新思考它.
我从表单中删除了TPresence组件(这导致了一些奇怪的IDE错误,可能与它有关)并创建了它的设计时间,分配了所需的一切.现在它可以正常工作,但是将TPresence组件重新放回到从上会带来错误.
谢谢你的帮助,我现在应该能够解决这个问题,如果我不能重新打开另一个问题:)
我想创建一个基本组件,由一个文本框和旁边的标签组成(换句话说,一个InputText和一个StaticText).
我只需要在Input文本框中设置并获取文本,静态文本将保持原样.
任何帮助将非常感谢!的Jasco
如何从主应用程序调用自定义组件的公共功能.例如,我有一个计时器组件MyTimer.
在主应用程序中,我想调用startTimer()或stopTimer().
在主应用程序中,我有:
<visualcomponent:MyTimer />
Run Code Online (Sandbox Code Playgroud)
在组件中,我有:
public function startTimer():void {
baseTimer = getTimer();
t.start();
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢.
-Laxmidi
我有
...
TDispPitch = class
private
iLineSize: Integer;
iLineColor: TColor;
bDisplayAccent: Boolean;
bVisible: Boolean;
published
property LineSize : Integer read iLineSize write iLineSize;
...etc
end;
...
Run Code Online (Sandbox Code Playgroud)
我想要在Object Insepector中显示此功能来编辑设置.
我尝试添加
property DispPitch: TDispPitch read FDispPitch write FDispPitch. like
Run Code Online (Sandbox Code Playgroud)
可以显示DispPitch,但我看不到它的属性.比如LineSize,LineColor等
JSF2中是否可以从自定义组件(在方法encodeBegin中)访问FacesContext和托管bean?
谢谢.
我正在做一个自定义组件,Delphi XE2中TComponent的后代,我想右键单击它并有2个选项:Next和Previous(例如)
怎么办?请提供代码段或示例.
该选项应该在设计时出现,右键单击表单上的组件,现在是TComponent的后代.但如果有更好的选择来获得功能,则不需要这样做.
下一个和上一个将用于根据集合中的主题切换组件的颜色(通过所有者组件列表).
大家好,我想FieldSet在 Android 中创建一个组件。(类似html),所以像那个。所以我希望我的自定义组件有孩子并有一个板。电路板部分已经完成,但我在显示组件时遇到了一些问题。我正在关注这个答案。这是我的部分:
字段集.java :
public class FieldSet extends ViewGroup {
//... 3 constructors
@Override
protected void onFinishInflate()
int index = getChildCount();
// Collect children declared in XML.
View[] children = new View[index];
while(--index >= 0) {
children[index] = getChildAt(index);
}
// Pressumably, wipe out existing content (still holding reference to it).
this.detachAllViewsFromParent();
// Inflate new "template".
final View template = LayoutInflater.from(getContext()).inflate(R.layout.field_set, this, true);
// Obtain reference to a new container within …Run Code Online (Sandbox Code Playgroud) android custom-component android-custom-view layout-inflater
custom-component ×11
delphi ×5
java ×2
android ×1
apache-flex ×1
class ×1
components ×1
delphi-7 ×1
delphi-units ×1
delphi-xe2 ×1
flash ×1
function ×1
inheritance ×1
ios ×1
jcombobox ×1
jsf-2 ×1
managed-bean ×1
object ×1
oop ×1
properties ×1
swift ×1
swing ×1
xcode ×1