Urka che emozione
. Mi sento come alla vigilia di un'esame... non so se rendo l'idea
Iniziamo con la prima domanda: che cos'e' un componente...
Un componente non e' altro che una classe creata, con determinate caratteristiche, per poter essere integrata con l'ide di gambas.
Questa classe puo' essere un oggetto grafico (vedi la TableView di gambas, che e' una GridView elaborata per accettare l'editazione dell'operatore) oppure una classe come Timer, che ha soltanto un'iconcina per essere visualizzata sul form, ma a 'lato pratico' e' tutto codice
.
Innanzi tutto per creare un componente e' necessario:
Avviare Gambas
Selezionare Nuovo Progetto
Spuntare Creazione di un componente
Scegliere il path del progetto
Nome progetto
Su quest'ultimo (almeno penso io
ma ho visto che non e' necessario) la prassi e' chiamare il progetto in questo modo:
gb.nomeprogetto
In questo modo si identifica il progetto come un componente
Il progetto deve avere queste caratteristiche:
Necessarie:
Avere la necessità di fare un componente
Avere almeno una classe 'Esportabile' nel progetto
Non necessarie
Una serie di Costanti Pubbliche per 'settare' il componente
Un'icona per il componente
Avere la necessità di creare un componenteQuesto l'ho messa come prima necessità perche' credo sia fondamentale.
La mia idea e' questa: se sto creando un piccolo progetto avente una classe creata ad ok per esso, non vale la pena di progettare un componente.
Se invece sto creando un progetto in cui vi siano componenti 'riciclabili' in altri progetti, allora la musica cambia...
Lo sapete tutti quanto sia piu' veloce creare un form avendo a disposizione oggetti grafici pronti all'uso e facilmente settabili
Avere almeno una classe 'Esportabile' nel progettoAll'atto della creazione di una nuova classe, bisogna spuntare la casella 'Esportato'.
In questo modo si rende 'visibile' all'esterno del progetto (vale anche per progetti 'non componenti') gli eventi, le proprieta' pubbliche e i metodi pubblici.
In caso ci si dimentichi di quest'ultima operazione, basta aggiungere una linea di codice scrivendo semplicemente
Export all'inizio della classe.
Una serie di Costanti Pubbliche per 'settare' il componenteLe Costanti Pubbliche sono rese nascoste con il carattere _ antecedente il nome della Costante e serve all'ide di gambas per settare diverse caratteristiche del componente
Public Const _Properties As String
Questa costante rende visibile le proprieta', separate da virgola, inserite all'interno di una stringa.
Es.
Public Const _Properties As String = "*,Action,AutoResize,Text,Picture,Arrow=True,Border=True,Menu"
L'* rende visibile tutte le proprieta' ereditate dalla classe genitore (se e' stato specificato all'inizio della classe stessa il codice INHERITS <Classe>)
Le restanti sono proprieta' create all'interno della classe
Per impostare ad una proprieta' un valore di default <proprietà>=<valore>
Per impostare un tipo di proprieta' che necessita di valori fissi (tipo Oggetto.Alignement) <proprietà>{Align.Left,Right,Center}=Center
Per impostare un range <proprietà>{Range:0;100}=1
Se la proprietà ha come valore un colore <proprietà>{Color} cosi' alla scelta del valore di questa proprietà apparirà il Form per la scelta dei colori.
Public Const _DefaultEvent As String
Setta l'evento di Default. Quando viene premuto il doppio click del mouse sopra l'oggetto nel form in costruzione, nella classe corrispondente viene creato il codice dell'evento scelto
Public Const _Group As String
Questa costante serve a posizionare il componente nella ToolBox di Gambas.
Es.
Public Const _Group As String = "Special"
Inserisce il nostro componente nella Sezione Special accanto ai componenti Timer, Print, ...
Se viene specificata una sezione che non esiste di default, essa viene creata (vedi mio componente gb.gridbox usa la sezione "Gambas-it.org"
)
Public Const _DrawWith As String
Questa costante serve a determinare come viene disegnato il componente sul form di progettazione (e qui ci sarebbe da riempire un altro post
vedremo in seguito)
Public Const _DefaultSize As String
Setta le dimensioni di default all'atto dell'inserimento nell form di progettazione
Public Const _Similar As String
Questo non l'ho ancora usato
Public Const _Arrangement As String
Solo per Componenti di tipo 'Contenitore' setta il tipo di Arrangiamento dei sui oggetti figli in esso contenuti
Non ho idea se siano tutte, ma la maggior parte le ho gia usate
Per adesso mi fermo qui
Riprendo fiato e ci sentiamo questa sera... Ciau