Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gianluigi - 31 Marzo 2016, 23:21:20

Titolo: Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 31 Marzo 2016, 23:21:20
Non so se faccio bene a dividere la discussione (http://www.gambas-it.org/smf/index.php?topic=1373.msg15309#msg15309) che incombe appena sopra, ma essendo passato così tanto tempo dall'ultimo post credo di si.
Il problema è che pur essendo più che interessantissima di quella discussione è venuta meno l'attualità, nel senso che le cose dette e descritte non funzionano più completamente.
Da quella proficua discussione sono nati Guida, Tutorial  e componenti, che andrebbero rivisti.
Spero tanto che Milio il quale ogni tanto viene a visitarci guardi qui e ci dia una mano.
Ho provato a creare il Frame del suo Tutorial ma come detto poi non sono riuscito a farlo funzionare, il procedimento iniziale è cambiato tanto che se volete provare anche voi dovreste dare un'occhiata ai passaggi per creare il componente InvBox (http://www.gambas-it.org/wiki/index.php?title=InvBox) un semplicissimo componente da me ideato come esempio per il libro che stiamo scrivendo.
Comunque i cambiamenti rispetto a prima sono solo quelli iniziali e nell'insieme la Lezione di Milio è ancora attuale.
Allego a questo post il risultato della manipolazione di quel Tutorial che funziona ma solo in parte e vorrei sapere se qualcuno di voi è invece capace di ricrearlo come lo aveva ideato Milio.
Al frame allegato non funziona a dovere la proprietà Arrangement come potete constatare avviando l'applicazione.
 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Golia - 01 Aprile 2016, 11:25:16
Ciao
Non sono un'esperto come Milio ;), ma qualcosa insieme a lui avevo fatto.
Adesso non ho capito bene cosa vuoi fare, ho modificato il tuo progetto... in realtà ho solo aggiunto
Citazione
Public Const _Group As String = "Form"
Vedi casomai proviamo andare avanti
Ciao
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 01 Aprile 2016, 15:48:22
Scusa Golia ma non capisco, non c'è differenza funzionano allo stesso modo.  :-\
Nel senso che purtroppo Arrangement non va, non è come nel frame originale, come potevi vedere dal componente da me postato.
Vedi immagini allegate

 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 01 Aprile 2016, 16:49:30
...
Vedi casomai proviamo andare avanti
Ciao

Ciao Golia,
siccome quanto postato prima potrebbe apparire una critica, cosa da me non voluta assolutissimamente, ti chiedo scusa per la forma e ... aiuto ben accetto per la sostanza  :)

Quello che nel post iniziale intendevo era che non essendo io riuscito a riprodurre il Frame spiegato nel Tutorial di Milio chiedo a te che hai collaborato se per cortesia ci dici se è possibile riprodurlo e come.
Quello da me postato era solo un modo alternativo (senza l'uso della form per disegnarci direttamente e senza l'uso dell'osservatore) peraltro non completamente funzionante (vedi sopra).
Ammesso e non concesso che quello di Milio funzionasse perfettamente con Arrangement.
Alla fin fine vorrei vedere se è possibile aggiornare tutto quanto riguarda i componenti.
Ancora ciao e grazie
 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Golia - 01 Aprile 2016, 17:04:38
Ciao,   :) non preoccuparti non avevo inteso nessuna critica.
Diciamo che mi sono messo in fila per capirci un po di più anche io ;D
comunque adesso ho capito il problema.  Se non arriva milio prima, domani provo a capire qualcosa.

In questo periodo sono proprio alle prese con un componente,  una sottomarca di gidbox ;D
non che gidbox non faccia il suo dovere,  anzi. Solo il piacere di programmare :)

Comunque se metti in cantiere un componente, nel mio piccolo mi piacerebbe aiutarti
ciao
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 01 Aprile 2016, 17:38:54
 :D
Purtroppo idee su nuovi componenti non ne ho proprio, l'idea era solo quella di rendere tutto ciò che riguarda i componenti presenti nella wiki funzionante.
Non avendo però intenzione per ora di chiedere il permesso di scrivere sulla wiki non brucia assolutissimamente nulla.
È che avendoli studiati per scriverne sul libro mi hanno intrigato...
Non mi è ancora chiara l'implementazione del componente nel progetto quando questi fa uso di finestra e o più classi.
Ma come dice Sotema non si smette mai di imparare.
 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Golia - 01 Aprile 2016, 19:41:02
Non so se è sufficente ho fatto in fretta, prova così
 

Ps guardo domani ho sbagliato ;D
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Golia - 02 Aprile 2016, 13:48:03
credo di aver trovato l'inghippo.
in pratica Arrangement  funziona, è solo che lo spazio "container" si sovrappone al disegno linee e al testo.
Abbassando il container e spostandolo più in basso mi sembra vada bene.

Nella sub hPanel_Arrange() aggiungi sotto:

  Me._Container.Y = Me._Container.Y + $Font.TextHeight("")
  Me._Container.Height = Me._Container.Height - $Font.TextHeight("")

Aspettiamo se Milio approva  ;D
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 02 Aprile 2016, 17:08:14
Bravo Golia, funziona bene, ma conviene farlo lavorare solo quando serve e cioè:

Codice: [Seleziona]
  If Me.Arrangement <> 0 Then
    Me._Container.Y = Me._Container.Y + $Font.TextHeight("")
    Me._Container.Height = Me._Container.Height - $Font.TextHeight("")
  Endif
Ragionando (si fa per dire perché oggi mi riesce particolarmente difficile) su Arrangement ho notato che la proprietà non serve l'ho eliminata completamente.
Inoltre non riesco a capire perché nel costruttore ho scritto questo
Codice: [Seleziona]
$hPanel.Name = Me.Name
Misteri della mente.
Ho aggiunto, sempre nel costruttore, per farlo simile al frame originale:

Codice: [Seleziona]
$hPanel.Padding = 2
Senza però gestirlo in somma alla proprietà come pare faccia il frame originale.

Cosa ci si potrebbe mettere o cambiare per implementare anche l'osservatore?
Sempre in attesa del capo  ;D
 :ciao:

PS: Nella mia improbabile funzione di moderatore mi vedo costretto a rammentarti di postare il codice fra i cancelletti   :P
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Golia - 02 Aprile 2016, 19:27:26
Citazione
PS: Nella mia improbabile funzione di moderatore mi vedo costretto a rammentarti di postare il codice fra i cancelletti   :P
:ok:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 04 Aprile 2016, 15:42:07
Ciao Gianluigi, ciao Golia...

La guida e' stata scritta quando ancora usavo gambas2.

Ho fatto alcune modifiche aggiungendo altri oggetti, vedete se cosi' funziona.
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 04 Aprile 2016, 15:58:32
Intanto stragrazie per la risposta  :D

Ti devo dire che se non sbaglio hai operato non sull'ultima credo.

Quello che hai postato si posiziona solo su verticale anche se metti la proprietà su orizzontale o none  :-\

Non era quello che intendevamo, noi vorremmo un comportamento uguale a quello del frame originale con in più il bordo colorato, oppure non era quello il tuo intendimento quando hai creato la lezione?

Ciao e scusa il rompimento.

 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 04 Aprile 2016, 16:30:46
Mi sono dimenticato di precisare che io gradirei sapere se è sempre possibile creare componenti aiutandoci con la IDE come hai fatto nella lezione.
Perché io non ci sono riuscito.  :'(

 :-*  :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 04 Aprile 2016, 17:21:31
Quello che hai postato si posiziona solo su verticale anche se metti la proprietà su orizzontale o none  :-\

Ma dici la proprietà Arrange del FrameDraw? A me non risulta.

Mi sono dimenticato di precisare che io gradirei sapere se è sempre possibile creare componenti aiutandoci con la IDE come hai fatto nella lezione.
Perché io non ci sono riuscito.  :'(

 :-*  :ciao:

Non ho capito cosa tu intenda. Vuoi dire creare un componente utilizzando i sorgenti per altri progetti? oppure creare un pacchetto di installazione del componente?

Per la prima mi sembra ovvio che si, l'esempio stesso ne e' conferma.
Per quanto riguarda il creare un pacchetto di installazione, non ne ho piu' avuto occasione: primo perche' da quando son passato da G2 a G3 mi sono tirato una mazzata sui cocomeri, secondo perche' ormai mi sono focalizzato principalmente su un progetto solo e quindi ho creato di volta in volta i componenti che mi servivano nel progetto stesso.

Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 04 Aprile 2016, 17:49:10
Scusa Milio,
mi sono spiegato male.
Si a me Arrangement come vedi dall'immagine non funziona altro che su verticale.
Circa la lezione intendevo dire che non sono riuscito a ricreare il componente col sistema di usare una finestra (FFrameBox) e disegnare gli oggetti li sopra. Non ho capito come si fa.
Sono troppe le cose che sugli oggetti non ho ancora capito tanto è vero che InvBox non funziona come credevo e stavo giusto cercando di capire perchè non mi legge il testo e pensa che ho avuto il coraggio di parlarne.  :'(
Accidenti che cane che sono.  :'( :'(
 :ciao:

PS: Come non detto a parte che l'immagine era sbagliata ora funziona e credo di aver capito perchè si riposizionava su verticale dopo che io l'avevo cambiata. Quando si usa un progetto altrui è bene prima ricompilarlo e per tranquillità chiuderlo e riaprirlo.
Ora capisco perché TopFuel a volte mi dice che non sa perché prima un mio progetto non gli funzionava e poi si.
Andrebbe fatto questo anche quando si usano i nostri stessi progetti dopo un aggiornamento importante di Gambas.
Tipo passare dalla 3.5 alla 3.8
Scusami tanto
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 04 Aprile 2016, 21:54:39
Scusa Milio,
mi sono spiegato male.
Si a me Arrangement come vedi dall'immagine non funziona altro che su verticale.
Circa la lezione intendevo dire che non sono riuscito a ricreare il componente col sistema di usare una finestra (FFrameBox) e disegnare gli oggetti li sopra. Non ho capito come si fa.
Sono troppe le cose che sugli oggetti non ho ancora capito tanto è vero che InvBox non funziona come credevo e stavo giusto cercando di capire perchè non mi legge il testo e pensa che ho avuto il coraggio di parlarne.  :'(
Accidenti che cane che sono.  :'( :'(
 :ciao:

PS: Come non detto a parte che l'immagine era sbagliata ora funziona e credo di aver capito perchè si riposizionava su verticale dopo che io l'avevo cambiata. Quando si usa un progetto altrui è bene prima ricompilarlo e per tranquillità chiuderlo e riaprirlo.
Ora capisco perché TopFuel a volte mi dice che non sa perché prima un mio progetto non gli funzionava e poi si.
Andrebbe fatto questo anche quando si usano i nostri stessi progetti dopo un aggiornamento importante di Gambas.
Tipo passare dalla 3.5 alla 3.8
Scusami tanto

Siccome non sono piu' un animale notturno com'ero anni fa (vedi statistiche sul mio profilo  ;D) domani ti rifaccio l'esempio utilizzando un form creato con l'ide di gambas che riproduce lo stesso oggetto FrameDraw.

Per adesso buonanotte a tutti  :sleepy:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 05 Aprile 2016, 00:18:59

Siccome non sono piu' un animale notturno com'ero anni fa (vedi statistiche sul mio profilo  ;D) domani ti rifaccio l'esempio utilizzando un form creato con l'ide di gambas che riproduce lo stesso oggetto FrameDraw.

Per adesso buonanotte a tutti  :sleepy:

In curiosissima attesa di quello nuovo.
Buonanotte... in ritardissimo anche a te
 :sleepy:

PS: Se riesco a dormire magari domani capisco il codice anche di quello che hai già postato  :D
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 05 Aprile 2016, 11:24:57
Eccoci qua come promesso...

Il codice non e' commentato come mia abitudine, quindi se hai domande fammi sapere.

Ciao
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 05 Aprile 2016, 12:15:31
 :D Scaricato  :D

Grazie

 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 05 Aprile 2016, 15:23:51
Ciao Milio,
ti relaziono sui frame:
Il primo quello senza finestra lavora bene sui verticali sia Vertical che Column.
Horizontal funziona correttamente
Row sposta i radiobutton troppo sotto il titolo
None non funziona (vedi immagine)

Il secondo con finestra:
Funziona bene (solo tende ad avvicinare un po verso il titolo ma poco) in 4 su 5.
None non funziona (vedi immagine)

La prova è stata fatta disegnando il frame in una finestra vergine.

Ho importato i componenti in un progetto nuovo col metodo del copia incolla, come descritto in fondo a questa (http://www.gambas-it.org/wiki/index.php?title=InvBox) pagina.

Ho provato su quello con finestra a vedere se riuscivo a fare qualcosa, ma ancora sono troppe le mie lacune per quanto riguarda i contenitori.
Tutte le volte che credo di aver capito, questi mi fregano sempre.  :'(

So che sono un rompiballe che continua a fare domande, se ti stufi di rispondere non mi offendo.
Ma se resisti preferisco  :D
 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 05 Aprile 2016, 17:36:46
La proprietà Arrangement impostata a None disegna gli oggetti come vengono posizionati in fase di costruzione.

Ma adesso mi sorge un dubbio: ma questo componente ti serve per didattica o per inserirlo in un progetto?
Se ti serve per didattica allora non facciamo troppo i precisini  :D, anche le 'sta troppo sotto il titolo' o 'None non funziona a dovere' son cose che si devono affinare nel caso in cui, appunto, non devi includerlo in un progetto.

E comunque a me Arrangement = None funziona...
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 05 Aprile 2016, 17:57:08
La proprietà Arrangement impostata a None disegna gli oggetti come vengono posizionati in fase di costruzione.

Ma adesso mi sorge un dubbio: ma questo componente ti serve per didattica o per inserirlo in un progetto?
Se ti serve per didattica allora non facciamo troppo i precisini  :D, anche le 'sta troppo sotto il titolo' o 'None non funziona a dovere' son cose che si devono affinare nel caso in cui, appunto, non devi includerlo in un progetto.


Si serve solo per didattica, vorrei capire come si sposta la scroll in automatico, quale è l'inghippo che la fa muovere se c'è perché io non l'ho capito. Come potrei intervenire sullo scroll per calibrarlo?
Citazione
E comunque a me Arrangement = None funziona...
:P  :D
 :ciao: :ciao:

PS: Scusa mi sono dimenticato di precisare che anche a me se provato direttamente nel tuo progetto funzionano bene.
E mi sono dimenticato anche di dirti un... grosso grazie per la dimostrazione  :-*  :ok:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 05 Aprile 2016, 22:58:48
Caro Teacher Milio,
io credevo che i componenti di tipo controllo ereditando da UserControl avessero bisogno di implementare solo i metodi, gli eventi e le proprietà non compresi nel controllo di base.
Invece se ho voluto che il mio InvBox prendesse il focus e rispondesse a questo ho dovuto implementarli pur essendo previsti di base.
Ho pure il dubbio di non saperlo fare secondo le regole.
È del tutto evidente che continuo a non comprendere gli oggetti.
Puoi essere così gentile di dare un'occhiata e dirmi se va bene quello che ho combinato?
In particolare:
Come legge il testo dalla TextBox
Come solleva gli eventi
Come implementa i metodi

Allego InvBox-4
 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 06 Aprile 2016, 14:23:46
Carino sto componente, mi sa che te lo rub.... hemm.... ti chedo il permesso di usarlo  ;D

Caro Teacher Milio,
io credevo che i componenti di tipo controllo ereditando da UserControl avessero bisogno di implementare solo i metodi, gli eventi e le proprietà non compresi nel controllo di base.
Invece se ho voluto che il mio InvBox prendesse il focus e rispondesse a questo ho dovuto implementarli pur essendo previsti di base.

La proprietà che fa ereditare al tuo componente gli eventi e metodi di un oggetto in particolare del componente stesso e' Proxy (vai alla guida perche' non tutti i metodi e eventi sono supportati)

Ti ho fatto un paio di modifiche, ma sostanzialmente non cambiano il risultato. Fammi sapere
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 06 Aprile 2016, 17:53:29
Carino sto componente, mi sa che te lo rub.... hemm.... ti chiedo il permesso di usarlo  ;D

;D Rub... prendere in prestito  non capisco... intendi una cosa così? Guarda un po che cosa ho usato. Giuro che non l'ho venduto (vedi allegato)   :-[
Non ti offendere per come l'ho conciato  :-* Chissà quanti errori... ;D

Citazione
La proprietà che fa ereditare al tuo componente gli eventi e metodi di un oggetto in particolare del componente stesso e' Proxy (vai alla guida perche' non tutti i metodi e eventi sono supportati)

Ti ho fatto un paio di modifiche, ma sostanzialmente non cambiano il risultato. Fammi sapere

 :D Grande, grande, grande Milio.  :D
Sei un vero maestro, ti ringrazio moltissimo, finalmente ho capito cosa sbagliavo.

La svista nella sub Invito_Write è grave ma me la posso anche perdonare, sono cose che quando non si fa un corretto debug succedono, non dovrebbero succedere ma... :-[

Mentre invece le ingenuità su Write e Read, poi quella di Text è imperdonabile davvero, e il bello è che non capivo perché non leggesse il testo, non è che l'ho guardato una volta sola, ma a cosa cavolo pensavo.

Potresti illuminarmi ancora un pochetto su Proxy?  ;D
Me.Proxy = $hTbox

Con questo noi praticamente passiamo al nostro componente i metodi e gli eventi della lista riferiti alla sua TextBox, tutto quello che viene sollevato dal controllo giusto?
Ma allora la lista dei metodi e delle proprietà di base (UseControl) che cosa significa?
È inutile ho una tale difficoltà a capire gli oggetti, si vede che come sento la parola mi cala una campana sul cervello che già di suo, come usa dire a Roma, è di coccio.

Una cosa è certa nella Wiki in questo passaggio riferito alla costane _Properties (e purtroppo non solo li) ho scritto cose errate:
“L'asterisco dice a Gambas che il nostro componente eredita tutte le proprietà di UserControl e in più gli dice di aggiungere la proprietà Invito. Badate bene UserControl non vuol dire TextBox che se voi volete dal vostro componente esattamente tutte le proprietà di una TextBox con in più la proprietà Invito dovrete digitare tutte le proprietà che distinguono la TextBox rispetto al controllo base.”

 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 06 Aprile 2016, 18:54:08

Potresti illuminarmi ancora un pochetto su Proxy?  ;D
Me.Proxy = $hTbox

Con questo noi praticamente passiamo al nostro componente i metodi e gli eventi della lista riferiti alla sua TextBox, tutto quello che viene sollevato dal controllo giusto?
Ma allora la lista dei metodi e delle proprietà di base (UseControl) che cosa significa?
È inutile ho una tale difficoltà a capire gli oggetti, si vede che come sento la parola mi cala una campana sul cervello che già di suo, come usa dire a Roma, è di coccio.


Come detto prima, non sono tutti gli eventi/metodi che vengono ereditati dal controllo agganciato a Proxy
Dalla guida:

List of properties and methods that take the proxy into account:
HasFocus
SetFocus
Mouse
Cursor
NoTabFocus
Background
Foreground
Tracking

List of events that take the proxy into account:
GotFocus
LostFocus
Menu
MouseDown
MouseMove
MouseUp
MouseDrag
KeyPress
KeyRelease
MouseWheel
DragMove


Tutto il resto va ricreato...
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 06 Aprile 2016, 20:03:32
Tutto il resto va ricreato...

Ma tipo il sistema usato per Change e Clear, giusto? Naturalmente la dove è possibile sfruttare eventi e metodi già presenti nei Children.

Volevo precisare una cosa sul tuo, lui si, davvero bellissimo componente elettronico, così com'era non riuscivo a usarlo ed è per quello che ci ho messo le mani, anche per studio naturalmente, con poco successo come puoi constatare.
Non è che ti sei offeso vero?  :-*

 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 06 Aprile 2016, 20:52:36
Volevo precisare una cosa sul tuo, lui si, davvero bellissimo componente elettronico, così com'era non riuscivo a usarlo ed è per quello che ci ho messo le mani, anche per studio naturalmente, con poco successo come puoi constatare.
Non è che ti sei offeso vero?  :-*
 :ciao:

Quale componente elettronico?
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: Gianluigi - 06 Aprile 2016, 21:25:01

Quale componente elettronico?

Il misuratore che ho allegato due post fa! È tratto da quello nel Led allegato da te in questa (http://www.gambas-it.org/smf/index.php?topic=2262.msg24847#msg24847) discussione.
L'ho messo in risposta a "Carino sto componente...". Allora lo scherzo non si era capito  :'(

Devi scaricarti il componente Misuratore per capire chi è che rub... prende in prestito.

 :ciao:
Titolo: Re:Creazione componenti Gambas – nuova discussione
Inserito da: milio - 07 Aprile 2016, 08:29:32

Quale componente elettronico?

Il misuratore che ho allegato due post fa! È tratto da quello nel Led allegato da te in questa (http://www.gambas-it.org/smf/index.php?topic=2262.msg24847#msg24847) discussione.
L'ho messo in risposta a "Carino sto componente...". Allora lo scherzo non si era capito  :'(

Devi scaricarti il componente Misuratore per capire chi è che rub... prende in prestito.

 :ciao:

 ;D ;D ;D

Quel componente l'avevo creato per ricreare un sinottico di una centralina idroelettrica.