Autore Topic: surclass  (Letto 3084 volte)

g.paolo

  • Visitatore
surclass
« il: 26 Febbraio 2008, 08:27:16 »
Ricordo che in ambienti tipo VB e VFoxPro si poteva effettuare un surclassamento di un oggetto grafico, come un form o un bottone, per attriburgli caratteristiche personalizzate che poi si riflettevano automaticamente su tutti gli oggetti figli.
E' possibile fare questo in gambas?

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: surclass
« Risposta #1 il: 26 Febbraio 2008, 11:07:04 »
Ciao.

Credo che non ci sia esattamente quello che dici tu. Però puoi scrivere una funzione
che faccia quello che dici tu, usando Object.Type(). Allego un piccolo esempio. Il codice
è commentato riga per riga. All'apertura disabilita tutti i bottoni nella form e cambia il
colore di backgroud alla label. E' solo per farti vedere come facilmente puoi trattare
tutti i controlli figli di una form.

Saluti.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: surclass
« Risposta #2 il: 26 Febbraio 2008, 16:37:39 »
Posso dirti con sicurezza, dato che me lo ha confermato Benoit, che ogni oggetto può "surclassato" in un'altro, portandosi appresso le caratteristiche. Unico limite, a quanto pare, è che il livello di subclassing può arrivare fino ad 8(otto).

Da ricordare che non è però possibile derivare un classe da più classi padri, come è invece possibile in C++ o Java.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: surclass
« Risposta #3 il: 26 Febbraio 2008, 16:44:02 »
Ciao  md9327. Siccome non ho mai  usato VB, per cortesia puoi postare
un piccolo esempio fatto con Gambas, così imparo qualcosa di nuovo? Grazie :-)

g.paolo

  • Visitatore
Re: surclass
« Risposta #4 il: 26 Febbraio 2008, 16:54:51 »
Mi sembrava infatti che non ci fosse l'opzione. Grazie molte per l'esempio, che ora mi metterò a studiare per bene. Faccio molta fatica perchè sono agli inizi, ma vedo che l'ambiente di gambas mi piace molto e non è ostico come certi che conosco!
Il problema è come sempre la documentazione, che devo tradurre e studiare, e purtroppo non è sempre immediato il reperimento delle info necessarie.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: surclass
« Risposta #5 il: 28 Febbraio 2008, 15:28:26 »
Per giulio,
se puoi scaricati il mio programma da sf.net ( http://sourceforge.net/projects/pgdesigner/ ), su cui ho fatto molti esperimenti con parecchie caratteristiche e librerie di Gambas2.
Il programma è un disegnatore di database per postgres, e per molte classi ho usato la tecnica si subclassing.

Descrivere come funziona qui è un pò problematico, ma:

- crei una classe "classe1":

- crei una classe "classe2";

- per rendere "classe2" derivata da "classe1", devi inserire questo comando nel file classe2.class, prima di ogni altra istruzione:

INHERITS classe1

- se hai creato proprietà o metodi public in "classe1" dovresti poter vederli all'interno di "classe2".

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: surclass
« Risposta #6 il: 28 Febbraio 2008, 16:42:46 »
Oh, tutto bene allora. C'è stato un malinteso sui termini. Non ho la minima conoscenza
di VB e quindi non capivo Subclassing o surclassing come da titolo del post. In pratica è quello che in Gambas viene chiamato Inheritance, o ereditarietà. Va bene. Grazie per il chiarimento. Allego un piccolo esempio di Inheritance postato da Fabien Bodard, commentato riga per riga. Quindi per i posteri :-) :

VB SubClassing = Gambas Inheritance

Dal doc:

The Gambas inheritance mechanism is entirely dynamic, and allows you to:

    * Create a more specialized version of an already existing class.
    * Reimplement a class and extend it.
    * Override some methods or properties of a class.

Any classes can be inherited, reimplemented or overridden, even the native ones written in C/C++.

Grazie ancora.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.137
  • Tonno verde
    • Mostra profilo
Re:surclass
« Risposta #7 il: 18 Giugno 2016, 20:15:39 »
Ho scaricato l'esempio IneritDemo e l'ho convertito dalla versione 2 alla 3 dando l'ok al wizard di Gambas.
Provato funziona molto bene tant'è che ho provato ad aggiungere dalla IDE due controlli che sono stati ereditati correttamente vedi immagine allegata.
Se però tento di rifare il progetto ex novo con la rev. 7799 appena clicco su button1 ottengo questo errore:
Unknown symbol 'Button1' in class 'Container' in CIneritedForm

Qualche idea del perchè?
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.137
  • Tonno verde
    • Mostra profilo
Re:surclass
« Risposta #8 il: 22 Giugno 2016, 11:01:26 »
Qualcuno ha provato?
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro