Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    32

    [C++Builder]Form multipagina con frame

    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, 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:
    codice:
    void caricaFrame(int)
    con int variabile da 1 a 3 e corrispondente al frame da caricare...

    Qualche idea su come strutturare la funzione?
    A questo mondo ci sono 10 persone:
    quelli che capiscono il codice binario e quelli che non lo capiscono.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Hai tentato almeno di codificarne una parte? Magari, con uno "startup", è più facile successivamente correggerlo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    32
    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

    codice:
    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?
    A questo mondo ci sono 10 persone:
    quelli che capiscono il codice binario e quelli che non lo capiscono.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    32
    PS: In seguito passerò tutto alla su citata funzione caricaFrame, in modo tale da evitare di scrivere più volte la stessa cosa...
    A questo mondo ci sono 10 persone:
    quelli che capiscono il codice binario e quelli che non lo capiscono.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    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à.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.