Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    VB6 Conversione da DBGRID a TRUEDBGRID

    Ciao a tutti ...
    stavo tentando una conversione della griglie , dalle obsolete MSDBGRID alle moderne TRUEOLEDBGRID .

    Il mio problema sono i forms .. circa 560 , di cui 156 con MSDBGRID.

    Mi sono costruito un applicazione che analizza i .frm per cambiare molti controlli obsoleti ma .... quando si parla di dbgrid i nomi dei campi e quant'altro sono dentro ai files .frx .
    Apparentemente illeggibili ma non è cosi .
    Quando si clicca sopra una DBGRID e si chiedono le proprietà .. vengono fuori bene .

    Qualcuno sà come estrarre i nomi dei campi delle colonne ?
    Leggere un file .frx ?
    Oppure esiste un tool che cambia le griglie in un progetto ?

    Oppure me le devo fare a mano una x una ?

    Mattia
    Mattia

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    E' un problema che ho affrontato anch'io, anche se per altri controlli (la TrueDBGrid la uso da così tanto tempo che il problema l'ho risolto da tempo ).
    Vedi ad esempio questi 2 tool:
    - http://nuke.vbcorner.net/Articoli/VB...8/Default.aspx
    - http://nuke.vbcorner.net/Tools/Updat...9/Default.aspx

    Non vorrei scoraggiarti, me queste informazioni sembrano essere illeggibili.

    Dal file FRX puoi estrarre tutte le risorse binarie di tipo:
    bmp, ico, jpg, wmf, cursori, etc...
    fuorchè quelle di tipo testo; lo so, sembra paradossale!

    Di norma, tutti i controlli in cui è prevista l'impostazione anche a design-time degli "insiemi" registrano tali informazioni nel file FRX; ciò riguarda anche ComboBox, ListBox, ecc...
    Purtroppo però non è dato sapere il formato in cui tali informazioni vengano scritte e, a quanto sembra, ogni produttore lo fa in modo proprietario, ovvero che nessuno però conosce.

    Tanto per farti un piccolo esempio, in un Form ho inserito:
    - 1 ListBox con 3 elementi (uno, due, tre)
    - 1 ComboBox con 3 elementi (uno1, due2, tre3)
    - 2 ListView (una versione CC5 e l'altra versione CC6) con 3 colonne ciascuna (one, two, three)

    Una volta letta la risorsa di testo ho ottenuto questa stringa:

       0 0 0   uno due tre   0 0 0   uno1 due2 tre3


    Se vuoi cimentarti a leggere le risorse da un file FRX guarda questo progetto del mitico Brad Martinez:
    http://btmtz.mvps.org/gfxfromfrx/

    Vedi se tu riesci a concludere qualcosa di meglio (lo spero davvero!)

    Se non riesci (come temo, visto che nemmeno Brad sembra averlo fatto) resta solo una strada: un add-in.
    Considerando infatti che queste informazioni sono impostabili a design-time,
    presumibilmente con un add-in dovrebbe essere possibile accedervi e generare il codice in modo da caricare tali impostazioni a run-time.

    Se trovi altre strade, mi piacerebbe esserne informato.


  3. #3
    Ciao Gibra ,
    grazie delle info ...
    Ti terrò' aggiornato sicuramente ... per adesso l'unica soluzione che ho trovato è ...
    convertire manualmente le griglie (un tot al giorno ... ci metterò qualche mese) .

    Se vuoi (ma immagino che con la tua preparazione non ne abbia bisogno) ,
    ho un progetto che cambia le TrueDbGrid in TrueOLEdbgrid ... oppure che cambia i recordset
    DAO in ADO (con il relativo cambio di apertura .open ... remma i .edit ecc ecc)

    Mattia
    Mattia

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da matt_vb6
    Ciao Gibra ,
    grazie delle info ...
    Ti terrò' aggiornato sicuramente ... per adesso l'unica soluzione che ho trovato è ...
    convertire manualmente le griglie (un tot al giorno ... ci metterò qualche mese) .
    Non vuoi provare con un add-in? Io ci farei un pensierino...
    Non è poi così difficile creare un add-in, ed una volta fatto lo hai disponibile per qualsiasi altro componente.
    Se non hai mai lavorato con un add-in sappi che è un ambiente potentissimo, esattamente come lo scrivere il codice a mano, anzi di più!

    Originariamente inviato da matt_vb6
    Se vuoi (ma immagino che con la tua preparazione non ne abbia bisogno) ,
    ho un progetto che cambia le TrueDbGrid in TrueOLEdbgrid ... oppure che cambia i recordset
    DAO in ADO (con il relativo cambio di apertura .open ... remma i .edit ecc ecc)
    Non è questione di più preparazione o meno preparazione.
    E' impossibile conoscere tutto di tutto in qualsiasi ramo della programmazione che è iper-vastissimo ed in continuo mutamento.
    Comunque ti ringrazio, ma fortunatamente
    - DAO l'ho abbandonato subito, appena uscì ADO
    - non ho mai usato la TrueDBGrid ma sempre e solo la TrueOleDBGrid.

    Però puoi renderli disponibili al pubblico, sono sicuro che molti ne sarebbero contenti, soprattutto quello per migrare da DAO ad ADO.


  5. #5
    Va bene ... ci provo , ma credo di aver già bisogno di una mano ...
    Ad esempio , voglio l'elenco di tutti i forms presenti nell'applicazione (per valutare se ci siano o meno i controlli da cambiare )... e qui sorge il primo problema: pare che VB non ti dia i nomi dei forms a meno che non siano caricati .
    Allora bisognerebbe caricare i forms e valutare se ci siano controlli da cambiare.. secondo problema : non si riesce ad elencare i forms presenti in un progetto (possibile?) .

    Allora son riuscito a fare l'elenco dei form di un progetto (in un file esterno.txt) che hanno dei controlli che voglio sostituire (cercando direttamente nei.frm) ma ... terzo problema : non puoi caricare un form usando una variabile .

    Cioè se tu sai che il form è frmElencoRiba.frm .... non puoi (possibile?) caricare il form usando :

    dim Myfrm as Form ,NomeForm as string

    NomeForm ="FrmElencoRiba" (stringa)

    set Myfrm = NomeForm ( o settaggi simili.. niente da fare)

    Se hai qualche idea sulla soluzione dei primi due problemi potrebbe essere un grosso passo in avanti ...
    Mattia

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da matt_vb6
    Va bene ... ci provo , ma credo di aver già bisogno di una mano ...
    OK.

    Originariamente inviato da matt_vb6
    Ad esempio , voglio l'elenco di tutti i forms presenti nell'applicazione (per valutare se ci siano o meno i controlli da cambiare )... e qui sorge il primo problema: pare che VB non ti dia i nomi dei forms a meno che non siano caricati .
    Assolutamente falso.
    Tieni sempre a mente questo concetto:
    L'Extensibility2 (che è l' 'ambiente' in cui opera un add-in) è come avere un programmatore che fa in automatico TUTTO quello che puoi fare manualmente.
    Anzi lo fa meglio, perchè lui ha accesso a qualsiasi oggetto, proprietà metodo, ecc. del progetto.
    Quindi, in concreto, qualsiasi cosa tu riesca a fare manualmente a design-time, l'add-in la può fare automaticamente, basta dargli le istruzioni corrette.
    Puoi creare, distruggere, gestire: Form, metodi (Sub o Function), proprietà, menu, aggiungere qualsiasi file, componente, riferimento, ecc. al progetto, rimuoverli, ecc.
    Già solo da questo è intuibile la potenza di un add-in!
    Per contro, un'add-in NON può essere eseguito a run-time. Ma ovviamente se lo facesse sarebbe un controsenso, perchè non è questo il suo scopo.


    Originariamente inviato da matt_vb6
    Allora bisognerebbe caricare i forms e valutare se ci siano controlli da cambiare.. secondo problema : non si riesce ad elencare i forms presenti in un progetto (possibile?) .
    Si riesce, si riesce...


    Originariamente inviato da matt_vb6
    Allora son riuscito a fare l'elenco dei form di un progetto (in un file esterno.txt) che hanno dei controlli che voglio sostituire (cercando direttamente nei.frm) ma ... terzo problema : non puoi caricare un form usando una variabile .

    Cioè se tu sai che il form è frmElencoRiba.frm .... non puoi (possibile?) caricare il form usando :

    dim Myfrm as Form ,NomeForm as string

    NomeForm ="FrmElencoRiba" (stringa)

    set Myfrm = NomeForm ( o settaggi simili.. niente da fare)
    Consentimi di fermarti: niente di tutto questo.
    Intuisco che non conosci molto questo 'ambiente'...

    L'Extensibility2 è un'ambiente a sé stante (dal nome stesso si evince: è un'estensione del linguaggio VB) che possiede propri Metodi e Proprietà i quali funzionano ed interagiscono con tutti gli oggetti dell'IDE di VB6, incluso il progetto caricato.
    Quindi devi prendere prima confidenza con questo linguaggio che, come dicevo è potentissimo.

    Originariamente inviato da matt_vb6
    Se hai qualche idea sulla soluzione dei primi due problemi potrebbe essere un grosso passo in avanti ...
    Ti darò di più, ti fornirò il sorgente di un'add-in e ti spiego cosa fa, così capirai meglio:

    Il mio primo add-in che (sviluppai per prova) aveva l'obiettivo di analizzare il progetto caricato ed aggiungervi la gestione multi-lingua, perchè volevo implementarla nei miei progetti. Ovviamente farlo a mano.... e torniamo al discorso già fatto.

    Hai presente come vengono gestite le traduzioni in lingua di molti programmi freeware/sharewere?
    Per ogni lingua esiste un file (di solito in formato INI) ed il programma mostra la lingua scelta dall'utente prelevando le stringhe localizzate dal relativo file INI (english.ini, italian.ini, france.ini, ecc...).
    Qualsiasi utente può quindi prendere il file di riferimento (di solito english.ini) e crearsi il proprio file con le stringhe tradotte.

    Bene, implementare la gestione in lingua è relativamente semplice in un NUOVO progetto perchè è sufficiente impostarne la gestione in modo adeguato.
    Ma aggiungerla in un progetto esistente richiede un lavoro immane, perchè occorre andare a modificare tutte le stringhe del progetto a mano!
    Quindi è un po' quello che ti prefiggi tu...

    Per sommi capi, il mio add-in esegue quanto segue:
    - aggiunge al progetto un modulo BAS che contiene le routine già preposte alla gestione della lingua

    - cerca le stringhe all'interno di tutti i file (scelti dallo sviluppatore) e le sostituisce con un chiamata alla routine apposita che va a leggere la stringa tradotta

    - salva le stringhe in un file INI
    Vengono creati 2 file INI speculari: ITA.ini e ENG.ini, così che lo sviluppatore può andare a tardurre qualche stringa nel file ENG.ini e testare immediatamente il suo progetto.

    - esiste anche un filtro per determinare quali stringhe vanno elaborate

    - aggiunge un nuovo form che contiene un'ImageList con tutte le bandiere di ogni lingua

    - crea anche un menu (nel form indicato dallo sviluppatore) per la selezione della lingua
    (con qualche modifica si può usare un ImageCombo ed allora mostrare anche le bandiere)

    - etc, etc, etc...

    Credo che solo da queste caratteristiche tu riesca a renderti conto delle reali potenzialità di un'add-in!
    Tra l'altro credo che tu conosca uno dei più famosi ed imperdibili (nonchè gratuito) add-in per VB6 come MZ-Tools 3 (www.mztools.com).


    L'articolo ed il codice sorgente dell'add-in li trovi qui:

    Aggiungere il supporto multi-lingue ai progetti VB
    a cura di Giorgio Brausi (pubblicato il 17/10/2002)
    Livello:Intermedio
    Come fornire i vostri progetti (e programmi) di supporto multi-lingue per consentire all'utente finale di utilizzare il vostro programma localizzato. (completo di add-in)

    http://www.visual-basic.it/articoli/gbMLS.htm

    E se vuoi dare un'occhiata ad un'altro mio add-in SaveToFolder
    http://nuke.vbcorner.net/Tools/Savet...2/Default.aspx

    E, per curiosità, a MenuCreator
    http://nuke.vbcorner.net/Tools/MenuC...1/Default.aspx




    P.S.
    Non so se sarà il caso di aprire una nuova discussione, visto che entriamo in un campo leggermente diverso

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Scusa il doppio post, ma il browser mi aveva restituito errore, quindi pensavo che il messaggio non fosse partito!


    Originariamente inviato da matt_vb6
    Va bene ... ci provo , ma credo di aver già bisogno di una mano ...


    Originariamente inviato da matt_vb6
    Ad esempio , voglio l'elenco di tutti i forms presenti nell'applicazione (per valutare se ci siano o meno i controlli da cambiare )... e qui sorge il primo problema: pare che VB non ti dia i nomi dei forms a meno che non siano caricati .
    Ti interrompo qui.
    Sei fuori strada completamente.

    Un'add-in usa un linguaggio proprio che fa parte di IDTExtensibility2 (cioè un'estensione del linguaggio VB6) quindi niente a che vedere con il normale linguaggio VB6.

    Tieni presente questo concetto:
    qualsiasi cosa tu riesca a fare 'manualmente' sul tuo progetto, la puoi far fare 'automaticamente' ad un add-in.
    Esempio:
    1. Puoi creare, aggiungere, rimuovere e modificare qualsiasi tipo di oggetto come:
    ..... Menu, Form, Riferimenti, Componenti, file

    2. Creare, aggiungere, rimuovere e modificare CODICE: Metodi e Funzioni in tutto

    In realtà, tu potresti creare un'applicazione da ZERO usando solo un add-in!


    Se nella casella dell'Indice della guida MSDN digiti 'extensibility' ti si apre un mondo inesplorato!



    Per farti capire la potenza di un add-in, ti rimando ad un mio vecchio articolo del 2002 riferito al mio primo add-in che sviluppai come esperimento per implementare il supporto multi-lingua ad un progetto VB6 (ovviamente il sorgente è incluso).
    In pratica, questo add-in analizza il progetto caricato e lo trasforma completamente aggiungendo menu, file, modificando codice, ecc...
    Credo sia un ottimo spunto di partenza per arrivare all'obiettivo che ti prefiggi.

    Aggiungere il supporto multi-lingue ai progetti VB
    a cura di Giorgio Brausi (pubblicato il 17/10/2002)
    Livello:Intermedio
    Come fornire i vostri progetti (e programmi) di supporto multi-lingue per consentire all'utente finale di utilizzare il vostro programma localizzato. (completo di add-in)
    http://www.visual-basic.it/articoli/gbMLS.htm

    Vedrai che puoi molto di più di quello che credi...

    Ecco ad esempio altri miei add-in :

    Save To Folder
    http://nuke.vbcorner.net/Tools/Savet...2/Default.aspx

    MenuCreator (crea menu e cattura menu da altri applicazioni!)
    http://nuke.vbcorner.net/Tools/MenuC...1/Default.aspx


  8. #8
    Incredibile come ci sia una vastità impressionante di cose da imparare ...
    Appena ne approfondisci una ti rendi conto che ramifica il altri mille e mille approfondimenti .
    Non avevo mai provato a programmare gli ADD-IN ma se riusciamo a sviluppare questo che cambia un controllo con un altro penso faremmo felici molti utenti del forum (E non solo loro) , penso che Francesco Balena (massima autorità italiana della migrazione .net ) lo voglia subito (le migrazioni a net spesso non trasferiscono un controllo).

    Vado subito a imparare i primi passi ....
    Mattia

  9. #9
    RAGAZZI HO RISOLTO ( e lasciatemelo gridare !!!)

    Per quelli come me che hanno progetti che superano le 50 finestre con altrettante grid
    da oggi possono convertire in POCHI MINUTI le vecchie grid a quelle TrueDBGRID .

    Pensate che il tool esisteva già ed è distribuito da Component One .

    Volete ridere ?
    Mi sono iscritto al forum di ComponentOne e li ho anche contattati a voce per la questione
    delle griglie e loro cosa mi hanno risposto ???

    "Mi dispiace molto ma ad oggi non esiste un utility del genere" ....

    Invece c'è eccome ... ed è la loroooooo (ma che figura di MMMmmmmm) .

    Allora , l'utility in questione è nella loro installazione di Component One Studio Active X , io l'ho trovata per pura casualità quando Gibra mi aveva spiegato come creare l'add in e giustamente dicendomi : "se ti serve cosi tanto fallo da te ...." e mi ha spiegato come fare .

    Adesso , il senso di tutta la tiritera che ho scritto è che : se qualcuno la volesse , dovrebbe spiegarmi come estrarre l' add in e distribuirla qui (credo sia freeware , anche perchè poi per usarla devi avere la truedbgrid registrata) . Altrimenti la soluzione è avere Component One Studio ........
    Allego le foto
    Immagini allegate Immagini allegate
    Mattia

  10. #10
    p.s. Converte da qualunque grid alla TrueDbgrid8 .

    Cioè riconosce le grid che avete installato e magicamente compaiono nel box a sinistra .
    Quindi se avete problemi dalla 7 alla 8 o similari risucite a convertire tutto .
    Mattia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.