标签: components

为什么我的自定义组件会在IDE中引发AV?

我正在尝试编写一个简单的组件,允许您使用SDL 1.3 API在Delphi窗口上嵌入一个或多个SDL渲染表面.它将编译和安装得很好,但是当我尝试在表单设计器中使用该组件时,每当我尝试在对象检查器中访问其属性,保存表单或删除组件,并将其放置在一个上时,它就会引发AV.然后尝试运行的表单给出了一个链接器错误:由于某种原因,它显然无法正确读取DFM.

DLL可以在http://www.libsdl.org/tmp/SDL-1.3-dll.zip找到,我的组件的源代码可以在这里下载.SDL.pas是一个JEDI-SDL头文件; 剩下的就是我自己的代码.

我没有看到任何理由在表单设计器中引发AV.如果我在运行时动态创建控件,我没有任何稳定性问题.任何人都可以看看这个,也许可以提供一些反馈,可以帮助我清理它?

delphi components sdl access-violation

0
推荐指数
1
解决办法
363
查看次数

在visual c#中创建新组件


你能告诉我如何在c#中创建自己的可视组件.
你建议哪个来源?

c# components

0
推荐指数
1
解决办法
3464
查看次数

在第二类中访问另一个类的Swing组件

我有2班Engine.javaWindow.java.在Window.java我有一个按钮,将创建的实例Engine.java.

我该如何传递Window.javaEngine.java

我知道我可以使用它,但这表示按钮的那一刻按钮.

原因是我希望能够访问Window.java内部的所有组件Engine.java.

public class Engine{
   Window window;

   public Engine(Window en){
       window = en;
   }
   //rest of your code
}

public class Window(){

     btnDownload.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
                 //At the point where you create the Engine
                  Engine en = new Engine(this);
                 //rest of your code
        }
}
Run Code Online (Sandbox Code Playgroud)

java methods swing components parent

0
推荐指数
1
解决办法
1218
查看次数

在TCustomRichEdit上方添加一个速度按钮

我正在尝试创建一个TCustomRichEdit,上面有一些速度按钮.我怎样才能完成这个行为?组件的高度需要是按钮+ richedit.

[B][I][U]
+-------+
|A1REdit|
|       |
+-------+
Run Code Online (Sandbox Code Playgroud)

目前我有以下代码:

private
  FBoldButton: TSpeedButton;

constructor TA1RichEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FBoldButton := TSpeedButton.Create(Self);
  FBoldButton.Parent := Self;
end;

destructor TA1RichEdit.Destroy;
begin
  FreeAndNil(FBoldButton);

  inherited;
end;
Run Code Online (Sandbox Code Playgroud)

这描绘了richedit上的速度按钮(因为richedit是父级),我需要按钮位于richedit之上.在这段代码之后,richedit并没有像它应该的那样绘画.

delphi components derived custom-controls

0
推荐指数
1
解决办法
534
查看次数

组件已发布属性,如TFont.Name

我在下面写了一个样本组件:

unit Test;

interface

uses
  System.SysUtils, System.Classes, System.Variants, VCL.Dialogs;

type
  TTest = class(TComponent)
  private
    fName: TStringList;
    { Private declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); Override;
    destructor Destroy; override;
  published
    { Published declarations }
    property Names: TStringList read fName;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TTest]);
end;

{TTest }

constructor TTest.Create(AOwner: TComponent);
begin
  inherited;
  fName := TStringList.Create;
  for i:= 1 to 100 do
      fName.Add(IntToStr(i));
end;

destructor TTest.Destroy;
begin
  fName.Free;
  inherited;
end;

end.
Run Code Online (Sandbox Code Playgroud)

现在当我在Delphi上安装它时,在Object Inspector中我有一个名为"Names"的属性,我应该双击它,然后一个对话框显示存储在Name上的TStringList项.

我想在其他组件(如TEdit等)中使这个属性像Font.Name,当点击Name属性,列表显示,用户可以从中选择一个项目,然后将项目分配给属性并显示为Object …

delphi components

0
推荐指数
1
解决办法
572
查看次数

打开数据模块时,为什么Component Palette会发生变化?

我在Windows 7 x64上安装了Delphi 7.事情顺利进行,但现在,当我打开或创建数据模块时,它会混乱组件调色板.通过搞砸,我的意思是它似乎在争夺哪个标签组件,或者完全隐藏它们.这是非常不寻常的行为.

卸载并重新安装Delphi 7没有帮助.

delphi components palette datamodule

0
推荐指数
1
解决办法
188
查看次数

Delphi:在Object Inspector中使用组合框编辑器的属性.在列表中获取表单组件

我想通过下拉列表在Object Inspector中编辑已发布的属性.让我们说吧 DataSet: TDataSet.

我还没开始,但是使用这个http://delphi.about.com/library/bluc/text/uc092501c.htm我将创建一个属性编辑器,在GetValues方法中我应该做一些工作来找出哪些组件,是descendats TDataSet,已经是我现在设计的形式.

但没有找到任何例子.我应该如何在我的PropertyEditor.GetValues方法中提供对当前表单的访问权限,还是有另一种方法?

为什么不是这样的: 如何创建列出其他组件的组件属性?

因为在下拉列表中的某些时候应该列出两种或更多类型的组件.最后 - 我需要在Property中保存一个指向某个组件的指针,该组件与声明的类型不同.

我再说一遍:Property: TClassNone并且应该在那里列出:TClassOne, TClassTwo and TClass Three不是下降的TClassNone.

delphi components

0
推荐指数
1
解决办法
1118
查看次数

Artemis ECS中位数据背后的目的

什么是背后的目的bit在成员Component Type,以及TypeBitSystemBit成员在Entity为阿蒂米斯ECS?

这些是Artemis ECS的git存储库的一些屏幕截图,它们引用ComponentTypeEntity:

对于 ComponentType

对于<code>Entity</code>
<img rel=

是git的链接.

java components entity system artemis

0
推荐指数
1
解决办法
355
查看次数

delphi透明背景组件

关于Delphi XE的快速问题.

我正在尝试制作具有透明背景的自定义圆形组件,以便在添加到表单上时,组件可以与其他组件重叠.我已经尝试过Brush.Style:=bsTransparent;或者ellipse()更多...但仍然无法找到使边缘区域透明的方法.

反正我是否可以在不使用其他lib或api的情况下使组件的边缘区域透明?

delphi components shape transparent

0
推荐指数
1
解决办法
2924
查看次数

在运行时创建对象并使用它们

我的程序运行时创建的对象有问题

首先我创建n个对象(假设n:= 3)

for i:=0 to n-1 do
  begin
    With TGauge.Create(Form1) do
      begin
        Parent  := Form1;  // this is important
        Left    := 20;     // X coordinate
        Top     := 20+i*45;     // Y coordinate
        Width   := 250;
        Height  := 20;
        Kind    := gkHorizontalBar;
        Name    := 'MyGauge'+IntToStr(i);
        //.... 
        Visible := True;
      end;
  end;
Run Code Online (Sandbox Code Playgroud)

这三个对象在表单中创建并可见.现在我想改变它的'属性,但每当我尝试访问这些创建的对象时,我只会得到它

EAccessViolation
Run Code Online (Sandbox Code Playgroud)

例如,当我尝试获取一个对象的名称时

g := Form1.FindComponent('MyGauge0') as TGauge;
Form1.Label1.Caption:=g.Name;
Run Code Online (Sandbox Code Playgroud)

delphi components runtime reference delphi-7

0
推荐指数
1
解决办法
776
查看次数