Personalizzare Form contenuta in DLL

venerdì 30 dicembre 2011 - 13.22
Tag Elenco Tags  VB.NET  |  .NET 4.0

luka82 Profilo | Junior Member

Ho una form generica(con delle TextBox, Combo, DataGridView, ecc..) inserita in una DLL e da ogni applicazione mi visualizzo questa form che ha i suoi metodi di salvataggio, caricamento dati, ecc... adesso mi si poneva un problema:
ogni cliente al quale distribuisco l'applicazione potrebbe aver bisogno di inserire un bottone che richiami un'altra form, una DG, piuttosto che una TextBox sulla mia form generica che ho nella DLL. Secondo voi come potrei meglio gestire tale situazione? magari i controlli potrei inserirli facilmente a RunTime ma poi i metodi di caricamento, salvataggio, verifica dei dati inseriti... come faccio a dirgli di andare a salvare(o caricare...) anche i dati dei nuovi campi inseriti nella Form?
O diventa troppo ingarbugliata la cosa?

Ciao

Jeremy Profilo | Guru

Ciao Luca
Non credo di aver capito bene il problema.
Perchè dovresti caricare i controlli a runtime(ad ogni modo la soluzione ci sarebbe)? Come fai poi a gestirne la posizione se l'utente decide di inserirne di nuovi?
Se spieghi meglio, forse riusciamo ad aiutarti in modo più efficace.
Facci sapere. . . .
Ciao.

luka82 Profilo | Junior Member

Il "problema" è sorto con la form che ho creato per l'anagrafica clienti che ha tutta una serie di campi validi per tutti i clienti a cui distribuisco le varie applicazioni(anche diverse). Nel momento in cui un cliente mi chiede di aggiungere un campo(che può essere una Txt, una Combo, un TabControl con altri campi...) che serve solo per una sua questione di personalizzazione della finestra che faccio?
Non posso aggiungere i suddetti direttamente nella DLL perché altrimenti li vedrebbero tutti gli utilizzatori della DLL. Perciò pensavo di aggiungerli a Run-Time dal programma che utilizza la DLL, solo che poi avrei problemi, come dicevo, con il salvataggio, caricamento ec...
Spero di aver reso meglio l'idea.

Jeremy Profilo | Guru

Ciao Luca.
La situazione è leggermente più chiara, ma continuo a non condividere il problema.
Forse non ti è abbastanza chiaro il concetto di DLL in quanto "Libreria" di oggetti(nel caso specifico(almeno credo)).
Anche se tu caricassi i controlli a run-time, il codice dove lo scrivi? sempre nello UserControl? ed allora? cosa cambierebbe?

Io, ad ogni modo, ti posso dire come fare a gestire l'aggiunta di un controllo a run-time ma credo che non risolva il tuo problema.
ecco il codice:

Private NewButton as New Button Private Form_Load() handles me.load Me.Controls.add(NewButton) 'TODO: Gestire la posizione addhandler NewButton.click, addressof TuoMetodo end sub private sub TuoMetodo 'TODO:Codice che verrà eseguito al click del button end sub

Ad ogni modo, se non fosse quello che ti serviva, rimango a disposizione per ulteriori info.
Facci sapere....
Ciao

luka82 Profilo | Junior Member

Intanto grazie per la disponibilità.
Avevo pensato di mettere la form dell'anagrafica clienti in una DLL e richiamarla da tutte le applicazioni nelle quali mi serva la gestione dell'anagrafica clienti. Questo perché i campi di base erano sempre gli stessi. Adesso, nell'ipotesi in cui un cliente mi chieda di aggiungere una DataGridView con una vista personalizzata nella form dell'anagrafica del cliente, o comunque mi chieda di cambiare anche una sola "virgola" della form, come posso gestire, pensando di dover salvare e caricare da Db quella "virgola"?

Jeremy Profilo | Guru

Ciao Luca.
Allora...facciamo un pò di chiarezza.

>Avevo pensato di mettere la form dell'anagrafica clienti in una
>DLL e richiamarla da tutte le applicazioni nelle quali mi serva
>la gestione dell'anagrafica clienti. Questo perché i campi di
>base erano sempre gli stessi.
Appunto
>Adesso, nell'ipotesi in cui un
>cliente mi chieda di aggiungere una DataGridView con una vista
>personalizzata nella form dell'anagrafica del cliente, o comunque
>mi chieda di cambiare anche una sola "virgola" della form
vuol dire che non è più una situazione "standard".
Ed è questo il punto ..... quello che tu devi fare, è pensare alla libreria come un'insieme di funzioni ed oggetti che costituiscono una situazione standard.
Se il cliente ti chiede qualcosa di diverso, non è più una situazione standard, quindi, avrà a disposzione una versione dedicata di quella libreria o, più semplicemente, non l'avrà affatto, perchè nella tua libreria getsirai soltanto la parte di gestione dei dati e non la grafica dell'applicazione.
Oppure potresti suddividere la grafica che compone la Form AnagraficaClienti in più controlli personalizzati in modo che se il cliente ti dovesse chiedere una versione diversa di una parte della Form, il resto rimarrà "standard".
Spero di essermi spiegato
Facci sapere....
Ciao.

luka82 Profilo | Junior Member

Seguirò il tuo consiglio!
Pensando ad un caso reale, un cliente potrebbe chiedermi di voler avere nell'anagrafica del cliente l'elenco delle fatture insolute(per esempio), oppure una qualsiasi altra informazione... adesso, o metto nella DLL questo tipo di vista(delle fatture insolute) o al massimo potrò aggiungere a RunTime un bottone (nella form dell'anagrafica cliente) che mi apra un'altra Form fatta ad-hoc e che sarà autonoma.

Ciao e grazie, alla prossima.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5