Il linguaggio di programmazione Delphi
 

class di TButton - problema con le Action

Sandra 4 Mar 2017 14:18
Voglio creare una classe di TButton (per una Toolbar), e relative azioni
in un TActionList; , perchè se in futuro fosse necessario ampliare,
potrei ereditare da TButtonOperation.

I TButton sono inseriti in un Frame ed associati a TActionList.

Sul form di prova, gli eventi funzionano sia su Edit che Insert, ma
qualcosa non mi convince sulle ActionList; infatti se disattivo
*ActionList1: TActionList* gli eventi scattano ugualmente.

Sbaglio qualcosa ?

Non mi interessa registrarlo come componente.

////

type TButtonOperation = class(TButton)
private
btnEdit: TButton;
btnInsert: TButton;
...

ActionList1: TActionList; //anche se disattivo funziona

FEdit: TButton;
FInsert: TButton;
FActEdit: TAction;
FActInsert: TAction;

public
//act_Edit: TAction;

protected

published
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;

property FbtnEdit: TButton read FEdit write FEdit;
property FEditact: TAction read FActEdit write FActEdit;
property FbtnInsert: TButton read FInsert write FInsert;
property FInsertact: TAction read FActInsert write FActInsert;
end;


constructor TButtonOperation.Create(AOwner: TComponent);
begin
inherited Create(Aowner);

FBtnEdit := TButton.Create(Self); //istanzia BtnEdit
FActEdit := TAction.Create(Self); //istanzia ActEdit

FInsert := TSpeedButton.Create(Self);
FActInsert := TAction.Create(Self);
end;

// Form di prova
procedure TfrmTest.FormCreate(Sender: TObject);
begin
inherited;

//Button istanziato nel costruttore
clBtnOperation := TButtonOperation.Create(Self);

//assegna evento
clBtnOperation.FEditact.OnExecute := Edit;
clBtnOperation.FInsertact.OnExecute := Insert;

//l'evento al click sul Button Edit/Insert funziona, ma non
//sono gli eventi associati nella ActionList
....
end;
4ndre4 4 Mar 2017 21:24
On 04/03/2017 13:18, Sandra wrote:

> Voglio creare una classe di TButton (per una Toolbar), e relative azioni
> in un TActionList; , perchè se in futuro fosse necessario ampliare,
> potrei ereditare da TButtonOperation.

Vacci piano con l'ereditarieta`. Perche` vuoi ereditare da TButton?
E` TButtonOperation un TButton? Il suffisso "operation" mi fa pensare di
no. L'ereditarieta` va bene solo se stai implementando una relazione
IS-A, altrimenti usa la composizione. Potrebbe essere questa la causa
del tuo problema. Quale requisito della tua applicazione stai cercando
di implementare?

--
4ndre4
Sandra 5 Mar 2017 08:31
Il 04/03/2017 21:24, 4ndre4 ha scritto:
>>
>>> Voglio creare una classe di TButton (per una Toolbar), e relative azioni
>>> in un TActionList; , perchè se in futuro fosse necessario ampliare,
>>> potrei ereditare da TButtonOperation.
>>
>> Vacci piano con l'ereditarieta`. Perche` vuoi ereditare da TButton?
>> E` TButtonOperation un TButton? Il suffisso "operation" mi fa pensare di
>> no. L'ereditarieta` va bene solo se stai implementando una relazione
>> IS-A, altrimenti usa la composizione. Potrebbe essere questa la causa
>> del tuo problema. Quale requisito della tua applicazione stai cercando
>> di implementare?
>>
una Toolbar (1 Panel + n TButton) da caricare a RunTime quando creo un Form.

certo posso ereditare direttamente da TFrame che contiene Panel e
Button, e sarebbe tutto più semplice, ma qualore ci fosse necessità di
cambiamenti, dovrei creare un nuovo TFrame con i TButton.
4ndre4 5 Mar 2017 10:30
In che senso? Qualora ci fossero cambiamenti, applichi i cambiamenti al frame.
Perché dovresti crearne uno nuovo?

In ogni caso, non devi MAI ereditare da TButton primo perche è semmai
TCustomButton quello da cui ereditare e secondo perché se la tua classe non è
un bottone non deve derivare da TcustomButton.
Sandra 6 Mar 2017 19:10
Il 05/03/2017 10:30, 4ndre4 ha scritto:
>> In che senso? Qualora ci fossero cambiamenti, applichi i cambiamenti al
frame. Perché dovresti crearne uno nuovo?
>>
>> In ogni caso, non devi MAI ereditare da TButton primo perche è semmai
TCustomButton quello da cui ereditare e secondo perché se la tua classe non è
un bottone non deve derivare da TcustomButton.
>>
grazie dei suggerimenti, resto con il TFrame.

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione Delphi | Tutti i gruppi | it.comp.lang.delphi | Notizie e discussioni delphi | Delphi Mobile | Servizio di consultazione news.