Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Creare finestra proprietà oggetti
martedì 22 novembre 2005 - 10.38
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mar 22 nov 2005 - 10:38
Ciao a tutti,
sto realizzando un ambiente grafico che gestisce alcuni oggetti fondamentali: linee, rettangoli, text e picture. Devo ora realizzare una tool window ( x questo ho già il componente che mi permette di farlo senza scervellarmi troppo ) che mostra/modifica le proprietà di un oggetto selezionato nel disegno ( tipo la finestra di proprietà in Visual Studio x intenderci ).
Avete consigli su come potrei realizzarla? Magari qualche controllo che mi può aiutare di cui nn sono a conoscenza.
Mi sembra una problematica piuttosto comune e magari qualcuno mi può dare qualche utile dritta!
Gli oggetti sono salvati su un db, io pensavo di usare una griglia (userò FlexGrid che già abbiamo) con due colonne: nome proprietà e valore.
Immagino la parte + difficile sia la creazione dinamica dei controlli x inserimento del valore ( combo, text o dialog x scelta colore etc. ).
Grazie a tutti
Salo
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 22 nov 2005 - 11:46
Ciao,
non usare FlexGrid c'è la classe PropertyGrid documentata nel Framework che rappresenta la finestra delle proprietà di Visual Studio. In questo modo la puoi utilizzare liberamente nelle tue applicazioni.
Se non ricordo male questa classe usa la Reflection per rappresentarti automaticamente le proprietà degli oggetti che costruisci.
Poi riguardo la deserializzazione degli oggetti da DB questa è tutt'altra cosa.
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mar 22 nov 2005 - 15:17
Grazie della risposta! è stato un buono spunto, sto provando e sembra quello che ho bisogno... forse.
Per poterlo usare nel mio programma però ho bisogno di 2 requisiti fondamentali:
-poter mostrare all'utente solo alcune proprietà che io gli lascio modificare; ( è quindi possibile dire al controllo di non mostrarne alcune? )
-per alcune di queste proprietà, ho bisogno che l'utente possa scegliere tra un sottoinsieme dei valori possibili.
Un'altra cosa utile potrebbe essere modificare i nomi delle proprietà, o meglio delle label con il nome ( gli utenti vorranno vedere i nomi in italiano visto che è tutto in italiano: x es. Colore Linea al posto di LyneColor )
Se è possibile fare entrambe le cose è il controllo ideale!
Solo ci sto dando un'occhiata ma ancora nn ho trovato un modo x farlo :-(
Riciao!
Matteo
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 23 nov 2005 - 15:24
>-poter mostrare all'utente solo alcune proprietà che io gli lascio
>modificare; ( è quindi possibile dire al controllo di non mostrarne
>alcune? )
Puoi marcarla come Private invece come come Public.
Questa è un'opzione.
>-per alcune di queste proprietà, ho bisogno che l'utente possa
>scegliere tra un sottoinsieme dei valori possibili.
Per questo devi creare un enumerazione (enum) di valori come per esempio la classe Color.
>Un'altra cosa utile potrebbe essere modificare i nomi delle proprietà,
>o meglio delle label con il nome ( gli utenti vorranno vedere
>i nomi in italiano visto che è tutto in italiano: x es. Colore
>Linea al posto di LyneColor )
Per questo ci sono tutta uan serie di attributi per decoreare proprietà e metodi che ti consentono di specificare il testo che appare come descrizione. Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 23 nov 2005 - 17:01
I problemi sorgono xché passo alla propertygrid l'oggetto Metadraw, un componente esterno che uso x la grafica. Esso è un contenitore di oggetti grafici le cui proprietà ( a parte quelle generali tipo dimensione area disegno ) sono relativi all'oggetto "Corrente". la proprietà current però rappresenta un puntatore e nn l'oggetto stesso. Nn riesco quindi a passare alla property grid l'oggetto linea del metadraw ( x es. ), ma il metadraw stesso il cui oggetto corrente è la linea.
Con il risultato che vedo tutte le proprietà anche nn relative alla linea ( x es. TextHAlign ) che io nn voglio mostrare.
Non posso però modificare la definizione della classe Metadraw xché è un componente esterno di cui nn ho i sorgenti.
Ovviamente non posso nemmeno modificare le enum da loro definite.
Nn so ora se sarà necessario, ma potrei, nel caso di TextHAlign che prevede i valori Top,Bottom,Center, impedire all'utente di scegliere Center x es.?
La mia situazione è la seguente: gli oggetti li ho su un db. Ora li leggo in tabelle del dataset e uso queste info x aggiungere oggetti al metadraw.
Se nn posso risolvere i problemi che ti dicevo pocanzi, dovrei creare delle classi customizzate Linee, Rettangoli, TextBox e Immagini in cui inserire i dati letti dal db ( a questo punto immagino sia meglio usare i OledbCommand.Execute giusto? ) e creare gli oggetti sul Metadraw. Usando Id come riferimento, passo l'oggetto Linea alla PropertyGrid che mostra come voglio io xché la classe la definisco come preferisco ( e le enum le faccio in italiano ).
X fare ciò c'è molto da cambiare nel codice già scritto, x quello volevo essere sicuro che sia la strada giusta...
Se mi sai dare qualsiasi tipo di consiglio, sono ben accetti!!! ;-)
Anche solo sapere se è la cosa giusta da fare...
Grazie di nuovo,
Salo
Torna su
Stanze Forum
Elenco Threads
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 !