delphi свойство чтения функции добавить значение - PullRequest
0 голосов
/ 11 марта 2020
TApplicationWrapper = class(TObjectWrapper)
private
  function GetMyFonk(): string;
  procedure SetMyFonk(myCmd: string);
published
  property myFonk: String read GetMyFonk write SetMyFonk;

...

function TApplicationWrapper.GetMyFonk(): string;
begin
  ShowMessage('GetMyFonk is Run');
  Result :='';
end;

procedure TApplicationWrapper.SetMyFonk(myCmd: string);
begin
  ShowMessage('SetMyFonk is Run');
end;

Программа работает таким образом. Но я хочу присвоить параметры функции GetMyFonk().

function GetMyFonk (myCommand : String ): string;

Я получаю сообщение об ошибке.

[dcc32 Error] altPanellerU.pas(74): E2008 Incompatible types

My Screen Shot

Как я могу присвоить значение функции?

1 Ответ

4 голосов
/ 11 марта 2020

Ваше свойство просто не поддерживает функцию получения, которая принимает параметры. Для каждого параметра, который вы хотите добавить к получателю, вы должны добавить соответствующий параметр к свойству и установщику, например:

TApplicationWrapper = class(TObjectWrapper)
private
  function GetMyFonk(myCommand : String): string;
  procedure SetMyFonk(myCommand : String; Value : string);
published
  property myFonk[myCommand : String] : String read GetMyFonk write SetMyFonk;

...

function TApplicationWrapper.GetMyFonk(myCommand : String): string;
begin
  ShowMessage('GetMyFonk is Run w/ ' + myCommand);
  Result :='';
end;

procedure TApplicationWrapper.SetMyFonk(myCommand : String; Value: string);
begin
  ShowMessage('SetMyFonk is Run w/ ' + myCommand);
end;

И тогда вам нужно будет получить доступ к свойству следующим образом:

App: TApplicationWrapper;
... 
S := App.MyFonk['command'];
... 
App.MyFonk['command'] := S;

Более подробно это обсуждается в документации Embarcadero:

Свойства (Delphi)

См. Раздел «Свойства массива».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...