Autore Topic: progetto in prova  (Letto 2355 volte)

g.paolo

  • Visitatore
progetto in prova
« il: 18 Marzo 2008, 21:37:35 »
L'aspetto di un'applicazione mi ha sempre creato problemi sull'impostazione dei colori perchè soffrendo di un leggero daltonismo non riesco ad impostare le giuste tonalità.
Per risolvere il problema, nelle applicazioni che ho realizzato, ho sempre fatto in modo che fosse l'utente a scegliere le proprie impostazioni cromatiche personalizzate.
Ho quindi provato a fare la cosa con gambas e devo dire che ne sono entusiasta, anche se mi trovo di fronte ad un comportamento anomalo che non riesco a spiegare. Vi propongo dunque il mio esempio e faccio notare che il problema si presenta nel modulo "funzioni" nella function "setta_controlli".
Impostando un breakpoint sul secondo IF che esamina se il controllo è un "panel", accade che quando il contenuto della variabile bkg_button è "&H000000&" al nuovo "controllo.backcolor" non viene assegnato il valore zero, ma rimane il valore precedente.
C'è poi il "controllo.forecolor" che non funziona affatto come dovrebbe ma anche qui non so mai se devo usare il "foregound" o il "forecolor" per cambiare il colore dei testi.
Se qualcuno di voi riesce a scoprire il problema, forse questa soluzione che voglio adottare potrebbe rendersi utile in altri progetti. Grazie

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: progetto in prova
« Risposta #1 il: 19 Marzo 2008, 21:31:48 »
Devo controllare bene i sorgenti, ad ogni modo perchè usi le stringhe per gestire i colori? Od anche, perchè usi stringe e valori in formato esadecimale ?

Sono solo domande, per capire le tue intenzioni...

A parte questo:
- per la selezione di colori c'è un oggetto chiamato ColorButton, che ti permette di aprire la classica finestra Linux per la selezioni dei colori;
- alcune funzioni utili per la gestione di oggetti colore, o per conversioni varie, esiste l'oggetto Color (credo sia per qt che per gtk).

Come ho detto, devo leggere bene il codice, comunque puoi provare a ripensarne la gestione tenendo presente l'esistenza di queste due classi...

Ti faccio sapere
Ciao

g.paolo

  • Visitatore
Re: progetto in prova
« Risposta #2 il: 19 Marzo 2008, 21:55:10 »
Grazie innanzitutto per la tua risposta.
Le mie intenzioni sono solo quelle di ottenere qualcosa che funzioni, visto che non sono un programmatore professionista ma solo un semplice dilettante, per me va bene qualunque cosa purchè funzioni.
E' chiaro che nel cimento dell'opera io mi rivolga a cose che ben conosco ( o perlomeno credo) e l'uso di oggetti strani per i quali è difficile il reperimento di informazioni, lo lascio ad un tempo più opportuno.
Per venire alla tua domanda "perchè uso le stringhe", la risposta è per me ovvia: perchè il file nel quale le memorizzo è un semplice file di testo, e ritengo forse sbagliando, di facilitarmi il compito nel successivo impiego.
La finestra di colorbutton non mi piace proprio e miravo a fare qualcosa di molto più semplice.
Quando mi dici: "esiste l'oggetto Color (credo sia per qt che per gtk)" io casco proprio dalle nuvole, perchè non immagino nemmeno quale sia la differenza tra qt e gtk.
Sono, come vedi, un grande ignorante in materia, e cerco di esserlo meno per il futuro sforzandomi a capire cose per le quali le info scarseggiano, o quando le trovi, sono ben occultate e comprensibili solo a menti linuxiane.
Sono ben felice di imparare cose nuove, sono qui per questo, e fino ad ora devo dire che mi avete fornito preziosi consigli.
Il problema nel quale mi sono imbattuto è per me proprio incomprensibile, visto che quando assegno un valore ad un oggetto, qualche volta funziona ed altre no. E questo è il punto, che non so se mi trovo di fronte ad un modo sbagliato di usare il codice, o è lo stesso codice che magari ha un baco.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: progetto in prova
« Risposta #3 il: 20 Marzo 2008, 14:09:28 »
Citazione
C'è poi il "controllo.forecolor" che non funziona affatto come dovrebbe ma anche qui non so mai se devo usare il "foregound" o il "forecolor" per cambiare il colore dei testi.


in teoria forecolor e foreground sono esattamente la stessa cosa io solitamente uso foreground.
Citazione
esiste l'oggetto Color (credo sia per qt che per gtk).


color esiste sia per gtk che qt  in fratica ti permette di definere i colori tramite nome, del tipo

Codice: [Seleziona]
Fmain.foreground=color.blak


Citazione
io casco proprio dalle nuvole, perchè non immagino nemmeno quale sia la differenza tra qt e gtk.



qt e gtk sono due librerie utilizzate da gambas per disegnare l' interfaccia grafica dei tuoi programmi.

l'tilizzo dell' uno o dell' altra libreria lo decidi tu quando crei un nuovo progetto gambas selezionando QT graphical application oppure Applicazione grafica GTK+.
se invece selezioni Applicazione grafica sarà gambas a scegkliere la libreria da utilizzare a seconda del tipo di desktop manager che usi sul pc(qt se usi KDE oppure gtk+ se usi gnome)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: progetto in prova
« Risposta #4 il: 20 Marzo 2008, 15:39:14 »
fsurfing ha risposto alle tue domande, ad ogni modo non preoccuparti, hai chiarito il concetto, e qui c'è gente disposta ad aiutare.

Scusa se ti ho fatto quelle domande, presumendo forse un livello di conoscenza maggiore su Gambas, per cui mi ero posto un'attimo la domanda di alcune scelte, ma non preoccuparti, una scelta o l'altra fà lo stesso, tutto dipende da cosa si vuole ottenere e il modo migliore per ottenerlo. Poi, la pratica e una migliore conoscenza del linguaggio, ti permetteranno di modificare ed eventualemente migliorare le cose.

Purtroppo, dopo la risposta di ieri sera, non ho avuto ancora modo di leggere il codice; l'avevo solo decompresso in una directory, ma poi preso dalla stanchezza me ne sono ito a dormire.

Comunque, è probabile che il comportamento anomalo sia causato da qualche piccola svista nell'interpretazione di qualche funzione utilizzata, che ti porta ad avere situazioni strane.

Appena posso ti rispondo.
Bye

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: progetto in prova
« Risposta #5 il: 20 Marzo 2008, 18:31:41 »
Citazione

l'tilizzo dell' uno o dell' altra libreria lo decidi tu quando crei un nuovo progetto gambas selezionando QT graphical application oppure Applicazione grafica GTK+.
se invece selezioni Applicazione grafica sarà gambas a scegkliere la libreria da utilizzare a seconda del tipo di desktop manager che usi sul pc(qt se usi KDE oppure gtk+ se usi gnome)


Scusa fsurfing se riprendo il tuo msg ma volevo chiarire bene le idee al nostro amico ;-)

La creazione di una "Applicazione Grafica" dice a Gambas di utilizzare come set di widget grafici il componente gb.gui, che altro non è che un mix fra i componenti gb.qt e gb.gtk. Purtroppo il creatore di Gambas, lavorando su KDE, ha sviluppato molto di più il componente gb.qt e solo negli ultimi tempi c'è stato un porting quasi completo verso il componente gb.gtk. Dico "quasi" perché non funziona proprio tutto. Una cosa che NON funziona nel modo più assoluto è la gestione della stampante mediante l'oggetto Printer. Se il tuo progetto ha bisogno della stampa, parti da subito selezionando un'applicazione gb.qt.
Visita il mio sito personale: http://www.leonardomiliani.com

g.paolo

  • Visitatore
Re: progetto in prova
« Risposta #6 il: 20 Marzo 2008, 18:33:49 »
@fsurfing
Le tue risposte sono state molto esaurienti, ed ora proverò ad usare i comandi che mi hai spiegato.

@md9327
Si, la mia conoscenza di gambas e linux è proprio del tutto inesistente direi, ma mi sono ripromesso che mai più tornerò a windows dopo tutte le arrabbiature che mi ha procurato: immagini cosa significa mettere mano al codice ogni volta che esce una nuova versione di Access solo perchè le diverse versioni hanno tra loro delle delle incompatibilità?
Con Gambas mi propongo di avere qualcosa di stabile e definitivo che non debbo più toccare se non per migliorare, e non per mettere a posto il funzionamento come mi accade con Access.
Non preoccuparti per la celerità di risposta; io non ho problemi di tempo perchè il software che voglio fare serve alla ditta di mio figlio, che per il momento è a posto finchè non dovrà aggiungere altri client nella rete.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: progetto in prova
« Risposta #7 il: 20 Marzo 2008, 20:45:20 »
Nessun problema...

Ma devo farti presente una cosa, almeno a mio parere: uso windoz per lavoro e da parecchio tempo, e prima ancora dos, cpm, e molti altri; uso anche unix e linux, ma poi a casa e per i progetti plus-ultra sono tutto su linux (figlio a parte usa windoz per giocarci...). Con linux ci gioco ormai da parecchi anni.
Diversamente da windoz, su Linux ho avuto subito una sensazione di libertà, e ho potuto subito provare con mano come è possibile mettere in pratica idee, che su windoz erano praticamente impossibili o costosissime. Ma per fare riferimento al fatto delle versioni, è vero che molti software su linux si cerca il più possibile di renderli compatibili; questo è vero rispetto ad altri software che magari girano sul tuo sistema, e vedi che tra loro non si scrociano (un pò di romano...). Ma questo non esclude che si cerca sempre di aggiornali, per cui ti puoi tranquillamente trovare nelle stesse situazioni che potresti avere su windoz. Anche con Gambas troverai gli stessi problemi, ma solo il fatto che puoi mettere le mani al codice, addirittura nei sorgenti di gambas stesso, questo ti mette sicuramente in uno stato di tranquillità in generale.
Nei vari cambi di versione sono stato più volte costretto a modificare qualche cosetta, ma non è stato mai un grosso problema.

Tutto qui.

P.S.: prometto che ora guardo il tuo codice. :-)

g.paolo

  • Visitatore
Re: progetto in prova
« Risposta #8 il: 20 Marzo 2008, 21:23:10 »
Quello che dici riguardo alla compatibilità delle versioni di gambas lo avevo già intuito, ma qualcosa mi ha sempre confortato in merito alle difficoltà oggettive di addattare il codice. Con Access dovevo letteralmente impazzire alla ricerca di informazioni "comprensibili" che mi facessero capire cosa non funzionava ed andava ritoccato, ma "sento" che sotto linux con gambas le cose saranno molto diverse!
E questo grazie a Voi!

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: progetto in prova
« Risposta #9 il: 20 Marzo 2008, 22:45:00 »
In allegato ti reinvio i tuo file e quello che ho modificato.

Ho fatto un pò di correzioni e inserito qualche nota descrittiva sui motivi, spero si comprendano.

Ho notato che con le librerie GTK ci sono dei problemi, per cui ti ho modificato l'elenco delle librerie di progetto per le QT, spero non sia un problema. Inoltre ho anche modificato alcune proprietà delle form.

Se hai qualche dubbio fammelo sapere, così lo vediamo insieme.

Ciao

g.paolo

  • Visitatore
Re: progetto in prova
« Risposta #10 il: 21 Marzo 2008, 10:02:00 »
Sei stato molto gentile a fare tutto questo lavoro!
Come tu abbia fatto a capire che le GTK hanno problemi, proprio non lo so, e forse è proprio per questo che non riuscivo ad uscire dall'inghippo in cui mi ero cacciato.

Ho notato che per il modulo _fMain, invece di aprirlo tu preferisci crearne un'istanza. Credevo che l'istanza fosse richiesta quando il modulo viene usato in occasioni multiple e magari contemporanee, e non capisco il motivo che suggerisce di usare questa soluzione.

C'è poi l'uso di # davanti al nome della variabile hfile, che talvolta c'è, altre volte no; ma a cosa serve?

Per gli sliders mi sono accorto che se non aumentavo il numero da 255 a 258 non arrivavo mai al 100% del valore, e questo non me lo spiegavo, ma forse era proprio legato a problemi delle GTK come dici.

Ho scelto la strada dell'impostazione esadecimale per i colori perchè così la lunghezza della stringa colore è sempre la stessa, mentre se avessi usato i numeri decimali mi sarei trovato con lunghezze diverse che partivano da uno fino ad otto posti, con una gestione più critica nell'estrazione delle stringhe dal file. Magari ci sono anche soluzioni più "artistiche", ma per me l'importante è che funzioni.

Ti ringrazio molto, e colgo l'occasione per augurare a te ed agli amici del forum una felice Pasqua.

g.paolo

  • Visitatore
Re: progetto in prova
« Risposta #11 il: 21 Marzo 2008, 10:45:53 »
A proposito! Un altro dubbio.
Nel codice che apre il form dei colori, crei una nuova istanza del form dichiarando una variabile "f"
Ma a cosa serve, se poi non viene richiamata in nessun luogo?
Codice: [Seleziona]
PUBLIC SUB btnlog_Click()
    DIM f AS NEW msColori 'crea la form insieme alla dichiarazione
    msColori.Center
    msColori.ShowModal   'in questo modo non hai bisogno di nascondere la form principale,
                        'perchè la nuova form non permette di agire su _fMain;
                        'all'uscita di msColori ritorni a _fMain
END

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: progetto in prova
« Risposta #12 il: 21 Marzo 2008, 11:50:30 »
Di nulla, mi ha solo incuriosito il problema e ho cercato di capire dove era... diciamo che sono molto curioso e a volte puntiglioso... :-)


Comunqu, per rispondere subito all'ultimo post, è stato un mio errore, una svista, infatti le due istruzioni sotto la dichiarazione dovevano fare riferimento a "f"... puoi fare la correzione mettendo "f" al posto di "msColori".
Pe la creazione dell'istanza i motivi sono molti, tra cui la prima è che io non uso mai la funzione "load" che, a mio avviso è pericolosa e non controllata completamente dal compilatore, la seconda è una scelta personale, dipendente da cosa voglio o non voglio fare. I miei suggerimenti sono più che altro un'altra visione di come si può scrivere il programma, cercando di controllarne il più possibile la logica; la scelta sicuramente poi è personale e data dall'esperienza, nulla di più...

Rispondo alle domande precedenti:
- il carattere "#" deriva storicamente dalla sintassi usata nel BASIC, che praticamente identifica un particolare buffer (o stream), che può essere legao ad un particolare device (in questo caso un file). In gambas, come in basic, è necessario aggiungerlo all'handle del file che stai aprendo; diciamo che può essere considerato un "Puntatore nella memoria di...".
- per gli slider, secondo me, ti sei un pò complicato la vita, dato che questi oggetti ti danno già le possibilità che richiedevi; fai attenzione alle proprietà, che ho opportunamente modificato.
- per l'esadecimale, non ci sono problemi ma, come ho scritto prima, alla fine ti sei complicato la vita, e a mio avviso ti è poi sfuggito il controllo della situazione.

Bè, è sicuro che funziona, ci ho messo le mani io ! :-)) Scherzooooo!

P.S.: se hai altre domande non ci sono problemi.

Auguroni anche te &company
Ciao

g.paolo

  • Visitatore
Re: progetto in prova
« Risposta #13 il: 21 Marzo 2008, 12:28:32 »
Ti ringrazio nuovamente, ora è tutto chiaro!

g.paolo

  • Visitatore
Re: progetto in prova
« Risposta #14 il: 23 Marzo 2008, 21:29:35 »
Da quando ho impostato le gb.qt anzichè le gb.gtk mi trovo di fronte ad un comportamento anomalo nel controllo columnview.
Praticamente, quando mi sposto nella griglia con i comando movefirst o movelast, e cerco di aggiornare la posizione a video del record selezionato con comando del tipo:

griglia.MoveFirst
griglia.Item.Selected = TRUE

non accade un bel niente, ovvero è come se il "SELECTED" venisse ignorato, cosa che con le gtk invece funzionava bene.
C'è dunque un comportamento diverso fra i due tipi di oggetto delle due librerie, ma non trovo quale comando impartire per ottenere il risultato voluto.