+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: [BorlandC] Cicli e oggetti

  1. #1
    TEX67 non è in linea Scolaretto
    Post
    78

    [BorlandC] Cicli e oggetti

    Buongiorno a tutti , volevo porvi questa domanda , se nel mio form ci sono 10 bottoni che si chiamano Button 1 , Button2 .... Button10 e io devo nosconderli o visualizzarli ( in poche parole devo modificare dei paramentri a tutti e 10 ) come posso con un ciclo for ad accedere al bottone , se io scrivo:
    for(i=1;1<10;i++)
    Button[i]->Visible=false;

    il compilatore mi genera un errore , ci sono delle scappatoie o sono costretto a scrivere

    Button1->Visible=false;
    Button2->Visible=false;
    Button3->Visible=false;
    ...........
    .....

    Grazie a tutti e buona giornata.
    Ciao Tex.

  2. #2
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    Se non puoi fare altrimenti (ovvero creare direttamente una matrice di controlli) basta che allochi un array di puntatori a bottoni e lo riempi preventivamente una volta sola (button[0]=&Button0;button[1]=&Button1... ecc) poi potrai usare la prima scrittura.

    Lo spreco di memoria &#232; minimo (4 byte x bottone) e probabilmente ci guadagni parecchio in leggibilit&#224;. Per evitare l'inizializzazione esplicita puoi fare una funzioncina che aggiunge (e/o rimuove) un bottone dall'array... immagina una add(Button* b) che nel corpo esegue una button[last++]=b;

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  3. #3
    TEX67 non è in linea Scolaretto
    Post
    78
    Non funziona con l'indirizzamento Button[0]=&Button0;
    errore generato :
    Cannot convert 'TCheckBox**' to TCheckBox*'
    Ciao e grazie.

  4. #4
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    Converrebbe ripassare un po'le basi...
    Evidentemente (la risposta del compilatore &#232; piuttosto chiara) Button0 &#232; gi&#224; un puntatore, per cui... (lascio a te la risposta, non &#232; molto difficile).

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  5. #5
    TEX67 non è in linea Scolaretto
    Post
    78
    OK che button fosse un puntatore lo sapevo , dato che sono alle prime armi con la programmazione ad oggetti non riesco a capire come agganciare il mio puntatore con una funzione comune a tutti gli altri oggetti dello stesso tipo , vedrò di ripassare un po di c , se nel frattempo mi dai una dritta ti ringrazio.
    Ciao

  6. #6
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    Semplicemente, visto che hai creato un array di puntatore a bottone e che i vari Button0, Button1, ecc sono gi&#224; puntatori baster&#224; evitare la reference, ed assegnare: button[0]=Button0; button[1]=Button1;...

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  7. #7
    TEX67 non è in linea Scolaretto
    Post
    78
    Ok tutto funziona , visto che siamo in argomento puntatori toglimi un'altra dubbio,
    se nel mio form ci sono 4 Button e nelle dichiarazione della mia classe sono dichiarati consecutivamente anche il compilatore gli alloca consecutivamente ???, se nel mio programma dichiaro un puntatore di tipo TButton e lo riferisco al primo Button come faccio ad incrementare il puntatore in modo che punti al secondo Button , ti scrivo il codice :

    dichiarazione di classe .H
    TButton *Button1;
    TButton *Button2;
    TButton *Button3;
    TButton *Button4;

    Programma
    TButton *MioButton;
    MioButton=Button1;
    MioButton->Text->Size=10;

    Fin qui tutto OK , se voglio puntare al seconda bottone senza dichiarare MioButton=Button2; come faccio ad incrementare il puntatore.

    Forse sto dicendo delle castronirie ma alcuni dubbi mi sorgono perche arrivo dal C di microcontrollori di bassa fascia.

    Ciao e grazie.

  8. #8
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    In teoria il compilatore dovrebbe allocare le variabili consecutivamente, con la dichiarazione, ma la cosa non &#232; assicurata (lo standard non dice niente in proposito). Per cui &#232; molto rischioso (si tratta di codice "sporco") scrivere del codice che si basi su questo assunto.

    L'unico sistema di accedere usando puntatori &#232; usare l'array di cui discutevamo pi&#249; sopra... dato un array di TButton* di nome, diciamo, buttons puoi fare qualcosa di questo genere:

    TButton** temp=buttons; //temp punta al primo elemento
    (*temp)->Text->Size=10; //Usa il bottone in questione
    temp++; //punta al secondo elemento
    //... e cos&#236; via

    NB: Ovviamente in questo caso sta a te evitare di sforare dai limiti dell'array (ovvero determinare quando fermarti).

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  9. #9
    TEX67 non è in linea Scolaretto
    Post
    78
    Il codice che mi hai passato con una piccola modifica funzione , ti scrivo il mio codice.

    TButton **MioP;
    MioP=&Button3;
    (*MioP)->Font->Size=12;
    MioP++;
    (*MioP)->Font->Size=12;
    MioP++;
    (*MioP)->Font->Size=12;

    Senza la & mi da un errore in fase di esecuzione , già che ci siamo ti faccio un'altra domanda , come si può dichiarare nella sezzione published un array di Button , normalmente quando metto un controllo nel form il compilatore mi genera il seguente codice
    TButton *Button1;
    TButton *Button2;
    TButton *Button3;

    Se io volessi raggruppare i 3 bottoni in un array ( Button[3]) e rederli visibili subito e non durante l'esecuzione del programma come posso fare , appena scrivo TButton *Button[3] nella sezzione published il compilatore si arrabbia , conosci dei trucchi .

    Grazie per la tua collaborazione.

  10. #10
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    Evidentemente non hai capito bene quello che ho scritto... come ti dicevo l'allocazione delle variabili fatta dal compilatore non &#232; detto che sia lineare e che quindi tu possa usare il puntatore come descrivi. Poco importa se "ti funziona", si tratta di codice molto pericoloso.

    Quello che ti ho consigliato, invece, &#232; di utilizzare un array (quella si che &#232; memoria lineare) di TButton* e poi usare un puntatore per scorrerlo.

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Discussioni simili

  1. Oggetti e ridimensionamenti
    Da BASIC6 nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 25-01-2018, 15:59
  2. [ASP.Net]Web service e oggetti restituiti
    Da luciano.net nel forum ASP 3.0, ASP .Net
    Risposte: 0
    Ultimo Post: 15-04-2006, 10:14
  3. Problema con oggetti condivisi
    Da userID nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 17-10-2005, 22:29

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi