我想做一个通用功能,可以应用于许多不同的组件。但是,我不能只是做

TObject.Position


它要求我做

TButton(TObject).Position


这意味着我将不得不做

if TObject is TButton then
    TButton(TObject).position...
if TObject is TLabel then
    TLabel(TObject).position...


有没有一种方法可以使其工作:

TObject.position


这样该函数可以尽可能通用,而不会因switch / if语句而混乱...?

这是我所拥有的:

procedure TForm3.gestureObj(Sender: TObject;
  const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
  if EventInfo.GestureID = igiPan then
    handlePan(EventInfo, Sender);
end;

procedure TForm3.handlePan(EventInfo: TGestureEventInfo; sender: TObject);
var
  item: TControl;
begin

  item:= TControl(TObject);
end;


当我尝试移动do item.position时,这样做会导致访问冲突,我怀疑这是因为它不是TControl吗?

最佳答案

解决方案是使用:

sender as TControl

关于delphi - Delphi TObject位置更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24144566/

10-10 07:08