Pagina 1 di 2

[gambas2] Form contenitore

Inviato: mercoledì 6 giugno 2007, 14:50
da pippolo
Curiosando nei suggerimenti del giorno leggo:
Con Gambas puoi fare in modo che qualsiasi form venga racchiuso in un altro form!
Per fare una cosa così utile devi soltanto inizializzare il form passando un contenitore padre come ultimo argomento nel costruttore.
Per esempio :
DIM hForm AS MyDialog
DIM hSuperControl AS MyForm

' Crea un dialogo
hForm = NEW MyDialog
' Inserisce un form in questo dialogo
' Nota che questo form riceve due parametri prima del contenitore
hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
' Muove e ridimensiona il form
hSuperControl.Move(8, 8, 128, 64)
Ricorda che: un form racchiuso in un altro continua ad essere un form e quindi osservatore di eventi di se stesso.
INTERESSANTE!!!
Provo a smanettare ma trovo subito il problema:
' Nota che questo form riceve due parametri prima del contenitore
Sì, ma che parametri??
Penso si tratti della dimensione o del posizionamento e metto dei valori numerici.
(nono) Too many arguments!!
Qualcuno mi sa dire che parametri vuole?
Ciao e grazie

Re: gambas: Form contenitore

Inviato: mercoledì 6 giugno 2007, 14:59
da Pixel
Pippolo, sei entrato in un campo minato ;D
Quello che bellamente è scritto nel consiglio del giorno è una delle cose più complesse di Gambas.
In pratica, il 90% degli oggetti sono creabili al volo e quindi anche un form, ma il problema è nella gestione successiva.
Infatti, a differenza di un oggetto disegnato sul form che ha delle proprietà e degli eventi visibili alla sola scrittura del comando, gli oggetti creati sono da scrivere a manina..
Se non ne puoi fare a meno ti scrivo qualche riga di codice per farti capire il concetto ma è una cosa (dal mio punto di vista) rognosa.
ciao

Re: gambas: Form contenitore

Inviato: mercoledì 6 giugno 2007, 15:16
da pippolo
Ti ringrazio per la risposta e per l'avvertimento.
Non avendo al momento nessuna necesstà particolare...
FACCIO UN PASSO INDIETRO E MI VERGOGNO!!
Sono più che all'inizio ed ancora nella fase in cui ho una quantità importante di cose spesso banali da imparare: preferisco lasciare stare le rogne almeno fino a quando non so esattamente di cosa sto parlando.
(ot)
Colgo l'occasione per segnalarti che ho scarcato il configuratore
http://xoomer.alice.it/pixel/progetti/gdockconf.tar.gz
Non lo utilizzerò (niente compiz nè berly installati), ma se a te non dispiace vorrei "spulciare" un po' il codice per cercare di imparare qualcosa.
Ciao e grazie

Re: gambas: Form contenitore

Inviato: mercoledì 6 giugno 2007, 16:56
da Pixel
pippolo ha scritto: Ti ringrazio per la risposta e per l'avvertimento.
Non avendo al momento nessuna necesstà particolare...
FACCIO UN PASSO INDIETRO E MI VERGOGNO!!
Sono più che all'inizio ed ancora nella fase in cui ho una quantità importante di cose spesso banali da imparare: preferisco lasciare stare le rogne almeno fino a quando non so esattamente di cosa sto parlando.
(ot)
Colgo l'occasione per segnalarti che ho scarcato il configuratore
http://xoomer.alice.it/pixel/progetti/gdockconf.tar.gz
Non lo utilizzerò (niente compiz nè berly installati), ma se a te non dispiace vorrei "spulciare" un po' il codice per cercare di imparare qualcosa.
Ciao e grazie
Non devi vergognarti di nulla anzi complimenti per la costanza...  (good)
L'unica cosa è che i pochi esempi disponibili su Gambas sono (a volte) incompleti o danno per scontato delle cose e quindi non funzionano.
Per quanto riguarda il configuratore non è che ci sia molto da imparare ;D
Comunque il codice è aperto e quindi puoi farci assolutamente quello che vuoi ;)
ciao

Re: gambas: Form contenitore

Inviato: giovedì 7 giugno 2007, 16:58
da pippolo
Non avendo al momento nessuna necesstà particolare..
Mi sorge però un dubbio:
Supponiamo un progetto con più di un form delle stesse dimensioni.
Con l'opzione me.center all'apertura del form probabilmente "l'effeto visivo" potrebbe essere acettabile.
I problemi mi vengono fuori se voglio aggiungere un menu per spostarmi tra i vari form.
Non avendo un form contenitore e volendo aggiungere un menù (sempre uguale) ai forms lo devo riscrivere tutte volte?
Ciao

Re: gambas: Form contenitore

Inviato: giovedì 7 giugno 2007, 22:16
da Pixel
Uhm... non credo di aver capito quello che intendi.
Un form "contenitore" come intende Gambas è una zona di lavoro in cui possono apparire altri form richiudibili ad icona o altro...
Quello che penso serva a te è un form effetto "telecomando" con le opzioni di passaggio da una zona all'altra.
Potresti essere un po' più chiaro nella domanda? ;D
ciao

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 9:49
da pippolo
touché!!
La mia è un lotta continua con la lingua italiana (e meno male che parlo solo quella!!)
Per form contenitore intendo esattamente quello che dici tu.
Quello che penso serva a te è un form effetto "telecomando" con le opzioni di passaggio da una zona all'altra.
Se per telecomando intendi un menu che mi permetta di aprire o chiudere i vari form dell'applicazione è esattamente quello che mi serve.
Provo a spiegarmi ancora (e meglio spero!).
Potrei risolvere il problema con un contenitore a schede (tabstrip). Otterrei, a livello di funzionalità, qullo che mi serve ma con una soluzione che trovo non molto "elegante" a livello estetico (ovviamente a mio parere)
Ho il timore di non essermi spiegato nemmeno questa volta.
Grazie per la tua attenzione
Ciao
Dario

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 10:19
da Pixel
Allora, io opterei per queste soluzioni:

Soluzione A
Un form indipendente largo e basso che racchiuda bottoni o tabstrib che permetta l'apertura di uno o più form.
Questo form potrebbe essere di tipo a scomparsa (porti il mouse in basso o in alto ed appare) oppure sempre visibile in una qualche parte dello schermo (tipo il pannello dei comandi di Gimp per intenderci).

Soluzione B
Usi la tabstrip come contenitore dei form stessi (vedi Atlantide per maggiori chiarimenti).

A te la scelta ;D

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 10:25
da andy60
non sarebbe affatto male relaizzare dei demos riguardnti l'utilizzo dei controlli grafici di Gambas2. Vedro' di fare qualcosa a livello di wiki. Io mi sto invece cimentatndo in un programmetto ("Spread") che serve x calcolare lo spread minimo di gain sulle operazioni di borsa. Dueversioni: una minimale e una dotata di sqlite managenment sottostante. Appena scritto lo pubblico.

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 11:30
da pippolo
SOLUZIONE A
Mi sembra graficamente più accattivante ma sopratutto più ordinata.
E poi così utilizzo qualcosa che non ho mai usato e magari imparo qualcosa, che lo scopo principale. La difficolta mi sembra quella di passargli un eventuale comando del tipo "Controlla che form è aperto, chiudilo e poi apri il form x"
Provo a vedere cosa tiro fuori e con quale altro problema stressarvi!!
Grazie dei consigli.

@andy
Demos ......... Wiki........ MAGARI!!! (good)

La carenza di informazioni e di punti di riferimento per Gambas è praticamente esasperante: la guida in linea e  sito web di Gambas  ::)
Senza il buon Pixel avrei già abbaddonato da tempo!!! (grazie Pixel!!)
Ciao
Dario

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 14:11
da Pixel
pippolo ha scritto: SOLUZIONE A
...
La difficolta mi sembra quella di passargli un eventuale comando del tipo "Controlla che form è aperto, chiudilo e poi apri il form x"...
A prescindere che i Form di Gambas sono già dotati di eventi che controllano lo stato del Form (visibile, attivo, ecc..) si possono utilizzare varie tecniche.
Una grezza è la seguente:
imposti una matrice con il numero di form del tuo progetto e la dichiari di tipo booleano (TRUE, FALSE)
quando attivi un form imposti il relativo indice della matrice a True e conseguentemente non fai altro che eseguire un ciclo for next da 1 a numero_di_form che controlli lo stato.

Molto più fine usare la selezione delle possibilità: SELECT CASE ..... END SELECT
Presupponiamo di utilizzare una tabstrip come oggetto di passaggio/visualizzazione da un form all'altro.

SELECT CASE TabStrip1.index
Case 1
Form1.show
Case 2
Form2.show
Case 3
Form3.show
END SELECT

Comunque, guarda un po' di esempi e posta eventuali dubbi ;D

Ciao

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 15:48
da pippolo
Ok
SELECT CASE
molto più ordinato, leggibile e facilmente modificabile/implementabile
.....
mi sto intortando!!!

Codice: Seleziona tutto

PUBLIC SUB Form_Open()
FMain.Show  
END

PUBLIC SUB TabStrip1_Click()
SELECT CASE TabStrip1.Index
CASE 0
FMain.show
CASE 1
Registro.show
END SELECT  
END
Così posso aprire tutti i form che mi pare... ma come chiudo il form aperto prima di aprire il nuovo!!Mi viene in mente solo questo:

Codice: Seleziona tutto

' Gambas class file

chiudi AS Integer

PUBLIC SUB Form_Open()
FMain.Show  
chiudi = 0
END

PUBLIC SUB TabStrip1_Click()
SELECT CASE chiudi
CASE 0
FMain.Close
CASE 1
Registro.Close
END SELECT  

SELECT CASE TabStrip1.Index
CASE 0
FMain.show
chiudi = 0
CASE 1
Registro.show
chiudi = 1
END SELECT  
END
Ma siamo sicuri che il codice è ancora ordinato e leggibile??
Forse è meglio che ci rifletta un altro po'!!!
Ciao

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 16:21
da Pixel
Io la vedrei così
Apri un progetto
Metti una tabstrip con 2 linguette
aggiungi 2 form (Form1 e Form2)
incolla questo codice

Codice: Seleziona tutto

' Gambas class file

PUBLIC FormAperto AS Integer

PUBLIC SUB TabStrip1_Click()
Chiudi(FormAperto)
SELECT CASE TabStrip1.Index
CASE 0
Form1.Show
CASE 1
Form2.Show
END SELECT   
FormAperto = TabStrip1.Index
END

PUBLIC SUB Chiudi(indice AS Integer)
SELECT CASE indice
CASE 0
Form1.CLOSE 
CASE 1
Form2.Close
CASE 99
'nessun form...avvio del programma
END SELECT   
END

PUBLIC SUB Form_Open()
FormAperto = 99  
END
Mi sembra abbastanza pulito ;D
Ciao

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 16:44
da andy60
due consigli, magari sono scontati:
1. usa i moduli in gambas e crea funzioni suddivise per argomento, riusabili in tutte le tue applicazioni
2. usa le classi
3. guarda il codice scritto da altri

ciao

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 18:29
da pippolo
@pixel:
Mi sembra pulito anche a me. ;D
Adesso mi cimento!
Grazie

@andy60:
E' solo da un mese che provo a scrivere qualche linea di codice e come unica esperienza .... 30 anni fa ho giocherellato con un zx spectrum  e con il basic, quindi per me nessun consiglio è scontato.
La difficoltà è semmai a capire i consigli. Tipo:
2. usa le classi
Le userei se sapessi cosa sono!! >:(
Per quanto riguarda
3. guarda il codice scritto da altri
sto scaricando tutto ciò che trovo, che poi fondamentalmente è quello che ho trovato di pixel (atlantide  e gdockconf)  e brus46 che ha postato hanno postato i link sul forum.
Se tu fossi così gentile da linkarmi qualcosa alla quale potrei dare un'occhiata te ne sarei estremamente grato.
Anzi offro da bere  (b2b)

Grazie a tutti
Ciao

Re: gambas: Form contenitore

Inviato: venerdì 8 giugno 2007, 20:56
da andy60
grazie per la birra, allora vediamo un attimo:

per gambas vai qua:
http://wiki.ubuntu-it.org/Programmazione/Gambas
ci trovi anche un esempio minimale di classe.... (good)

Re: gambas: Form contenitore

Inviato: sabato 9 giugno 2007, 8:45
da pippolo
Avevo visto quella pagina.
Secondo me non si capisce bene cosa è una classe perchè manca la definizione di classe stessa.
cito da:
http://andreabertini.wordpress.com/2007/06/01/limportanza-delle-classi-nei-linguaggi/
E’ un contenitore di oggetti che conservano il loro valore fino a quando il contenitore non viene eliminato. Mentre una raccolta di funzioni slegate fra loro si presta dal punto di vista della programmazione a molti malintesi che possono generare bugs.
(io lo aggiungerei al wiki)
Per un principiante alle primissime armi non è comunque un concetto facilissimo da digerire.
In ogni caso ti ringrazio per la segnalazione. Cercherò un po' in giro degli approfondimenti.
Per quanto riguarda
andy60 ha scritto: 3. guarda il codice scritto da altri
concorderai con me che PURTROPPO non è semplicissimo trovare del codice da cui poter imparare.
http://andreabertini.wordpress.com/2007/06/01/gambas-killer-application/
;)
Ciao
Dario

Re: gambas: Form contenitore

Inviato: sabato 9 giugno 2007, 9:38
da andy60
la definizione di classe è infatti del mio blog, hai fatto bene a  citarla, è soggetta alle Creative Commons, la citero' nel wiki

Re: gambas: Form contenitore

Inviato: sabato 9 giugno 2007, 9:54
da pippolo
Infatti l'ho scoperta oggi curiosando nella tua firma.
Così come il secondo link:
non sono quindi l'unico a soffrire per la mancanza di punti di riferimanto!
io ho trovato questo
http://www.linuxbasic.net/index.php
ma non mi sembra molto "popolato" o forse sono abituato male con il forum diUbuntu!!
e anche questo:
http://www.gambasforge.net/
dove qualche esempio si può trovare
Ciao

Re: gambas: Form contenitore

Inviato: sabato 9 giugno 2007, 12:00
da andy60
una richiesta ...se si utilizza la release due di gambas inserire nel titolo dei post [Gambas2] ...non tutto è compatibile. grazie