Utilizo um componente desenvolvido por um amigo e gostaria de fazer uma pequena 
alteração.

Este é o cabeçalho do código: 
Minha dúvida segue após o código:

*************************************************************************************************
type

  TParameter = class;
  TCollectionParameters = class;
  TELG_ValidateSQL = class;

{ TParameter }

  TParameter = class(TCollectionItem)
  private
    FParameterName: String;
    FValue: String;
    FVisualControl: TWinControl;
    function GetVisualControl: TWinControl;
    procedure SetVisualControl(const VisualControl: TWinControl);
  protected
    function GetDisplayName: String; override;
  published
    property ParameterName: String Read FParameterName Write FParameterName;
    property Value: String Read FValue Write FValue;
    property VisualControl: TWinControl Read GetVisualControl Write 
SetVisualControl;
  end;

{ TCollectionParameters }

  TCollectionParameters = class(TCollection)
  private
    FParameters: TELG_ValidateSQL;
    function GetItem(Index: Integer): TParameter;
    procedure SetItem(Index: Integer; Value: TParameter);
  public
    constructor Create(AOwner: TELG_ValidateSQL);
    function Add: TParameter;
    property Items[Index: Integer]: TParameter Read GetItem Write SetItem;
  end;

{ TELG_ValidateSQL }

  TELG_ValidateSQL = class(TComponent)
  private

    FHackOnValidateEdit: TEditEnhValidateEditEvent;
    FHackOnExit: TNotifyEvent;
    FParamsInput: TCollectionParameters;
    FParamsOutput: TCollectionParameters;
    FSQLText: TStringList;
    FMessageNotFound: String;
    FIB_Connection: TIB_Connection;
    FIB_Transaction: TIB_Transaction;
    QueryTemp: TIB_Query;
    FOnValidate: TNotifyEvent;
    FAfterValidate: TNotifyEvent;
    FBeforeValidate: TNotifyEvent;
    FVisualControlTrigger: TWinControl;
    function GetSQLText: TStringList;
    function GetIB_Connection: TIB_Connection;
    function GetIB_Transaction: TIB_Transaction;
    function GetVisualControlTrigger: TWinControl;
    procedure SetIB_Connection(const Value: TIB_Connection);
    procedure SetIB_Transaction(const Value: TIB_Transaction);
    procedure SetSQLText(const Value: TStringList);
    procedure SetParamsInput(Value: TCollectionParameters);
    procedure SetParamsOutput(Value: TCollectionParameters);
    procedure SetVisualControlTrigger(const VisualControlTrigger: TWinControl);

    procedure HackOnValidateEdit(Sender: TObject; var ErrCode: Integer);
    procedure HackOnExit(Sender: TObject);

    { Private declarations }
  protected
    { Protected declarations }
  public
    Valid: boolean;
    Enabled: boolean;
    function Execute: boolean;
    procedure GenInParams;
    procedure GenOutParams;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    { Public declarations }
  published
    property SQLText: TStringList read GetSQLText write SetSQLText;
    property MessageNotFound: String read FMessageNotFound write 
FMessageNotFound;
    property IB_Connection: TIB_Connection read GetIB_Connection write 
SetIB_Connection;
    property IB_Transaction: TIB_Transaction read GetIB_Transaction write 
SetIB_Transaction;
    property ParamsInput: TCollectionParameters read FParamsInput write 
SetParamsInput;
    property ParamsOutput: TCollectionParameters read FParamsOutput write 
SetParamsOutput;
    property VisualControlTrigger: TWinControl read GetVisualControlTrigger
                                               write SetVisualControlTrigger;
// Eventos
    property OnValidate: TNotifyEvent read FOnValidate write FOnValidate;
    property BeforeValidate: TNotifyEvent read FBeforeValidate write 
FBeforeValidate;
    property AfterValidate: TNotifyEvent read FAfterValidate write 
FAfterValidate;

    { Published declarations }
  end;

*************************************************************************************************

Para acessar a propriedade Value do parâmetro eu uso o seguinte código:

M_PR[02] := StrToInt(ELG_ValidateSQL.ParamsOutPut.Items[02].Value);

Mas gostaria de acessar da seguinte maneira, para ficar mais legível e não 
ficar dependente da ordem em que os parâmetros aparecem na lista:

M_PR[02] := StrToInt(ELG_ValidateSQL.ParamsOutPut.ParamByName('CPPRZ01').Value);

Acessando o parâmetro pela função PARAMBYNAME e não pelo seu índice. Alguém 
sabe fazer isso? Fiquei a manha inteira e nao consegui fazê-lo.

[]´s
Leandro

[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a