PDA

Visualizza la versione completa : [C++] Form multipagina con Frame in C++Builder


fiffio
03-05-2007, 18:19
Salve, sarei interessato a creare un form multipagina in Borland C++Builder 2006 nello stile simile ad Outlook. Ho preso spunto dall'esempio in Delphi di Alka presente qui (http://blog.marco.breveglieri.name/index.php?page_id=22), ma non mi sta riuscendo in C++Builder.

Ho creato un progetto di prova con un form principale e 3 frame. Il form principale a sinistra ha tre bottoni e a destra un Panel all'interno del quale vorrei poter visualizzare il frame corrispondente al bottone cliccato.

Ogni bottone richiama la funzione:

void caricaFrame(int)
con int variabile da 1 a 3 e corrispondente al frame da caricare...

Qualche idea su come strutturare la funzione?

alka
05-05-2007, 10:24
Hai tentato almeno di codificarne una parte? Magari, con uno "startup", è più facile successivamente correggerlo.

fiffio
07-05-2007, 16:04
Il progetto include 4 Unit:
UMain, unit principale
UFrameBase, frame vuoto
UFrame1, Frame1 da visualizzare
UFrame2, Frame2 da visualizzare

Il form principale contiene 2 bottoni e un Panel, all'interno del quale ho posto un oggetto Frames di nome CambiaFrame, collegato al frame vuoto FrameBase.

Cliccando sui due bottoni si devono visualizzare i due frame Frame1 e Frame2



void __fastcall TForm1::Button1Click(TObject *Sender)
{
TFrame1 *frme = new TFrame1(CambiaFrame);
CambiaFrame->FreeOnRelease();

frme->Parent=Panel1;
frme->Align=alClient;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TFrame2 *frme = new TFrame2(CambiaFrame);
CambiaFrame->FreeOnRelease();

frme->Parent=Panel1;
frme->Align=alClient;
}


Eseguendo il compilato visualizzo correttamente i frame, ma posso cliccare i bottoni una sola volta perchè mi dice che il Frame1 (o il Frame2) esiste già. Come si puo' controllare se un frame è stato gia aperto e come chiuderlo?

fiffio
08-05-2007, 00:34
PS: In seguito passerò tutto alla su citata funzione caricaFrame, in modo tale da evitare di scrivere più volte la stessa cosa...

alka
10-05-2007, 11:53
A cosa servirebbe la FreeOnRelease che hai scritto nel codice?

Accertati di avere la padronanza degli strumenti prima di iniziare ad invocare metodi e ad assegnare valori alle proprietà. :)

Loading