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.


Topics - perseo

Pagine: [1] 2
1
Programmazione / Problemi con Dialog
« il: 27 Dicembre 2010, 15:03:13 »
Non so se capita anche a voi o è solo un mio problema...
Quando richiamo un Dialog (nel mio caso SelectDirectory) la finestra del dialog a volte (quasi sempre alla secondo apertura) rimane bloccata.
La cosa si verifica con Gambas3 in ambiente Gnome. Dal momento che nel Wiki ho letto che Dialog è uno "static methods used to call KDE standard dialog boxes" non capisco se è un problema di conflitti con Gnome, oppure se è un BUG di Gambas3 che cercheranno di risolvere.

Se il problema dipendesse da KDE cosa mi consigliate in ambiente GNOME? Devo crearmi un mio_form (in stile Dialog) usando il componente FileChooser per caricare/salvare i file (oppure avrei problemi comunque)?

PS. in pratica quando apro il Dialog (per la seconda volta) la finestra s'impalla. La stessa cosa succedeva quando usavo l'Install-component di milio, quando aprivo la finestra di dialogo per ricercare il componente...

2
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Vi è mai capitato?
A me è comparso ieri per la prima volta... poi, non so come, dopo diversi tentativi sono riuscito a connettermi di nuovo al server di mysql.

Oggi è comparso di nuovo, ma stavolta non c'è verso! Ho seguito mille HowTo, ma niente... Non riesco a risolverlo.

Spero in un vostro consiglio o aiuto!  :hatecomputer:  :hard:

3
Programmazione / [RISOLTO] Strano errore sul modulo di avvio
« il: 19 Dicembre 2010, 02:02:53 »
Non capisco dove sia l'errore...
Seguendo il GOSH di fsurfing, anch'io faccio partire il mio progetto da un modulo di avvio.
Nella main di avvio richiamo una function (di un altro modulo) che mi deve restituire un integer, per verificare lo stato del database.

Cioè se nella main di avvio scrivo:
Codice: gambas [Seleziona]
IF modulo.funzione = 1 then 'fai qualcosa
--> mi da errore

Mentre invece se anziché come funzione, la richiamo come sub (senza restituzione di integer), gira correttamente.

Codice: gambas [Seleziona]
modulo.funzione
'fai qualcosa...


L'unica spiegazione che mi sono dato è che dalla main del modulo di avvio non posso richiamare funzioni di altri moduli... Ma non ci credo...  :hatecomputer:

PS. L'errore che mi restituisce nel caso la richiamo come funzione è: "Type mismatch: wanted Integer, got Function instead"  :rolleyes:

4
Altri linguaggi / DB con MySQL
« il: 17 Dicembre 2010, 22:50:59 »
Ciao ragazzi,

ormai con il mio programma gestionale sono a buon punto... Mi mancano un bel po' Forms, ma il grosso è fatto.
Tant'è che sto già dando un'occhiata alla riscrittura/pulizia delle routine e moduli di base.

Volevo anche rivedere un attimino la struttura di base del Database MySQL. Ci sono alcune cose che non mi sono del tutto chiare.
Qualcuno potrebbe spiegarmi l'importanza di scegliere il corretto Charset delle tabelle?
Ho notato che MySQL usa come predefinito per i campi di testo il formato cp1252... Secondo voi, dovendo usare il DB sotto Linux, è meglio se lo correggo in UFT-8?
Che differenza c'è tra i due? In termini di memoria, di velocità, ecc.

Non ci capisco molto di DB. Quindi mi farebbe piacere un vostro consiglio.  :)

Che succede quando mando in stampa dei dati di tabelle di MySQL, impostate a UTF-8, attraverso PDF-Writer, che ha i font impostati sul cp1252?

Grazie a tutti!  :)

PS. in rari casi ho la necessità di inserire dei caratteri in greco (alfa, beta, gamma, ecc.)...

5
Programmazione / Permessi in un Gestionale
« il: 05 Dicembre 2010, 01:53:37 »
Quando tempo fa chiesi come poter gestire i permessi nel mio gestionale l'amico Dex mi dette questa risposta.

Citazione da: dex
per la tua richiesta sui profili, io nel mio progetto ho creato un form di accesso con inserimento del nome e password (ogni operatore ne ha uno) poi una volta entrato si apre il main e in un file (criptato) assegno i permessi di cio che possono o non possono fare con il programma, per alcuni utenti rendo alcune voci del menu invisibili, un solo utente (amministratore) ha accesso completo al programma.

Ora che ho qualche conoscenza in più di prima, mi piacerebbe capire come poter assegnare questi permessi.

Se ad esempio seguissi il consiglio di Dex come potrei ragionare il file criptato (come si cripta un file?) e quali informazioni ci metto dentro? Cioè come faccio a far capire a Gambas che quell'utente può cliccare su un pulsante, oppure come rendere invisibili altri, ecc...

E' una configurazione che devo fare nell' Form_open attraverso dei select case o if ... then? Cioè, ogni Form si apre in base ai permessi della persona che lo ha aperto.

L'idea è interessante, però stavo pensando che in questo modo, se volessi cambiare utente in corso, ad esempio da "Admin" ad "User" (dove "Admin" ha tutti i permessi, mentre "User" no) dovrei anche far chiudere tutte le Forms rimaste aperte che User non potrebbe aprire (considerando che il mio gestionale è incentrato su un WorkSpace principale...)  :-\


6
Programmazione / Stringa di lunghezza fissa
« il: 03 Dicembre 2010, 20:10:38 »
Oggi mi sono trovato di fronte ad un nuovo quesito.

Devo inserire in un file di testo, di cui ciascuna riga è la concatenazione di stringhe a lunghezza fissa...
Ad esempio:
Num_di_riga(7 caratteri) + Cognome (30 caratteri) + Nome (20 charatteri)...

Ogni campo deve quindi contenere quel numero stabilito di caratteri, sia se la variabile è più corta sia più lunga.

Pensavo di usare: Format(NumRiga, "0000000") + Left(Cognome, 30) + Left (Nome, 20)...

Però quando sono andato a vedere il risultato con un carattere "Monospace", ma se il Cognome o il Nome sono più corti... allora Left non ha effetto, e la variabile viene troncata.

A questo punto ho risolto molto barbaramente aggiungendo per ogni campo n_spazi con space(n) ad ogni variabile... così Left trova delle stringhe più lunghe e le mozza...
Format(NumRiga, "0000000") + Left(Cognome & space(30), 30) + Left (Nome & space(20), 20)...

Così funziona... però ero curioso di sapere se esiste una funzione che imposti direttamente la lunghezza di una stringa sia che la variabile dentro sia più piccola o che sia più lunga...

PS. avrei potuto risolvere più elegantemente anche con una funzione personalizzata che:
a) in caso la variabile sia di lunghezza inferiore alla fissa, calcola la lunghezza della differenza tra fissa e variabile, e la aggiunge in numero di spazi esatti
b) in caso la variabile sia di lunghezza superiore alla fissa, la tagli con Left.
c) in caso di uguaglianza non fa nulla.

Ma non l'ho fatta perché non so se in termini di tempo di calcolo appesantisco il programma... Considerando che possono essere 2000-3000 righe di 250 caratteri ciascuna.

7
Programmazione / Barcode
« il: 30 Novembre 2010, 11:50:04 »
Come da oggetto avrei la necessità (se fosse possibile) di generare delle etichette personalizzate, con il relativo BarCode.

Ho visto tra gli esempi il codice scritto da Benoit, Barcode 0.0.3 (arrivato alla release 0.0.5), che lo permette...

Però quando tento di stampare il barcode generato il programma mi restituisce un errore:

Citazione
ERROR: "Not Drawable Object"
in Class Fmain at line 60.

La linea di codice è questa...

Codice: vb [Seleziona]
Draw.Begin(printer)


A questo punto non mi rendo conto se dipenda da g3, perché ho testato su g2 un'applicazione fatta in g2 che ha "dichiaratamente" preso il modulo per generare il barcode da quello di Benoit... e funziona perfettamente. Tant'è che l'ho stampato ed il mio barcode-scan l'ha anche letto egregiamente. E leggendo il codice, è praticamente identico a quello dove invece g3 mi va in errore...


8
Programmazione / Gambas ed SQL
« il: 29 Novembre 2010, 17:58:26 »
Ho una domanda...

Secondo voi è preferibile interagire con un database (mySQL) attraverso metodi e proprietà della classe gb.connection (EXEC, EDIT, CREATE, ...), oppure è meglio passare al metodo EXEC la "sql" in formato nativo SQL?

Mi riferisco sia alla velocità nella scrittura del codice, sia alla velocità con la quale il MySQL risponde...

Oppure è ininfluente?

Ad esempio, per inserire un record è meglio il:

Codice: vb [Seleziona]
hRes = $Conn.CREATE("nome_tabella")

hRes!Cognome = ...
hRes!Nome = ...
hRes!CF = ...
...

hRes.Update


oppure

Codice: vb [Seleziona]
sql="INSERT INTO nome_tabella ... VALUES .... ;"
hRes = $Conn.EXEC(sql)

9
Programmazione / Ciclo sui Controls di un Container
« il: 25 Novembre 2010, 19:52:29 »
Ciao a tutti,
avrei bisogno di un aiuto.

E' possibile eseguire un ciclo per avere tutti i Control che sono dentro un container (e dentro i sub-container).
Ho dei controlli "TextBox" e "TextArea" che vorrei ripulire ed ho pensato di far eseguire un ciclo del Panel che voglio ripulire anziché scrivere il codice riga per riga.

Milio mi dette un ottimo suggerimento...

Codice: vb.net [Seleziona]
Public Sub pulisci(frm As Form, Optional salta As String)
Dim txt As Control
  For Each txt In frm.Controls
    If (Object.Class(txt).Name) = "TextBox" Or (Object.Class(txt).Name) = "TextArea" Or (Object.Class(txt).Name) = "TextPro" Then
      Object.SetProperty(txt, "Text", Null)
    Endif
  Next
End


Questo ciclo mi restituisce tutti i controlli che sono nel Form...
Però mi sto accorgendo che se fosse possibile a me interesserebbe pulire solo i Controlli di un panel (e dei relativi panel_discendenti).
Ho provato ad inserire la condizionale...

If txt.Parent.Name = nome_del_panel_che_m'interessa Then...

...però così mi esclude tutti i controlli dei sotto_panel annidati. Io invece vorrei il ciclo sul panel_genitore e su tutti i suoi panel_discendenti.

Potreste aiutarmi?  :)

10
Programmazione / [Risolto]Aprire un ToolPanelContainer del ToolPanel
« il: 24 Novembre 2010, 16:51:20 »
Ciao a tutti,

come di consueto chiedo il vostro aiuto per una questione che non riesco proprio a capire.

Ho inserito nel mio progetto una MiaToolPanel composta da 4 Tool (..ToolPanelContainer).

Non capisco come fare per spostare il Focus da una TextBox1 che si trova nel Tool1, nella TextBox2 che si trova in un altro Tool2.

Ho provato con l'evento KeyPress di TextBox1 a lanciare Me.TextBox2.SetFocus... ed in effetti il focus si sposta...
però la Tool2 rimane invisibile (perché è ancora visibile la Tool1).
Se scrivo del testo infatti mi compare (e lo vedo dopo, quando con il mouse clicco sulla barra della Tool2)

Come faccio a rendere visibile la Tool2 da codice? Ho provato con Me.MiaToolPanel[1].SetFocus... o .Visible = True... ma niente.

 :hatecomputer:

PS. spero si capisca qual è il problema, altrimenti lo descrivo di nuovo.

11
Programmazione / gb.textpro
« il: 18 Novembre 2010, 19:01:24 »
Questa mia è solo una bozza... nulla di particolare... però per chi vuol realizzare un gestionale ho pensato che fosse sbrigativo avere qualcosa già di pronto. E' decisissimamente migliorabile!  ;D ...però intanto è già qualcosa...  ;)
Prima di tutto, ci tengo a precisare che senza l'aiuto di nessuno di voi non sarei riuscito a fare cose del genere da solo, e se mi permettete un ringraziamento particolare va a milio (questo componente l'ho ottenuto prendendo il codice del suo fantastico searchbox ed aggiustando dove pensavo fosse utile... quindi in pratica è come se l'avesse scritto lui... ;D ).

E' nè più nè meno una textbox, che ho chiamato textpro. Cos'ha di diverso?! Ho cercato di implementare quelle poche cose che sono in grado di fare al fine di ottenere una textbox specifica per gestionali.

1) quando prende il focus il suo background diventa giallo, e quando lo rilascia torna a default.
2) si può settare il formato dei caratteri (con la proprietà integer Case: 0 --> normale; 1 --> maiuscolo; 2 --> minuscolo; 3 --> in maiuscolo le prime lettere di ogni parola separata da spazi)
3) si può scegliere quali caratteri "text" abilitare (con la proprietà ChrType integer: 0 --> tutti; 1 --> solo testo&numeri (senza le accentate, per i CodiciFiscali); 2 --> testo&numeri&qualchesimbolo; 3 --> solo numeri; 4 --> numeri + qualche simbolo (tipo .,'-+/*)...
4) ho predisposto una serie di eventi Keypress per il tasto "return", "enter", "tab", "up", "down" ed "F1". Quindi si può eseguire del codice quando viene premuto uno di questi tasti.

Per ora è solo una bozza. Spero vi piaccia e vi sia utile.

Spero d'imparare a fare di meglio... In seguito vorrei mettere una maschera per l'inserimento di testo_obligato... e poi qualcos'altro... Ma sempre con l'aiuto di milio.  :)

12
Programmazione / Form indicizzato e variabili pubbliche
« il: 14 Novembre 2010, 00:02:58 »
Da quando sto usando il WorkSpace ho imparato che è buona prassi (anzi essenziale) indicizzare le Form figlie... al fine di avere tante copie identiche, ma ognuna distinta dall'altra dall'indice. Per indicizzare la forma uso il _new(idprogressivo as integer). Quindi avrò frm(0), frm(1), frm(2), ecc...

A questo punto però mi è sorto un problema: se apro una sub_form (in showmodal) e voglio farla interagire con le variabili pubbliche della frm(x)... devo nella form in showmodal richiamare le variabili pubbliche (che sono diventate anche loro indicizzate). Come faccio nella form in showmodal a risalire all'indice della frm(x)?

Intanto ho aggirato il problema dichiarando le variabili globali in un modulo a parte, così non ho problemi sia nella frm(x) che nella form_in_showmodal, ma se volessi evitare questo aggiramento come dovrei ragionare?  ???

PS: all'inizio le variabili pubbliche le avevo dichiarate direttamente nel form_in_showmodal... ma quando lo chiudevo per tornare all'frm(x) venivano distrutte anche loro e quindi non mi restituiva nulla... Unica soluzione era dare la proprietà .persistent = true al form_in_showmodal, ma non mi piaceva proprio...  :nono:

13
Programmazione / Differenza Sub e Function
« il: 12 Novembre 2010, 15:26:07 »
Come da oggetto ho deciso di aprire questo thread in quando io ho sempre saputo che la differenza tra SUB e FUNCTION è:

SUB --> è una routine che viene eseguita ogni qualvolta viene chiamata

FUNCTION --> è una routine che viene eseguita e restituisce un VALORE

La dicitura generica per SUB è questa...

Codice: vb.net [Seleziona]
PUBLIC/PRIVATE SUB [nome_routine]()
  ...
  ...
END


mentre per FUNCTION è così

Codice: vb.net [Seleziona]
PUBLIC/PRIVATE FUNCTION [nome_routine]() AS [Tipo_Valore_Restituito]
  ...
  ...
  RETURN Valore_Restituito
END


Scrivendo di corsa alcune routine nel mio codice però mi sono reso conto che a volte ho chiesto la restituzione di un valore ad una Sub... così:

Codice: vb.net [Seleziona]
PUBLIC/PRIVATE SUB [nome_routine]() AS [Tipo_Valore_Restituito]
  ...
  ...
  RETURN Valore_Restituito
END


Visto che il programma gira senza evidenziare errori a questo punto mi sorge una domanda. Perché il programma non mi va in errore quando chiedo un valore ad una Sub?
La distinzione tra Sub e Function è solo una questione di "scrittura ordinata" o ci sono delle differenze che io ignoro?

Grazie a tutti per i chiarimenti.  :)

14
Programmazione / Keypress e Focus
« il: 12 Novembre 2010, 12:02:47 »
Ciao a tutti.

Volevo sapere se sia possibile attraverso l'evento Keypress di una txtbox (di un gruppo "txt") di cambiare il tasto premuto con un altro. Nello specifico vorrei far avanzare la textbox al controllo successivo quando viene premuto il tasto Invio (o Return), esattamente come accade per il tasto Tab.

Ho provato a scrivere nell'evento Keypress...
If Key.Code = Key.Return Then Last.Next.Setfocus

Ma non va bene... io non voglio dare il focus ad un altro controllo, voglio solo uscire da questo passando attraverso il suo evento _LostFocus (dive c'è scritto cosa fare)... e credo che il tasto Tab funzioni così.

15
Domande tecniche / Gambas e scanner
« il: 06 Novembre 2010, 17:34:46 »
Una cosa che mi servirà in futuro...

In altrimenti a scannerizzare un documento e poi importarlo... sapete se con Gambas è possibile gestire direttamente lo scanner (per acquisire immagini)? Se sì, come?

Pagine: [1] 2