Newsgroup: it.comp.lang.delphi
Titolo: D2006 Frame Chiusura e Primo Piano

uso i Frame derivandoli da TCustomFrame
type
  Tfrm_FrameCategorie = class(TFrameCustom)
...
 strict private
    { Private declarations }
    FCurrentPage: TFrameCustom;
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  end;
var
  frm_FrameCategorie: Tfrm_FrameCategorie;
e succesivamente vengono
caricati con LoadPage(<NomeFrame>) dal form base;
per avere un comportamento analogo ai form MDI , si deve poter
- Chiudere un Frame (metodo Destroy)
- Portare in superficie un Frame gia' Creato, non trovo strade
ho provato FCurrentPage.Show;
ma visualizza il Frame attivo in quel momento,
ed in effetti se verifico FCurrentPage.Name risulta il Frame attivo;
il metodo BringToFront non e' applicabile;
che strada seguire, per arrivare a gestire i frame come Form MDI ?
Maurizio
procedure Tfrm_Base.LoadPage(APageClass: TPageFrameClass);
begin
  // Verifica che il riferimento alla "metaclasse" sia valido
  if APageClass = nil then
    Exit;
  // Verifica che la pagina richiesta sia differente da quella attuale
  if FCurrentPage <> nil then
    if FCurrentPage.ClassType = APageClass then
      Exit;
  // Distrugge l'istanza della pagina esistente
  if FCurrentPage <> nil then
    FreeAndNil(FCurrentPage);
  // Crea un'istanza della pagina richiesta
  FCurrentPage := APageClass.Create(Self);
  try
    // Dispone la pagina all'interno del pannello contenitore
    FCurrentPage.Parent := ScrollBox1;
    // Forza la pagina ad occupare lo spazio disponibile
    FCurrentPage.Align := alClient;
    // Visualizza il titolo della pagina nell'apposito pannello
    NomeModulo:=FCurrentPage.Title;
    frm_Base.Caption:=NomeModulo;
    //TitlePanel.Caption := FCurrentPage.Title;
    // Visualizza la descrizione della pagina nell'apposito pannello
    Descrizione:=FCurrentPage.Description;
    StatusBar1.Panels[2].Text:=Descrizione;
  except
    // Distrugge la pagina in caso di errore imprevisto
    FreeAndNil(FCurrentPage);
    // Risolleva l'eccezione per consentire al gestore predefinito
    // di visualizzare il "classico" messaggio
    raise;
  end;
end;

 - Portare in superficie un Frame gia' Creato, non trovo strade
La tua implementazione mi sembra famigliare... ;-)
Scherzi a parte, credo che sia adatta nello specifico all'uso di un 
singolo Frame, così come avviene in Outlook, per esempio.
Per implementare qualcosa come un "multipagina", dovresti ricorrere ad 
una soluzione più complessa.
Ad esempio, potresti avere una lista di Frame creati, e non un unico 
Frame, magari ospitati all'interno di un *PageControl* oppure nascosti e 
mostrati solamente quando, attraverso un'apposita voce di menu, si 
sceglie uno di essi.
Non ho ben chiaro qual è la tua esigenza in termini di "effetto finale 
ottenuto". Potresti magari spiegare in modo più esteso, senza 
concentrarti da subito sull'implementazione per vedere se è possibile, 
prima, pensare a come organizzare l'interfaccia utente e passare 
successivamente, quando il procedimento è chiaro, alla loro visualizzazione.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

> visualizzazione.
come effetto, va bene far visualizzare un Frame per volta , e dopo creati
direi che si possono gestire con la proprieta' *Visible* del Frame.
la tua risposta mi ha fatto capire che avevo preso una via sbagliata, per un
uso con piu' Frame, ora provo a vedere se l'idea funziona..
ciao Maurizio