Autore Topic: Applicazione layout e menu  (Letto 3400 volte)

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #15 il: 01 Novembre 2010, 12:23:06 »
Incredibile!

I codici sono identici... ed anche le opzioni! Però se lancio il mio codice mi restituisce l'errore, mentre se lancio il tu funziona perfettamente.
Poi ho preso il tuo codice ed ho modificato i tuoi due form_figli rendendoli identici ai miei form_figli ...e rifunziona perfettamente.

Mi viene in mente solo una cosa... quando ho costruito i due Form_figli, avevo chiesto di creare il secondo figlio da uno già esistente (ossia il primo figlio). L'errore potrebbe dipendere da questo procedimento sbrigativo?
Cmq appena posso riscrivo il codice da capo, creando i form_figli da zero.

 :ok:

[edit]
Nel progetto dove mi restituiva l'errore ho cancellati i due form_figli e li ho ricreati da capo (ognuno da "crea form --> nuovo") e l'errore è scomparso!
Quindi ho supposto che l'errore poteva derivare proprio dal fatto che il form_figlio_2 l'avevo creato da crea form --> esistente --> "form_figlio_1.

Allora ho verificato simulando l'errore con la creazione del form_figlio_2 proprio da quello esistente form_figlio_1... ed invece anche così funziona perfettemente.

Giusto per curiosità, ma quell'errore da cosa poteva dipendere?
[/edit]
« Ultima modifica: 01 Novembre 2010, 12:44:51 da perseo »

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #16 il: 01 Novembre 2010, 15:25:12 »
Ecco fatto...

In questo esempio ho messo nei form_figli delle GridBox che richiamano i records di una tabella (log) di un DB MySQL.
Chiaramente ho anche editato il codice di avvio, per la connessione a MySQL e la ricerca del DB (che se non c'è lo crea). Per far ciò ho semplicemente seguito, copiato e riadattato al mio caso il codice di GOSH (GestHotel)...

E' solo una bozza di ogni cosa... ma il mio "Gestionale" comincia a prendere forma!  :D

Che ne pensate?  :)

PS: per disabilitare i pulsanti_toolbar ed i pulsanti_menu del form visualizzato ho usato una tecnica piuttosto procedurale... Va bene così oppure ci sono metodi più idonei?

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Applicazione layout e menu
« Risposta #17 il: 01 Novembre 2010, 23:24:20 »
Non vorrei dire una cazzstroneria (bello 'sto neologismo  ;D) ma forse può dipendere dal fatto che:
1) non hai ricompilato il progetto prima di eseguirlo, così che l'IDE visualizzava il nuovo codice ma l'interprete eseguiva ancora il vecchio programma;
2) qualcosa nei file del tuo programma in Gambas non era andato a posto durante le tante tue modifiche (Gambas salva tante informazioni su file di testo)
3) la Luna era in congiunzione con Nettuno  :-\
Visita il mio sito personale: http://www.leonardomiliani.com

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #18 il: 02 Novembre 2010, 02:05:48 »
in Vb si poteva creare il main e all'interno tutti i form children i quali seguivano gli eventi del main, per esempio si riduceva ad icona il main e tutti i form aperti si iconizzavano, e se non ricordo male avendo un form in fase di modifica tentando di chiudere il main usciva un message.
su gambas tutto questo non è stato programmato, ma con un pò di pazienza si può fare.
All'inizio anche io ho testato varie opzioni, Workspace panel vari e persino una classe con all'interno  una base form e aggiungendo man mano quello che mi serviva, solo che man mano che andavo avanti nel progetto uscivano tutti i limiti.

per il Workspace:
apre tutti i form con dimensioni e coordinate fisse, non è possibile spostare un form sullo schermo o ridimensionarlo, non è possibile visualizzare 2 form contemporaneamente, immagina che vuoi visualizzare contemporaneamente il form clienti e il form fatture.

con i panel si può fare a condizione di avere pochi form nel progetto, durante la progettazione grafica è un casino avere tutti i panel sovrapposti, per modificare il primo bisogna spostare tutti gli altri, inoltre i controlli seguono un'unico incremento per esempio se su panel1 metti una label1 su panel2 due non puoi usare label1, sembra una sciocchezza ma pensa a quando il tuo progetto crescerà con migliaia di controlli e ti devi ricordare ogni controllo a quale panel appartiene.
Inoltre per spostare i panel sul monitor devi intercettare le coordinate del mouse e da codice muovere il panel.

Nel mio progetto ci sono oltre 80 form e più di 1500 controlli e alla fine la soluzione che ho usato è quella del main con tutti i form children inserendo del codice per farlo diventare simile a VB, con un array mi memorizzo i form aperti e quando riduco ad icona il main

ti posto una bozza che ho realizzato all'inizio vedi se ti può servire qualche spunto.

nb. è stato realizzato con gambas2 ma aprendolo con il 3 e facendo aggiorna form e modificando il codice sui select case (gambas3 non accetta codice su più righe) funziona.

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #19 il: 02 Novembre 2010, 12:28:13 »
Grazie Leo,
forse è proprio come dici. Mi ero incuriosito perché quel tipo di errore l'ho riscontrato anche in altre occasioni (ma a forza di fare prove non ricordo quali...). Però se dovesse ricapitare proverò a ricompilare il codice prima di eseguirlo.

Se invece dipendesse dal "file di testo" gambas, che succede su un progetto in corso di grosse dimensioni? C'è la possibilità di mettere ordine in quel file di testo? Cosa contiene?

@ Dex,
ho provato a scaricare il tuo sorgente, ma non riesco ad eseguirlo nè da g2 nè da g3. Il primo non mi visualizza nulla, come se il programma fosse in stand-by, su g3 invece (dopo aver aggiornato le form) mi da una serie di errori sulle variabili private, ecc. (c'era un errore su un solo "select case" e l'avevo già corretto).

@fsurfing,
intanto sto continuando sulla strada del concatenamento di un "form_figlio" all'interno di un panel nel "form_padre".
Il problema è che non so come fare per metterne uno "nipote"...  ;D
Ti ricordi il form sul calcolo del codice_fiscale? Questo sarebbe il "form_nipote" che vorrei mettere in un panel_figlio del "form_figlio", che a sua volta finisce nel panel_padre del "form_padre".
Ho provato con la stessa tecnica di sopra, ossia dichiarando nel form_"figlio":

FMain --> è il "form_padre" (con dentro il "panel_padre")

Form1 --> è il "form_figlio" (con dentro il "panel_figlio") --> Fr1 è la sua istanza nell'FMain

FormCF --> il "form_nipote", con il codice fiscale... --> FrCF è la sua istanza nel Form1


In pratica, nel codice di Form1 ho scritto questo codice:
Codice: [Seleziona]
Public frCF As FormCF

...e poi nell'evento Form_Open()
Codice: [Seleziona]
frCF = New FormCF(panel_figlio) As "frCF"

Il programma si avvia... ma quando visualizzo fr1 il "panel_figlio" è vuoto...  ???

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #20 il: 02 Novembre 2010, 12:46:29 »
risolto...

Ho dichiarato tutto nell'FMain...

Codice: vb.net [Seleziona]
Public FrSon As FormFiglio
Public FrNip As FormNipote

Public Sub Form_Open()
  FrSon = New FormFiglio(Me.pnlMain) As "FrSon"
  FrNip = New FormNipote(FrSon.pnlson) As "FrNip"
End


Un'altra cosa...

Con questa tecnica vengono meno alcuni controlli... Ad esempio, nel form_nipote "codice fiscale" avevo usato dei comandi nell'evento Form_Open... ma non vengono attivati. Invece, trasferendoli in _new sì.
Ma il form istanziato non dovrebbe ereditare anche gli eventi? Quando visualizzo un form istanziato... non si verifica l'evento _Open?

[edit]
Ora capisco anche perché prima non mi visualizzava nulla... perché lo dichiaravo nell'evento Open del figlio... Ora ho riprovato a dichiararlo nell'evento _new e funziona anche così! Anzi così è meglio perché c'è più fluidità nel codice... ed i form sono più evidentemente concatenati tra loro (metti che mi dimentico che nel FormX avevo concatenato il FormY nel FormZ, ecc..). :D
[/edit]
« Ultima modifica: 02 Novembre 2010, 13:20:29 da perseo »

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #21 il: 02 Novembre 2010, 14:09:25 »
Un'altra domanda...

Il concatenamento è "Form_nipote" --> "Form_figlio" --> FMain.
Quindi FrNip --> FrSon --> FMain.

Mentre da FrSon è possibile richiamare un componente di FrNip, come faccio a fare il contrario, ossia da FrNip a richiamare un componente di FrSon.

Il "nipote" calcola il codice_fiscale e poi comanda il refresh della GridBox del "figlio"... Come faccio a far fare il refresh della GridBox?


PS: mi sa che mi sto incasinando un pochino...  :rolleyes:

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #22 il: 02 Novembre 2010, 14:35:21 »
Potresti gestirlo con gli eventi...

nel FrNip dichiari un evento che si scatena quando meglio credi, e volendo gli passi anche, che so, il codice fiscale. Nell'esempio scateno l'evento in una sub che richiami quando i dati inseriti per il codice fiscale ritornano un codice valido:

Codice: vb [Seleziona]
' Codice in FrNip
Event CodiceOk(Cf as String)


Public Sub CodiceValido()

  Raise CodiceOk(CodiceFiscaleValido)

End



Codice: vb [Seleziona]
'Codice in Fmain

Public Sub FrNip_CodiceOk(Cf As String)

  FrSon.GridBox1.LoadData(Tua Query & Cf)

End


« Ultima modifica: 02 Novembre 2010, 14:37:30 da milio »

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #23 il: 02 Novembre 2010, 14:47:50 »
avevo aperto il progetto con il 3 e non andava più sul 2

in allegato il progetto per il 2

per gambas 3 devi modificare le variabili private aggiungendo new
esempio Private MyVar as Float[15] diventa Private MyVar as new Float[15]

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #24 il: 02 Novembre 2010, 17:39:28 »
@ Dex:
Grazie per l'esempio, ma l'ho aperto è non ho capito molto. Sono troppo newbie!  :-[

@ Milio:
Ciao genio... come dicevo anche a Dex sono ancora troppo newbie per capire certe cose... Credo che il problema sostanziale è che ho una fretta tremenda di realizzare il mio progetto e quindi sto cercando di assimilare tante cose un po' qua ed un po' là. Forse dovrei prendermi una pausa e studiarmi meglio le basi. Ma come si fa... ora che ho fatto il mio primo pannello di inserimento-dati nel db, che ho creato da codice?!  :D

Facendo il punto della situazione ...in questi pochi giorni di forum, a grosse linee, ho imparato:
1) come si struttura un layout (panel & V/Hbox)
2) come si crea un modulo, e a che serve... (molto alla larga)
3) come si crea una classe, e a che serve... (alla larga qui è dire poco...  ;D )
4) gestire le variabili
5) connettersi ai database
6) qualcosa sugli eventi
7) connettersi alla Shell (ad esempio attivare i comandi vocali... sono una figata per chi come me lavora in piedi, spesso lontano dalla postazione!
8 ) conoscere alcuni componenti di base, e soprattutto la GridBox  ;)

E di tutto questo sono contentissimo e vi ringrazio tutti!  :2birre:
« Ultima modifica: 02 Novembre 2010, 18:00:14 da perseo »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #25 il: 02 Novembre 2010, 18:09:06 »
Se vuoi che ti faccia un esempio veloce veloce... non hai che da chiedere  :2birre:


ps. Dovrei aver finito la 'conversione' della GridBox per le gtk... servono altri test  ;)

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #26 il: 03 Novembre 2010, 18:00:50 »
Intanto, visto che a me ha aiutato vi posto un'immagine che mi sono disegnato simulando la disposizione degli oggetti in un Panel, settando diversamente la sua proprietà Arrangement.



http://img834.imageshack.us/img834/7533/panelm.png

Se nei diversi casi osservate bene la disposizione "restituita" rispetto a quella "visuale/grafica" si dovrebbe capire abbanza bene come lavorano questi contenitori.

Inoltre, a quanto ho capito...

HBOX è identico a Panel con Arrangement "Horizontal"
VBOX è identico a Panel con Arrangement "Vertical"

HPANEL è identico a Panel con Arrangement "Row"
VPANEL è identico a Panel con Arrangement "Column"

Mi chiedo quale sia la differenza... Forse sono preferibili perché potrebbero occupare meno memoria?  ???
« Ultima modifica: 03 Novembre 2010, 18:10:55 da perseo »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Applicazione layout e menu
« Risposta #27 il: 04 Novembre 2010, 01:52:05 »
La differenza sta nel comportamento che essi hanno nel ridimensionarsi se inseriti in un contenitore.....

Se, ad esempio, usi una hbox essa tenderà ad occupare tutto lo spazio orizzontale che ha a disposizione anche se si ha .Expand=FALSE

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Applicazione layout e menu
« Risposta #28 il: 04 Novembre 2010, 02:21:09 »
Che imbranato che sono... non ci avevo fatto caso.  :rolleyes:
Quindi, nell'ottica di un layout ben strutturato, direi che questa differenza è decisamente importante! :)