Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - leo72

Pagine: 1 ... 138 139 [140] 141 142
2086
Programmazione (Gambas 2) / Re: Sqlite e Gambas
« il: 04 Febbraio 2008, 12:14:44 »
In questi giorni devo terminare un lavoretto web per cui di tempo a disposizione non ne ho moltissimo.
Lieto però di darti una mano non appena mi libero  :good:

2087
Programmazione (Gambas 2) / Re: Decimali in ColumnView.
« il: 04 Febbraio 2008, 12:10:34 »
Meglio è così:
Format(Valore, "###,##0.00")

Spiegazione: la "," rappresenta il separatore delle migliaia (su Ubuntu ci sono dei problemini, viene messo uno spazio invece del punto); il "." è il separatore dei decimali. Il "#" rappresenta la posizione di una cifra opzionale, mentre lo "0" rappresenta la posizione di una cifra obbligatoria, che viene riempita con lo 0 se non c'è.

Quindi
Codice: [Seleziona]

Format("15.2", "###,##0.00")


dà come risultato 15,20, mentre
Codice: [Seleziona]

Format("15.00", "###,##0.00")


diventa 15,00.

2088
Programmazione (Gambas 2) / Re: Gridview e Tableview
« il: 03 Febbraio 2008, 15:15:36 »
Premessa:
quanto scrivo qui sotto io lo uso su una ColumnView, con le GridView le cose sono un po' diverse.


Intanto dobbiamo fare il setup della griglia prima di usarla in modo da definire le colonne usate, i titoli e le larghezze delle stesse.
Prendendo come base l'immagine che ho postato, questo è il codice che uso per impostare la griglia vuota:
Codice: [Seleziona]

PRIVATE SUB Pulisci_griglia()
 
  Griglia.Enabled = TRUE
  Griglia.Clear '-- la pulisce'
  Griglia.Columns.Count = 6 '-- imposta 6 colonne'
  '-- qui setto la larghezza di ognuna'
  Griglia.Columns[0].Width = 60
  Griglia.Columns[1].Width = 110
  Griglia.Columns[2].Width = 90
  Griglia.Columns[3].Width = 120
  Griglia.Columns[4].Width = 120
  Griglia.Columns[5].Width = 120
  '-- qui setto il titolo di ognuna'
  Griglia.Columns[0].Text = "Saldato"
  Griglia.Columns[1].Text = "N° reg."
  Griglia.Columns[2].Text = "Anno"
  Griglia.Columns[3].Text = "Documento"
  Griglia.Columns[4].Text = "Data reg."
  Griglia.Columns[5].text = "Importo"

END


Adesso possiamo riempirla con i valori.
Io carico delle scadenze da saldare da un DB con questo codice:

Codice: [Seleziona]

PRIVATE FUNCTION Carica_scadenze(Cliente AS String) AS Boolean
DIM Aiuto AS Integer
DIM Connessione AS NEW Connection
DIM Risultato AS Result
DIM Comodo AS String
DIM cDataItaliana AS NEW clsDataIta

  Connessione.Name = Application.Path & "/archivio"
  Connessione.Type = "sqlite3"
  Connessione.Open
  'Risultato = Connessione.Find("pagamenti", "cliente = &1 AND saldato = &2", Cliente, FALSE)
  Risultato = Connessione.Exec("SELECT * FROM pagamenti WHERE cliente=&1 AND SALDATO=&2 ORDER BY datamov", Cliente, FALSE)
  IF Risultato.Available = FALSE THEN
    RETURN FALSE
  END IF
  Risultato.MoveFirst

  FOR Aiuto = 1 TO Risultato.Count
    Comodo = Trim(CStr(Risultato["id"]))
    Griglia.Add(Comodo, "") '-- aggiungo una nuova linea '
    '(non mi preoccupo del puntatore perché Gambas punta sempre all'ultima)'
    Griglia.Item[0] = ""
    Griglia.Item[1] = Risultato["numero"]
    Griglia.Item[2] = Risultato["anno"]
    Griglia.Item[3] = Risultato["documento"]
    Griglia.Item[4] = cDataItaliana.convIta(Risultato["datamov"])
    Griglia.Item[5] = Risultato["importo"]
    Risultato.MoveNext
  NEXT
  Connessione.Close
  RETURN TRUE
   
END


Ora ho a video la situazione come nel mio screenshot.

Adesso metto il codice per gestire gli eventi Click...

Codice: [Seleziona]

PUBLIC SUB Griglia_Click()

  (...)
  '-- nel mio progetto qui non c'è niente di interessante, per cui
  '-- ometto il codice. Voi potete mettere quello che vi pare

END


... e DoubleClick sulla griglia:

Codice: [Seleziona]

PUBLIC SUB Griglia_DblClick()
DIM Comodo AS String

  '-- se si è aperto un pagamento, non permette di modificarne lo stato:
  '-- per annullarlo, va cancellato
  IF Operazione = "APRI" THEN
    RETURN
  END IF
 
  Comodo = Griglia.Key
  IF Griglia[Comodo].Picture <> "" THEN
    Griglia[Comodo].Picture = ""
    Saldi = Saldi - 1
  ELSE
    Griglia[Comodo].Picture = Picture.Load(pictOK)
    Saldi = Saldi + 1
  END IF
  IF Saldi < 0 THEN
    Saldi = 0
  END IF
 
  CalcolaTotale
  Griglia.MoveTo(Griglia.Key)

END


Il codice all'interno del blocco IF-THEN-ELSE gestisce il caricamento del segno di spunto sulla 1a colonna della riga su cui si è cliccato in modo da far vedere all'utente quale scadenza verrà influenzata dall'operazione.

2089
Programmazione (Gambas 2) / Re: Sqlite e Gambas
« il: 03 Febbraio 2008, 15:04:24 »
Il tuo codice è molto più pulito, rispetto al mio....  :oops:

Cmq, interessante applicazione sarebbe quella da te proposta :-)

2090
Programmazione (Gambas 2) / Re: stampare in gambas
« il: 03 Febbraio 2008, 15:01:49 »
1)
sì, purtroppo devo confermarti che in Gambas 2 (come in Gambas 1.9.x) la stampa è attualmente disponibile solo usando le Qt per cui se per la GUI usi il componente gb.gtp o il componente gb.gui ottieni quell'errore. Anch'io ho lo stesso problema.

2)
Io modifico l'immagine con questo codice:
Codice: [Seleziona]

' Gambas class file

PRIVATE Pagine AS Integer
PRIVATE Immagine AS NEW Image
PRIVATE ImmagineMod AS NEW Image

PUBLIC SUB _new()
DIM imageWidth AS Integer
DIM imageHeight AS Integer

  Immagine = Image.Load(Application.Path & "/grafica/logo-bn.gif")
  imageWidth = ((Immagine.Width * Printer.Resolution) / Desktop.Resolution)
  imageHeight = ((Immagine.Height * Printer.Resolution) / Desktop.Resolution)
  ImmagineMod = Immagine.Stretch(imageWidth, imageHeight, TRUE)
 
END

PUBLIC FUNCTION Stampa(Video AS Boolean, OPTIONAL NumPagine AS Integer, OPTIONAL Mensile AS Boolean) AS Boolean
DIM Comodo, Comodo2 AS String
DIM Descrizioni AS String[6]
DIM Aiuto AS Integer
DIM hStampa AS Process
DIM Aiuto2, Stampe AS Integer
DIM PagineStampate AS Integer
DIM NomFile AS String

  IF NumPagine <> 0 THEN
    Stampe = NumPagine
  ELSE
    Stampe = 3
  END IF  


  Printer.Copies = 1
  Printer.Name = ""
  Printer.File = Application.Path & "/stampa.ps"  
  Draw.Begin(Printer)
  WAIT
 
  FOR PagineStampate = 1 TO Stampe

    draw.Foreground = Color.Black
    draw.Background = color.White
    draw.LineWidth = 4
    draw.Font.Size = 8
    'TESTATA
    draw.Rect(300, 300, 2200, 1000)
    draw.Image(ImmagineMod, 320, 340)
(...)


Non so se il tuo problema sia simile al mio ma io mi sono accorto che se prima non adatto l'immagine alla risoluzione della stampante non ottengo nulla.
Quindi nell'evento _new della mia classe di stampa fattura carico e strecho l'immagine e la assegno ad un nuovo oggeto Image, che  poi "do in pasto" alla proprietà Image dell'oggetto Draw.

2091
Programmazione (Gambas 2) / Re: Ancora su Gridview
« il: 03 Febbraio 2008, 11:20:23 »
A me va, nel senso che si apre, si compila e parte. Poi non l'ho usato perché non conosco assolutamente i DB di Postgre
Ma che versione hai provato?
Io ho scaricato la 1.1.0.

2092
Programmazione (Gambas 2) / Re: Gridview e Tableview
« il: 03 Febbraio 2008, 11:06:26 »
Infatti ho sbagliato!
Ho invertito i nomi!

E' con la ColumnView che posso fare quello che ti ho detto, come allegato.

2093
Programmazione (Gambas 2) / Re: Controlli presenti in una form
« il: 03 Febbraio 2008, 11:00:58 »
Credo che tu debba creare prima un array di Objet in cui poi infilerai i Textbox via via che li crei.

Esemio:

Codice: [Seleziona]

' Gambas class file
PRIVATE CaselleTestuali AS NEW Object[]
PRIVATE CasellaTestuale AS TextBox

PUBLIC SUB _new()
DIM varI AS Integer
DIM varX, varY AS Integer

  varX = 48
  FOR varI = 0 TO 3
    CasellaTestuale = NEW TextBox(ME)
    CasellaTestuale.Name = "CasellaTestuale" & trim(cstr(varI)
    CasellaTestuale.X = CoordinataX+VarX
    CasellaTestuale.Y = 300
    CaselleTestuali.Add(CasellaTestuale)
    varX = varX + 50
  NEXT
END


In questa maniera CaselleTestuali[] contiene tutte le TextBox create, a cui puoi accedere con un indice, es.:
Codice: [Seleziona]

CaselleTestuali[1].Text = "Ciao"

2094
Programmazione (Gambas 2) / Re: Sqlite e Gambas
« il: 03 Febbraio 2008, 10:53:37 »
Ti consiglio un ottimo frontend, Knoda.
In genere è presente nei repo di quasi tutte le distro.
Si connette a diversi DB quali MySQL, Postgre e SQLite.
Io lo uso per creare e modificare semplicemente le tabelle dei miei DB, veramente comodo.

P.S.:
non so se ti possono tornare utili questi frammenti di codice per capire come usare le query SQL con gli oggetti Connection e Result.
Con questo salvi dei dati in una tabella:

Codice: [Seleziona]
PRIVATE SUB Salva_dati()
DIM Connessione AS NEW Connection
DIM Risultato AS Result

  '-- connetti al database
  Connessione.Name = Application.Path & "/archivio"
  Connessione.Type = "sqlite3"
  Connessione.OPEN

  '-- scelta della tabella
  Risultato = Connessione.Edit("codici", "tipo = &1", comodo)
  Risultato["nome_campo"] = Nuovovalore '-- inserimento valore nel campo
  (...)
  Risultato.Update  '-- istruzione di aggiornamento
  Connessione.Commit  '-- forza il database ad eseguire
  '-- tutte le operazioni pendenti
  Connessione.CLOSE '-- chiusura
END


Creazione di una nuova scheda anagrafica:

Codice: [Seleziona]

PRIVATE SUB Crea_dati()
DIM Connessione AS NEW Connection
DIM Risultato AS Result

  '-- connetti al database
  Connessione.Name = Application.Path & "/archivio"
  Connessione.Type = "sqlite3"
  Connessione.OPEN

  '-- salvataggio nuovo contatto
  Risultato = Connessione.Create("anagrafica")
  Risultato["codice"] = codice
  Risultato["cognome"] = txtCognome.Text
  Risultato["nome"] = txtNome.Text
  Risultato["indirizzo"] = txtIndirizzoNom.Text
  Risultato["citta"] = txtCapNom.Text
  Risultato.Update
  Connessione.Commit
  Connessione.CLOSE
END


Cerchi qualcosa? Ecco il codice:

Codice: [Seleziona]

(...)
  Connessione.Name = Application.Path & "/archivio"
  Connessione.Type = "sqlite3"
  Connessione.OPEN
  Risultato = Connessione.Find("anagrafica", "codice = &1", Codice)
  IF Risultato.Available = FALSE THEN
    Message.Info("Nessun dato trovato")
    RETURN
  ENDIF
(...)


Trova nella tabella "anagrafica" il contatto con il codice uguale a
Codice. Il database SQLite3 lo puoi creare o da console di SQLite oppure
usando ad esembio Knoda, un front-end grafico per diversi tipi di database.[/code]

2095
Programmazione (Gambas 2) / Re: Ancora su Gridview
« il: 02 Febbraio 2008, 20:54:50 »
L'ho scaricato ma non sono riuscito a lanciarlo perché non ho MySQL server sul PC.
Cmq sono tutte query in SQL. Adattarlo all'SQLite non dovrebbe essere difficile.

2096
Programmazione (Gambas 2) / Re: Gridview e Tableview
« il: 02 Febbraio 2008, 20:43:50 »
Io personalmente uso il GridView quando devo dare la possibilità agli utenti del mio gestionale di interagire con i dati.
Con la GridView posso inserire nuove righe, cancellarne di vecchie, riempirle con dati, infilarci dentro anche immagini (uso questa possibilità per la gestione dei pagamenti perché così che alla scadenza selezionata con un doppio click io applico un segno di spunto).
Il ColumnView sotto questo aspetto è meno interattivo: io lo uso solo quando devo creare una lista di elementi tra cui sceglierne uno (ad esempio una lista di clienti).

2097
Progetti degli utenti / Re: Classi orientate alle basi dei dati
« il: 02 Febbraio 2008, 20:37:17 »
Puoi pubblicare il codice in area download, così anche altri membri della comunità potranno darti una mano.
Io da parte mia posso aiutarti per quanto riguarda le query SQL.

P.S.:
ho spostato il post nella sezione "Progetti in cerca di aiuto"

2098
Progetti degli utenti / Re: Classi orientate alle basi dei dati
« il: 02 Febbraio 2008, 16:22:41 »
Se ti può servire aiuto, io ho scritto in Gambas il gestionale che usiamo dove lavoro io usando un archivio SQLite per memorizzare i dati.
La mia applicazione gestisce la creazione, la modifica e la cancellazione di campi dal DB il tutto usando gli oggetti, non usando cioè gli oggetti DataCombo, DataBrowser, DataControl ecc... Mi piace di più l'approccio con query SQL quindi usando intensivamente le classi Connection e Result.

2099
Suggerimenti e critiche / Re: Proposta x la sezione download
« il: 02 Febbraio 2008, 16:18:20 »
La proposta era interessante per cui ho provveduto a riorganizzare la sezione Downloads, creando la sottozione denominata Classi e spostando il materiale presente nella sezione Codice Gambas in una nuova sottosezione denominata Applicazioni.

P.S.:
ho spostato il tuo messaggio in questa sezione del forum, più consona ad accogliere suggerimenti e critiche dalla comunità  :amici:

2100
Sì, ma perché inglobare nel file compilato anche roba che con il bytecode di Gambas non c'incastra nulla?
Fai questa prova: prendi un file di grosse dimensioni e copialo in una cartella all'interno di quella del tuo progetto.
Ad esempio:
hai /home/pixel/gambas/prepara_caffe; mettiamo che il tuo programma compilato sia di 500 KB.

Ora crea all'interno di essa la cartella /temp e copiaci dentro un file di 50 MB.
Riapri Gambas, ricompila e ti troverai il tuo file compilato lievitato a 50,5 MB!!

Perché?
Cosa gliene frega a Gambas di inglobare le cartelle del progetto? Perché non ingloba solo i file richiesti dall'utente (ad esempio una icona per una voce del menu oppure una immagine per la proprietà Picture di un oggetto) ma mette _tutto_ dentro a prescindere?

Pagine: 1 ... 138 139 [140] 141 142