标签: tobject

Delphi数组初始化

我目前有这个,它很糟糕:

type TpointArray = array [0..3] of Tpoint;

class function rotationTable.offsets(pType, rotState, dir: integer): TpointArray;
begin

  Result[0] := point(1, 1);
  Result[1] := point(1, 2);
  Result[2] := point(1, 1);
  Result[3] := point(1, 1);
end;
Run Code Online (Sandbox Code Playgroud)

但相反,我想做这样的事情:

class function rotationTable.offsets(pType, rotState, dir: integer): TpointArray;
begin
   Result := [Point(1,1), Point(1,2), Point(1,1), Point(1,1)];
end;
Run Code Online (Sandbox Code Playgroud)

但是,在编译时,它抱怨[1,2,3,4]语法只适用于整数.

有没有办法实例化/初始化一个Tpoint数组,类似于我想要的方式?

arrays delphi point tobject

18
推荐指数
3
解决办法
3万
查看次数

将泛型<TObject>类传递给表单

我似乎无法通过搜索找到答案,所以这里......

我知道我可以通过利用这种类型的代码将Class对象一般传递给其他类:

public class ClsGeneric<TObject> where TObject : class
{
    public TObject GenericType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后以这种方式构建:

ClsGeneric<MyType> someName = new ClsGeneric<MyType>()
Run Code Online (Sandbox Code Playgroud)

但是,我有一个应用程序,要求我打开一个表单,并以某种方式传递泛型类型以便在该表单中使用.我试图能够为许多不同的类类型重用此表单.

有谁知道这是否可能,如果可能,如何?

我已经使用Form构造函数进行了一些实验,但无济于事.

非常感谢,戴夫

更新:澄清我想要达到的结果是什么

在此输入图像描述

更新:今年4月4日,我进一步前进,但我提供了解决方案的赏金.这就是我现在拥有的:

interface IFormInterface
{
    DialogResult ShowDialog();
}


public class FormInterface<TObject> : SubForm, IFormInterface where TObject : class
{ }

public partial class Form1 : Form
{
    private FormController<Parent> _formController;

    public Form1()
    {
        InitializeComponent();
            _formController = new FormController<Parent>(this.btnShowSubForm, new DataController<Parent>(new MeContext()));   
    }
}

public class FormController<TObject> where TObject : class
{
    private …
Run Code Online (Sandbox Code Playgroud)

c# forms generic-programming tobject

10
推荐指数
2
解决办法
1188
查看次数

TObject包含哪些数据?

TObject.InstanceSize返回8,但TObject没有声明任何数据成员.根据TObject.ClassType的实现,前4个字节可以解释为指向对象的TClass元数据的指针.任何人都知道其他4个字节的开销是什么?

编辑:显然这是D2009特有的.在旧版本中,它只有4个字节.

delphi object delphi-2009 tobject

8
推荐指数
1
解决办法
1741
查看次数

为什么TObject.AfterConstruction和BeforeConstruction具有公众可见性?

如今,一个很简单的问题来到我的脑海里,当我不得不重写TObjectBeforeConstruction方法:

为什么TObject方法AfterConstructionBeforeConstructionpublic知名度?

我希望他们是protected.他们不是的原因是什么?

我无法想象调用AfterConstructionBeforeConstruction不调用该类的构造函数或析构函数的有效目的.你呢?

delphi tobject delphi-xe4

8
推荐指数
1
解决办法
580
查看次数

使用他的ClassType转换TObject?

我怎样才能使我的代码工作?:)我试图制定这个问题,但经过几次失败的尝试后,我认为你们会更快地发现问题,而不是阅读我的"解释".谢谢.

setCtrlState([ memo1, edit1, button1], False);
Run Code Online (Sandbox Code Playgroud)

_

procedure setCtrlState(objs: array of TObject; bState: boolean = True);
var
  obj: TObject;
  ct: TClass;
begin
  for obj in objs do
  begin
    ct := obj.ClassType;


    if (ct = TMemo) or (ct = TEdit) then
      ct( obj ).ReadOnly := not bState;        // error here :(

    if ct = TButton then
      ct( obj ).Enabled:= bState;        // and here :(

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

delphi tobject

5
推荐指数
2
解决办法
4446
查看次数

无效的类型转换:在64位平台上将记录转换为tobject

它适用于32位平台.但这里不是64位的例子

  TVerbInfo = packed record
    Verb: Smallint;
    Flags: Word;
  end;

var
  VerbInfo: TVerbInfo;
  strList : TStringList;
  verb : Smallint;
  flags : Word;
begin
  strList := TStringList.create();
  .....
  verbInfo.verb := verb;
  verbInfo.flags := flags;
  strList.addObject('verb1',TObject(VerbInfo));  //invalid typecast happened here
end;
Run Code Online (Sandbox Code Playgroud)

谁能帮我?非常感谢你

delphi 64-bit casting record tobject

5
推荐指数
1
解决办法
1071
查看次数

Delphi:在Variants数组中传递TObject

我有一个程序,需要一个TObject类型的参数,如下所示:

MyProcedure (const AValue : TObject);
Run Code Online (Sandbox Code Playgroud)

我有一个Variant数组,我正在循环调用该过程,如下所示:

  for i:=0 to High(myArray) do
    MyProcedure (myArray[i]);
Run Code Online (Sandbox Code Playgroud)

编译器给出错误说:"不兼容的类型:TObject和Variant".

我该怎么做才能解决这个问题?

更多信息:到目前为止,我一直在变量数组中传递简单类型(字符串,数字,日期)(数组通常是不同类型的混合 - 我最终将它们作为参数传递给数据库存储过程).现在我还需要(在某些情况下)传递一个TObject.

传递值的最合适的数据类型/结构是什么,它可以包含简单类型和对象?我想我可以创建自己的TParam类型,它有两个字段,但我不确定确切的语法.有人有这方面的例子吗?

delphi variant tobject

3
推荐指数
1
解决办法
5754
查看次数

为什么TObject中的"T"前缀?

在声明类等时,"T" TObject代表什么?模板?

例:

procedure TfrmMain.CaptureInfo1Click(Sender: TObject);
begin
  frmCapture.Show;
end;
Run Code Online (Sandbox Code Playgroud)

delphi tobject

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

Delphi的TObject线程列表 - 如何填充?

根据我对此主题的有限知识,以下代码应该有效.但我没有预期的结果:

type
  TClient = class(TObject)
    Host: String;
  end;

var
  Clients: TThreadList;

const
  Hosts: Array[0..5] of String = ('HOST1', 'HOST2', 'HOST3', 'HOST4', 'HOST5', 'HOST6');
var
  I: Integer;
  List: TList;
  Client: TClient;
begin
  try
    for I := Low(Hosts) to High(Hosts) do
    begin
      Client := TClient.Create;
      with Client Do
      try
        Host := Hosts[I];
        List := Clients.LockList;
        try
          Clients.Add(Client);
        finally
          Clients.UnlockList;
        end;
      finally
        Client.Free;
      end;
    end;
  except
    on E:Exception Do ShowMessage(E.Message);
  end;

// RESULT TEST
List := Clients.LockList;
try
  I := List.Count;
  S := …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading list object tobject

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

Android上的Delphi FireMonkey TListBox AddObject异常

我在Delphi 10.0 Seattle中TObject为FireMonkey 添加值时遇到问题TListBox.

Integer变量转换为TObject指针时会引发异常.

我试过演员TFmxObject没有成功.在Windows上,演员表就像一个魅力,但在Android上,它引发了异常.

这是我的代码:

var
  jValue:TJSONValue;
  i,total,id: integer;
  date: string;
begin
  while (i < total) do
  begin
    date := converteDate(jValue.GetValue('date' + IntToStr(i), ''));
    id := StrToInt(jValue.GetValue('id' + IntToStr(i), ''));
    ListBox1.Items.AddObject(date, TObject(id));
    i := i + 1;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi android listbox tobject firemonkey

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

在 Delphi 中获取对象在列表中的位置?

我想知道如何在创建的列表中获得某个对象的位置。可以说它就像一个图形列表,您可以在其中单击对象。假设您右键单击一个对象并单击“刷新”,我如何获取该对象的位置,以便在整个列表刷新后(由于某种原因使用 clearlist 刷新)我回到列表中的相同位置? 如果列表长度为 1000 个对象,则刷新后尝试向下滚动到相同位置会很麻烦。

代码使用 Tobject 但我可以做类似 position:=integer(TObject."pointerinfo???"); 的事情吗?之后,当程序刷新时,例如将视图的位置设置为 currentview(pointer) 之类的指针?

实际上它不必是同一个对象,但是列表的相同“视图”会更好。

提前致谢

delphi listview list tobject

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