Domanda

Prima di tutto, poiché sto usando VB6, ti preghiamo di limitare i tuoi suggerimenti gentili alle tecniche applicate a VB6.

alt text

Ho una serie di controlli correlati tra loro, come mostra la figura sopra. Include diverse treeview, una barra divisa, una visualizzazione elenco, una sottomaschera (un controllo utente) e così via

Quando faccio clic o cambio i nodi treeview a sinistra, i controlli a destra cambieranno la loro visualizzazione di conseguenza, e viceversa.

I dati dietro la scena sono mantenuti in un database di Access.

Questo set di gestione e visualizzazione dei dati viene utilizzato in diverse applicazioni. Quindi ho scritto diverse classi per implementare la logica e includere questi moduli di classi ancora e ancora nelle mie applicazioni.

Quindi in realtà sono RIUTILIZZA le mie lezioni in un " copia e incolla " modalità. Funziona ma ha problemi. Se faccio una modifica in una classe, devo cambiarla in diverse applicazioni.

In questi giorni sto pensando di trasformarli nei cosiddetti componenti ActiveX. Ma non sono sicuro che tipo di componenti ActiveX dovrei sviluppare per riutilizzare l'intera architettura.

In poche parole, voglio sapere come posso riutilizzarlo con più grazia rispetto a solo " copia e incolla " ;. Di seguito sono riportate alcune idee o aspettative del nuovo "riutilizzabile grazioso", ma non limitato a loro.

(1) Spero che sembri un controllo ActiveX che abbia una pagina delle proprietà in modo da poterne impostare alcune proprietà durante la fase di progettazione.

(2) Per diverse applicazioni, la sottomaschera a destra può visualizzare informazioni diverse e ha controlli diversi e potrebbe richiedere codifica e progettazione aggiuntive.

(3) Inoltre, potrebbe essere necessario codificare alcuni nuovi comportamenti per treeview e listview per diverse applicazioni. Questo requisito rende un controllo utente completo per l'intera forma non adatto. perché MSDN ha dichiarato che i riferimenti ai controlli ActiveX , non devono mai essere restituiti alle applicazioni client? "

È stato utile?

Soluzione

  • Crea una DLL ActiveX (non controllo)
  • Definisci un'interfaccia per il modulo in
    la DLL
  • Sposta tutta la tua logica in una o più classi nella DLL e far interagire le routine con il modulo attraverso l'interfaccia
  • Implementa l'interfaccia nel modulo
  • Una inizializzazione dell'app ha il modulo si registra con la DLL ActiveX

Questo eliminerà efficacemente copia e incolla tra le diverse app.

Ad esempio, per la mia applicazione di taglio dei metalli, ho una forma forma, una classe forma schermo e un gruppo di classi forma. Due dei metodi della classe shape sono DrawScreen che ha parametri di tipo ShapeScreen e GetValues ??che ha anche un parametro di tipo ShapeScreen.

DrawScreen utilizza il metodo di ShapeScreen per impostare la schermata di immissione e Shape Screen per impostare il modulo tramite l'interfaccia IShapeForm. GetValues ??utilizza i metodi Shape Screen per ottenere i valori di forma immessi che a loro volta utilizzano IShapeForm per ottenere i valori dal modulo.

Questa configurazione si è rivelata utile quando abbiamo dovuto sviluppare diversi moduli di immissione delle forme in risposta alle richieste dei clienti. Il nuovo modulo ha appena implementato l'interfaccia IShapeForm e il resto del software è rimasto intatto.

Altri suggerimenti

Forse dovrei incapsulare ciascuno dei controlli in un controllo utente e quindi creare un controllo ActiveX virtuale (senza interfaccia visiva) per organizzare questi controlli in un elemento unito.

Sembra che ciò che hai sia una vista, una logica di dominio e dati. Il tuo problema principale che prevedo è il secondo elemento, non è statico nell'aspetto e nella logica da un'app all'altra. Forse hai bisogno di due controlli separati? Pannello sinistro e pannello destro. Il pannello di destra probabilmente implementerà un certo tipo di controlli, dal momento che non saranno statici.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top