Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    39

    [C++[Borland]]Form dinamico che crea i bottoni

    come avete capito dal tipolo, sto cercando di creare un form dinamico che crea i bottoni al volo. Il programma prende dei dati da un database e crea un certo numero di pulsanti...ma sono ancora fermo alla creazione dei bottoni...
    ho creato una classe che contiene (per ora) solo l'oggetto bottone (in futuro dovrò ampliarla).

    class Button {
    public :
    TButton *B;
    }

    e la chiamata a questa classe la faccio, banalmente, all'attivazione del form.

    void __fastcall TForm1::FormActivate(TObject *Sender)
    {
    Button *bottone = new Button;
    bottone->B=new TButton (this);
    bottone->B->SetBounds(1,2,50,90);
    bottone->B->Caption="1";
    }

    non mi lancia eccezioni, ma non succede niente!

    potete aiutarmi? grazie, ciao.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Devi assegnare la proprietà Parent all'oggetto TButton impostando il riferimento al controllo visuale che conterrà il pulsante.

    Osservando il codice, mi chiedo a cosa possa servire la classe Button che hai creato... :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    39
    Originariamente inviato da alka
    Osservando il codice, mi chiedo a cosa possa servire la classe Button che hai creato... :master:
    in effetti quello non fa niente però la vera classe ha anche altri medodi e proprietà.

    grazie per il suggerimento, il "parent" mi sarà di sicuro utile.

    cmq con InserControl sono riuscito ad inserire, in runtime, i bottoni come volevo (un array di 10 bottoni di tipo TButton) però non ho idea di come gestirli, ad esempio all'avvio creo:

    TButtton *b[100] ....

    pero poi non posso scrivere

    void __fastcall B[1]Click(TObject *Sender);

    come si fa se ho i bottoni già presenti.

    è possibile gestire i bottoni "dinamici" come quelli normali? o sto solo sparando un mucchio di c*z*a*e?

    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    39
    Originariamente inviato da pocho
    TButtton *b[100] ....
    grazie
    nel programma la 'b' è maiuscola come quella della di void __fastcall B[1]Cl...

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Crei un metodo compatibile (per numero e tipo di parametri) all'evento e lo assegni alla proprietà OnClick dei pulsanti.

    La discriminazione del pulsante su cui è stato fatto il clic la ottieni ispezionando il parametro Sender dell'evento stesso.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    39
    grazie mille! penso di aver capito.

    ora provo e ti so dire come è andata!

    grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    39
    di nuovo scusami se approffitto della tua disponibilità. Non mi piace farmi dare tutto già pronto, ma penso di non aver capito bene come credevo. Il punto è che ho capito quello che dovrei fare ma non riesco a concepire un modo per farlo.

    se ho capito bene dovrei creare un metodo clicco in modo da poter lanciare
    void __fastcall TForm1::cliccoClick(ArrayBottone)

    in modo che clicco passi l'evento onClick del bottone

    è giusto oppure ho detto una castronata?

    ancora grazie



  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da pocho
    se ho capito bene dovrei creare un metodo clicco in modo da poter lanciare [...]
    in modo che clicco passi l'evento onClick del bottone
    è giusto oppure ho detto una castronata?
    E' giusto. Dopo aver creato il metodo, devi assegnarlo alla proprietà OnClick di ciascun pulsante creato tramite codice.

    Ciao!
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.