Autore Topic: Gestionale Perseo  (Letto 7522 volte)

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #15 il: 14 Ottobre 2010, 16:01:01 »
Intanto per prendere un po' di confidenza ho cominciato dalla bozza del form di accettazione clienti...

Inutile dire che già ho tante domande.

Ho riscritto il codice per il CodiceFiscale/TesseraSanitaria... Se v'interessa lo posso postare... Però non so quale sia la procedura.

Sicuramente non è un codice leggerissimo, ma magari proponendolo può essere d'aiuto sia agli altri (a chi serve) che a me, se mi date dei consigli su come migliorarlo.

Mancano i Codici per gli Stranieri, ma appena posso li aggiungo.

Per l'algoritmo ho semplicemente seguito un codice fatto da un utente per VB e l'ho riadattato per Gambas3 (alcune istruzioni non funzionavano). Ho verificato il tutto seguendo le regole ufficiali per la creazione dei Codici Fiscali.


Domande:
1) Vorrei trasferire il codice dell'algoritmo del CF su un modulo, ma non ho capito come si richiama poi le variabile di quel modulo...

2) A me piacerebbe far comparire un form apposito (tipo "frmComuni.show"), per guadagnare spazio, per l'inserimento del codice istat del comune di nascita. Ma ho dovuto fare marcia indietro perché non riesco ad attribuire il valore ad una variabile scelta sul form secondario "frmComuni" sull'altro "FMain". In VB mi ricordo bisognava dichiarare la variabile come Public, ma sono anni che non lo uso e non mi ricordo molto bene...

3) In futuro cambierò la listbox dei comuni con una Grid... collegata al DB... Ma perché nella ListBox le lettere accentate di alcuni Comuni me le sostituisce con dei simboli strani?

4) Quando attribuivo un .Caption ai Label all'interno della figura della TesseraSanitaria, se prima non gliene davo uno predefinito (ho usato il segno "-"), non mi inseriva i campi di testo (cioè i Label rimanevano vuoti)...  :o

5) Non riesco a modificare il formato della data di nascita... Inizialmente avevo usato una textbox, ma mi faceva inserire la data con il formato "mm/gg/aa" (o aaaa). Io vorrei inserirla nel formato "gg/mm/aa" (o aaaa), ma non ci riesco. Stranamente quando inserisco una data me la inserisce con questo formato automatico "mm/gg/aaaa". Dove posso trovare materiale per la gestione delle date?
5b) si possono stabilire come regole delle maschere di formato (cioè 00/00/0000) con gli / fissi in cui si digitano solo i numeri, di continuo?

6) Una cosa molto importante:
Io sto valutando il programma sulla risoluzione del mio PC, che è 1920x1200... Però il programma girerà su PC con schermi a 17'', quindi minore della mia. C'è la possibilità di adattare la GUI grafica mantenendo le stesse proporzioni su tutti i computer su cui girerà il pacchetto? oppure mi conviene scegliere la risoluzione minore ed impostare le dimensioni della GUI su quella del 17'' (in questo caso credo che su PC con risoluzione più elevata si dovrebbe vedere più piccolo, e con degli spazi vuoti ...il che non sarebbe molto carino)?

Non vorrei lagnarvi, ma fatico a trovare materiale e guide. Intanto mi arrangio come posso, ma essendo in definitiva le stesse operazioni che dovrò fare su tutto il Database Gestionale, ci tengo a farmi subito chiarezza.

:)

PS: allego l'eseguibile...
« Ultima modifica: 14 Ottobre 2010, 18:17:23 da perseo »

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #16 il: 14 Ottobre 2010, 16:25:40 »
Ho visto che comprimendo il progetto dovrebbe raggiungere una dimensione accettabile... Quindi ve lo allego completo.  :)

Ecco il link del codice VB originale da cui sono partito:
http://groups.google.com/group/microsoft.public.it.dotnet.vb/browse_thread/thread/97ad4866ce5f3225/8058171736b56e65
« Ultima modifica: 14 Ottobre 2010, 16:54:43 da perseo »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Gestionale Perseo
« Risposta #17 il: 14 Ottobre 2010, 18:34:47 »
Il mio consiglio è questo:

posta una richiesta alla volta creando appositi topic. In questo modo faciliterai il lavoro di noi che ti aiutiamo, eviti che più persone rispondano a cose diverse accavallando i messaggi in maniera contorta e disordinata e dai un titolo alle richieste per aiutare chi cercherà eventuali soluzioni a a problemi simili al tuo...

Ora continuiamo qui ma la prossima volta segui questa linea guida....

Il codice devi allegarlo al post e chiedere ad un moderatore che te lo carichi in area download...scrivi nel messaggio una breve descrizione del codice così appena pronto te lo alleghiamo...

1) crei un modulo e ci scrivi debntro la funzione dichiarandola publica. Se ad esempio il modulo si chiama MFiscale e la funzione CreaCodice allora la potrai richiamare con

Codice: gambas [Seleziona]
MFiscale.CreaCodice


Il mio consiglio e di fare in modo che la funzione accetti i vari parametri (Nome, cognome, data, etc...) e restituisca una stringa (il codice fiscale in pratica) così, se ad esempio vuoi far appparire lo stesso in una textbox dai:

Codice: gambas [Seleziona]
textbox1.text = MFiscale.CreaCodice("Pippo", "Dei pippis", "10/02/85", ...)


2) Questo argomento è stato ampiamente trattato cerca bene tipo: "Come passare variabili tra form"

3) Delle lettere accentate si è già discusso. Cerca il topic...se non lo trovi ne discutiamo meglio in seguito

4) Questo è del tutto normale. Se tu crei un label e dall'ide gli togli il testo interno (solitamente del tipo labelX) allora esso sarà vuoto e dovrai impostarlo tu. Non ci vedo nulla di strano. Anche gli altri oggetti si comportano così.

5) Ti consiglio di guardare la funzione Format o, come feci io tempo fa, ti scrivi una funzione che ti "sistema l'ordine" come vuoi tu

6) Quello che vuoi fare tu è sia semplice che difficile. Semplice poichè puoi usare oggetti come VBox, HBox, panel e le proprietà Expand degli oggetti per fare in modo che tutto venga ridimensionato con il form, difficile perchè per molti oggetti devi lavorare un pochetto....

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #18 il: 14 Ottobre 2010, 19:12:25 »
Scusa Ceskho, ma perché dovrei postare un argomento alla volta quando ci sei tu che mi rispondi a tutto in 3secondi?!  ;D

Sei eccezionale! Grazie. :)

Il problema è che ho tanti dubbi per la testa... ed ho paura di cominciare nella maniera sbagliata, e poi buttare tutto il lavoro fatto.
Però hai veramente ragione, troppe domande messe insieme così non sono vanno bene. La prossima volta ne posterò una per volta, cercando di trovare un ordine d'importanza.

Quindi parto da quella che al momento mi sembra più importante, la 6)

Il tuo consiglio è di creare su ogni form un contenitore (me li studierò) e poi di usare la proprietà Expand... Appena posso cercherò di documentarmi meglio.
Ma che vuol dire "difficile, perché per molti oggetti devi lavorare un pochetto..."?
Mi puoi fare un esempio di quali oggetti potrei trovare difficoltà, e perché?

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Gestionale Perseo
« Risposta #19 il: 14 Ottobre 2010, 19:15:50 »
Scusa Ceskho, ma perché dovrei postare un argomento alla volta quando ci sei tu che mi rispondi a tutto in 3secondi?!  ;D

Sei eccezionale! Grazie. :)

Il problema è che ho tanti dubbi per la testa... ed ho paura di cominciare nella maniera sbagliata, e poi buttare tutto il lavoro fatto.
Però hai veramente ragione, troppe domande messe insieme così non sono vanno bene. La prossima volta ne posterò una per volta, cercando di trovare un ordine d'importanza.

Quindi parto da quella che al momento mi sembra più importante, la 6)

Il tuo consiglio è di creare su ogni form un contenitore (me li studierò) e poi di usare la proprietà Expand... Appena posso cercherò di documentarmi meglio.
Ma che vuol dire "difficile, perché per molti oggetti devi lavorare un pochetto..."?
Mi puoi fare un esempio di quali oggetti potrei trovare difficoltà, e perché?

Se il tuo form si riduce a una decina di componenti sistemati in maniera piuttosto ordinata la cosa è abbastanza facile. Ma se gli oggetti diventano di più e non sono sistemati "uno sotto l'altro" allora dvi ingegnarti un pò per capire quale contenitore usare, come usarlo, dove usarlo, ecc...

Nei miei ultimi software faccio uso di questi oggetti...magari scaricateli e dacci un'occhiata....

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #20 il: 14 Ottobre 2010, 19:51:02 »
...magari scaricateli e dacci un'occhiata....

Intanto grazie del ...Pellegrino!  :rotfl:

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Gestionale Perseo
« Risposta #21 il: 14 Ottobre 2010, 20:01:19 »
...magari scaricateli e dacci un'occhiata....

Intanto grazie del ...Pellegrino!  :rotfl:

Non l'ho capita... :'(

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #22 il: 14 Ottobre 2010, 20:09:27 »
...quando mi hai detto di scaricare e vedere i tuoi progetti... sono andato sul tuo sito ed in Homepage c'è scritto "Benvenuto pellegrino!"

"Benvenuti Pellegrino!" è un modo scherzoso che un mio amico ha di salutare gli altri... Pellegrino non nel senso non di giramondo, ma di persona rinco che si è persa... Quindi mi ha fatto ripensare a questa cosa che mi ha fatto sorridere. ;)

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Gestionale Perseo
« Risposta #23 il: 14 Ottobre 2010, 20:16:06 »
...quando mi hai detto di scaricare e vedere i tuoi progetti... sono andato sul tuo sito ed in Homepage c'è scritto "Benvenuto pellegrino!"

"Benvenuti Pellegrino!" è un modo scherzoso che un mio amico ha di salutare gli altri... Pellegrino non nel senso non di giramondo, ma di persona rinco che si è persa... Quindi mi ha fatto ripensare a questa cosa che mi ha fatto sorridere. ;)

Ah...ecco... ;)

Comunque ti consgilio di lasciar perdere il sito e guardare questi due (quelli fatti meglio..il che è tutto dire.. :rotfl:):
http://code.google.com/p/meganalotto/
http://code.google.com/p/ocvc/

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #24 il: 15 Ottobre 2010, 11:17:30 »
Fantastico!!! Ceskho... sei un mito!  :)

In pratica ho scoperto oltre alle cose che ti avevo chiesto anche altre potenziali applicazioni.

Ad esempio non conoscevo il comando SHELL... E' meraviglioso!
Ho creato un pulsante che mi apre la Calcolatrice e, tramite il comando 'espeaker'... gli faccio dire l'operazione che sto eseguendo! Volendo potrei creare una serie di istruzioni vocali su un file.txt e richiamarle quando mi occorrono... Oppure far leggere risultati di operazioni... Questo potrebbe tornarmi molto utile, visto che spesso noi eseguiamo operazioni in piedi, e quindi il risultato potrebbe essere anche ascoltato lontano dalla scrivania.
Inoltre, tramite SHELL, potrei anche crearmi un pannello utility con i pulsanti di tutte le applicazioni installate che mi servono... Calcolatrice, Gedit, Fogli di lavoro, ecc. oppure posso salvare file, interrogare il sistema su qualsiasi cosa... Ho un collegamento diretto con il PC!

Tornando ai Containers... da quello che ho capito, un Container è un campo che, oltre a raggruppare oggetti, me li distribuisce in modo automatico. Se al suo interno tutti gli oggetti (tra cui può esserci uno o più Containers nidificati) ha expand impostato su true guadagnano lo spazio possibile, altrimenti rimangono fissi come erano stati impostati.
Quindi se ad esempio voglio due pulsanti sempre al centro di un pannello creo un HBox ed al suo interno metto: i due pulsanti al centro (impostando il loro 'expand' a false), e due 'panel' fittizzi ai lati (impostando il loro 'expand' su true). In questo modo i due pulsanti rimangono sempre della stessa dimensione, ma varia in maniera automatica la dimensione dei 'panel' ai lati...
Risultato: i due pulsanti sono sempre al centro quando allargo o ristringo il pannello, o quando è lo massimizzo.

Quindi con questa tecnica posso distribuire tutti gli oggetti come più mi piace: con HBox e VBox! Giusto?!

Mi pare che in OCVC non hai usato H/VPanel e H/VSplit? A che servono?

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Gestionale Perseo
« Risposta #25 il: 15 Ottobre 2010, 15:14:08 »
Fantastico!!! Ceskho... sei un mito!  :)

In pratica ho scoperto oltre alle cose che ti avevo chiesto anche altre potenziali applicazioni.

Ad esempio non conoscevo il comando SHELL... E' meraviglioso!
Ho creato un pulsante che mi apre la Calcolatrice e, tramite il comando 'espeaker'... gli faccio dire l'operazione che sto eseguendo! Volendo potrei creare una serie di istruzioni vocali su un file.txt e richiamarle quando mi occorrono... Oppure far leggere risultati di operazioni... Questo potrebbe tornarmi molto utile, visto che spesso noi eseguiamo operazioni in piedi, e quindi il risultato potrebbe essere anche ascoltato lontano dalla scrivania.
Inoltre, tramite SHELL, potrei anche crearmi un pannello utility con i pulsanti di tutte le applicazioni installate che mi servono... Calcolatrice, Gedit, Fogli di lavoro, ecc. oppure posso salvare file, interrogare il sistema su qualsiasi cosa... Ho un collegamento diretto con il PC!

In area download c'è sempre un mio programma che si chiama Parlas. Sfrutta Espeak....se vuoi dai un'occhiata anche a quello.

Citazione
Tornando ai Containers... da quello che ho capito, un Container è un campo che, oltre a raggruppare oggetti, me li distribuisce in modo automatico. Se al suo interno tutti gli oggetti (tra cui può esserci uno o più Containers nidificati) ha expand impostato su true guadagnano lo spazio possibile, altrimenti rimangono fissi come erano stati impostati.

Perfetto. Ai capito appieno il loro uso. Un oggetto con Expand = TRUE adatta la sua dimensione al conteiner in cui è inserito. In questo modo, giocando con gli oggetti giusti, riesci a creare un form scalabile senza usare una sola riga di codice....forte, no?

Citazione
Quindi se ad esempio voglio due pulsanti sempre al centro di un pannello creo un HBox ed al suo interno metto: i due pulsanti al centro (impostando il loro 'expand' a false), e due 'panel' fittizzi ai lati (impostando il loro 'expand' su true). In questo modo i due pulsanti rimangono sempre della stessa dimensione, ma varia in maniera automatica la dimensione dei 'panel' ai lati...
Risultato: i due pulsanti sono sempre al centro quando allargo o ristringo il pannello, o quando è lo massimizzo.

Questo è il metodo che usao io...non so se sia il migliore ma è l'unico che mi venne in mente ed ora uso sempre questo poichè non mi ha mai dato problemi.... ;)

Citazione
Quindi con questa tecnica posso distribuire tutti gli oggetti come più mi piace: con HBox e VBox! Giusto?!

Giusto.... :)

Citazione
Mi pare che in OCVC non hai usato H/VPanel e H/VSplit? A che servono?

Hsplit e Vsplit sono degli oggetti che permettono di decidere le dimensione degli oggetti interni mediante la barra di trascinamento posta tra un oggetto e l'altro. Se guardi l'ide di Gambas puoi notare che puoi espandere la parte centrale semplicemente trascinando il suo limite destro o sinistro...quello è uno Vsplit. Se non mi sono spiegato dimmelo che mi spiego meglio.

Hpanel e Vpanel sono l'evoluzione di Hbox e Vbox solo che quando serve pone gli oggetti su più righe o più colonne. é difficile da spiegare ma fai prima a provare ad usarlo per rendere l'idea... ;)

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #26 il: 15 Ottobre 2010, 18:20:09 »
Appena posso do un'occhiata anche a Parlas...
Non so se sei interessato o se lo conosci già ...ti segnalo anche Festival (come TTS). Il progetto italiano lo trovi a questo link: http://www2.pd.istc.cnr.it/TTS/It-FESTIVAL.htm
La qualità di sintesi vocale mi sembra molto buona.

Tornando ai Containers:
Non avevo proprio fatto caso al fatto che in multi-selezione si possono disporre e distribuire gli oggetti all'interno di un contenitore con le icone di allineamento!  :ok:
Comunque smanettandoci un po' su mi sono reso conto che la prima operazione da fare è sul FORM, settando la proprietà ARRANGEMENT diversa da NONE... Quindi: HORIZ, VERTICAL, ROW, COLUMN, FILL.
Poi mi sono reso conto che lo stesso risultato di HBox o di VBox lo si può ottenere con PANEL, settando anche a questo contenitore la proprietà ARRANGEMENT.
Che cosa cambia tra usare PANEL e gli HBox o VBox?

Sempre in tema di Containers... Stavo pensando che i forms ed suoi oggetti dovrebbero comunque partite da una base di risoluzione minima. Quindi forse la soluzione migliore è quella di creare un layout di un form di minime dimensioni (tipo 800x600, un po' meno considerando anche le barre d'intestazione sul desktop) e poi gestire quelli che voglio ingrandire, nel caso ci sia più spazio...
Cioè ad esempio, dividendo un ipotetico form in due colonne, in quella di dx, con le textbox la lascio a larghezza fissa, mentre vario le dimensione di quella di sn, con il DataGrid... per vedere meglio tutti i campi di ogni record...

PS: intanto ho implementato il modulo CodiceFiscale nel progetto.  ;)
« Ultima modifica: 15 Ottobre 2010, 19:52:52 da perseo »

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #27 il: 15 Ottobre 2010, 22:52:37 »
Ciao perseo
non ho capito bene cosa devi fare, se adattare alcuni controlli del form o adattare il form alle varie risoluzioni mantenendo le proporzioni dei controlli.
Tempo fa avevo l'esigenza di far adattare un form alle varie risoluzioni pero tutte le text e label dovevano mantenere le posizioni e le dimensioni in proporzione, allora feci varie prove e alla fine con poche righe di codice e sfruttando l'evento resize trovai la soluzione.
Ti posto il codice vedi se ti può essere utile.

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Gestionale Perseo
« Risposta #28 il: 16 Ottobre 2010, 00:06:09 »
@ dex
Ho provato il tuo codice, molto interessante  :ok:
L'ho provato con G2, con G3 non funziona. Puoi aggiustarlo? ;D
Ciao  :2birre:

@Perseo
Ho visto che stai tastando il terreno, mi piacerebbe che provassi GridBox, è un componente fatto da milio.
Serve per creare una griglia per inserimento dati, facile da usare da parte dell'utente finale, in pratica ci si muove e si scrive come in un foglio di calcolo. Molto facile anche da creare, con poche righe di codice ti prepari una griglia collegata al database con funzioni già pronte come Salva, Nuovo, elimina etcc. Inoltre puoi creare delle colonne di tipo combobox e check o colonne con funzioni esempio colonna "totale". Di recente Milio ha aggiunto la funzione Search, per cercare e inserire dati da un listino. Io l'ho usato per il mio gestionale che ho fatto con G2 e non ne farei a meno. Le ultime modifiche sono state fatte solo per G3, il progetto per G2 è stato abbandonato.
Se vuoi provarlo sono a tua disposizione molto volentieri, penso che si sia capito che è un progetto che mi stà a cuore  ;D
Ciao  :2birre: :2birre:

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Gestionale Perseo
« Risposta #29 il: 16 Ottobre 2010, 00:37:27 »
Dunque, il problema risoluzione non esiste...è tutto frutto della tua immaginazione (  :rotfl: ) e ti spiego perchè..

Nel momento in cui setti tutti i parametri del form e degli oggetti coi rispettivi contenitori, vedrai che ad ogni ridimensionamento del form essi si adatteranno. Bene. Fin qui tutto ok.

Forse non avrai mai notato che richiamando l'evento FromQualsiasi.Show, gambas disegna il form richiamato e lo ridimensiona alle misure impostate o da codice o da IDE. Quindi il ridimensionamento dell'oggetto form viene richiamato almeno una volta da quando il form viene richiamato.

Fatti furbo: nelle impostazioni del form inserisci

Maximized = TRUE

in modo che il form, all'apertura, prenda le dimensioni dello schermo....in questo modo non dovrai preoccuparti di una dimensione risolutiva minima e avrai il form bello e sistemato.