Newsgroup: it.comp.lang.delphi
Titolo: ereditare eventi

dal menu di Form 1 crea un Frame ancorato a ScrollBox
il Frame creato a sua volta crea il Frame ToolBar (Frame2)
in pratica Form1--> Frame6 --> Frame2 (qui gli eventi restano
confinati)
lo scopo e' creare una ToolBar su ogni Frame creato con istanza
a Frame2 , in modo da avere ToolBar indipendenti
problema 1:
al click su un Pulsante su Frame2, viene eseguito l'evento ma
non trovo il modo di far arrivare l'evento alla classe Frame6 ,
salvo usare un Timer su Form1.
problema 2 :
distruzione del frame, al click su un pulsante chiamo Free,
che essendo della classe Frame2 cancella i pulsanti, ma qui
dovrebbe tornare alla classe Form1 e distruggere Frame2
se Form1 crea Frame6 che a sua volta crea Frame2 , e' possibile
da Frame2 restituire l'evento di un pulsante a Frame6 ?
Maurizio
// un po' di codice magari aiuta a capire
Form1 - form standard
Frame2 - frame con vari TSpeedButton + Action List
Frame6 - Frame standard con controlli
//Form1 chiama e crea Frame6
  frm2:=TFrame6.Create(Self);
  frm2.Parent:=ScrollBox1;
  frm2.Show;
// Frame6 crea il Frame con i Pulsanti (Frame9)
type
  TFrame6 = class(TFrame2)
    ListBox1: TListBox;
    CheckBox1: TCheckBox;
    Button1: TButton;
    Panel1: TPanel;
  private
    { Private declarations }
    ToolBar:TFrame2;
  public
    { Public declarations }
    constructor create(AOwner: TComponent); override;
    destructor destroy; override;
    procedure Action2Execute(Sender: TObject); override;
  end;
constructor TFrame6.Create(AOwner: TComponent);
begin
  inherited;
  ToolBar:=TFrame9.Create(Self);
  ToolBar.Parent:=Panel1;
  ToolBar.Align:=alClient;
  ToolBar.Show;
end;
procedure TFrame6.Action2Execute(Sender: TObject);
begin
  inherited;
  //
end;
// Frame 2
type
  TFrame2 = class(TFrame)
    ActionList1: TActionList;
    Action1: TAction;
    Action2: TAction;
    SpeedButton2: TSpeedButton;
    SpeedButton1: TSpeedButton;
    SpeedButton3: TSpeedButton;
    Action3: TAction;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    Action4: TAction;
    Action5: TAction;
    procedure Action5Execute(Sender: TObject);
    procedure Action3Execute(Sender: TObject);
    procedure Action2Execute(Sender: TObject); virtual;
    procedure Action1Execute(Sender: TObject); virtual;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
implementation
{$R *.dfm}
procedure TFrame2.Action1Execute(Sender: TObject);
var sTasto:String;
begin
 sTasto:='sdas';
end;
procedure TFrame2.Action2Execute(Sender: TObject);
begin
  SpeedButton2.Enabled:=False;
end;
procedure TFrame2.Action3Execute(Sender: TObject);
begin
 SpeedButton2.Enabled:=True;
 SpeedButton1.Visible:=False;
 SpeedButton4.Enabled:=True;
end;
procedure TFrame2.Action5Execute(Sender: TObject);
begin
 Free;
end;

 a Frame2 , in modo da avere ToolBar indipendenti [...]
Io non ho onestamente capito una "cippa" di quello che deve succedere in 
questa applicazione. :-D
Potresti spiegare, tralasciando riferimenti specifici all'architettura 
che hai già realizzato, qual è l'organizzazione che dovrebbe avere il 
programma in termini di effetto visivo?
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)
     Non hai la possibilità di scaricare Turbo Delphi Explorer?
     Te lo spedisco io!! [
http://www.marco.breveglieri.name/?p=48
]

> programma in termini di effetto visivo?
diciamo che ho un form principale, che chiama altri form child , in
modo SDI
l'effetto visivo e' avere una toolbar su ogni form child;
lo scopo , intercettare la pressione di un pulsante avventa nel form child.
solo che invece di "disegnare" creare a mano, su ogni form child la toolbar
gliela faccio caricare da un frame, e qui nascono i problemi.
speso che sia piu' comprensibile.
grazie Maurizio 

 lo scopo , intercettare la pressione di un pulsante avventa nel form child.
In tal caso, perché usare un Frame per la ToolBar?
Se il controllo ToolBar è presente su ciascun "Form incorporato", è 
sufficiente inserire la barra degli strumenti nella classe base di tale 
Form, ereditandola così in tutti i discendenti, nei quali però può 
essere modificata in termini di pulsanti disponibili e altre 
caratteristiche.


> modificata in termini di pulsanti disponibili e altre caratteristiche.
si in effetti cosi' e' piu' semplice, ho creato un FrameBase con ToolBar e
ActionList, quando serve un nuovo form eredito dal FrameBase e sia
con eredita visuale che manuale funziona, anche se vi e' un effetto 
"collaterale"
dato che la Toolbar e' solidale al Form quando scorre , la ToolBar lo 
segue..
ciao Maurizio

 segue..
Mmm... "sia con eredita visuale che manuale"... manuale? :-|
ToolBar "solidale"?
Non riesco a comprendere la tua terminologia. :-D
La ToolBar dovrebbe essere ancorata al Frame, che a sua volta sarà 
ancorato al Form, magari allineando entrambi...
Se ci sono effetti collaterali, dovresti dirmi bene quali sono e cosa 
vorresti ottenere, altrimenti non so come aiutarti. :-|


> vorresti ottenere, altrimenti non so come aiutarti. :-|
vorrei ottenere questo:
mettiano di avere un Form con un Panel ed uno ScrollBox
creare 2 Frame (diciamo FrameToolBar e Frame2)
- FrameToolBar ancorato al Panel (FrameToolBar.Parent:=Panel1)
- Frame2 di lavoro con i vari controlli ancorato allo ScrollBox
questo , anche ridimensionando il Form , manterebbe FrameToolBar sempre
visibile , essendo interno ad un Panel.
l'intoppo e' che quando da un'evento del FrameToolBar chiamo Free ,
distrugge giustamente il FrameToolBar, ma non puo' risalire fino a
Frame2 , per poter distruggere anche questo.
Form1 --> crea FrameToolBar (lo inserisce su Panel)
           --> crea Frame2 (lo inserisce su ScrollBox)
evento su pulsante FrameToolBar --> esegue Free;
- distrugge FrameToolBar
ciao Maurizio

 - Frame2 di lavoro con i vari controlli ancorato allo ScrollBox
C'è un motivo particolare per cui la ToolBar non debba far parte del 
Frame (evitando così di averne due separati)?


>
nessuno in particolare , se non di evitare che un utente distratto 
ridimensioni
il form e mi chiami dicendo "e' sparita la barra pulsanti".
anche se impostando l'Algn del Frame su alClient, si eviterebbe , ma in 
questo
caso alcuni controlli potrebbero non essere visibili.
ciao Maurizio