Newsgroup: it.comp.lang.visual-basic
Titolo: Qualche dritta...da dove partireste?

Ciao a tutti,
devo realizzare un progetto sw e non so ancora se farlo con VB 6 Ent oppure
con Delphi 6 Ent.
Purtroppo non conosco a fondo questi rad poichè vengo da linguaggi
completamente diversi.
Sicuramente voi mi saprete dire se in VB è possibile fare quello che ho in
mente e qual'è la strada migliore da seguire.
Mi chiedevo se era possibile con VB sviluppare una applicazione tipo
Microsoft Visio.
In pratica vorrei realizzare un semplice programma per disegnare diagrammi
(e stamparli): il programma dovrà rappresentare graficamente con forme
predefinite (rettangoli, ellissi,...tutti i simboli tipici di un diagramma a
blocchi per intenderci) dati provenienti da un db Oracle 8i.
Per recuperare i dati dal db non ci sono problemi (ho già scritto
applicazioni che dialogano con le basi di dati, remote e non),
vi volevo chiedere però come fare a disegnare le forme, dando all'utente la
possibilità di cambiare
gli attributi di queste (es. colore, spessore linee, testo inserito) e la
loro posizione (riaggiornando le linee che collegano le varie forme tra
loro).
Per sviluppare la parte grafica non so proprio da che parte
cominciare....potreste per favore darmi qualche dritta su come impostare
questo aspetto del programma, quali componenti, metodi ed eventi utilizzare,
come gestire la rappresentazione/l'interazione con l'utente/la stampa?
Mi servirebbe sapere da dove partire.....
Grazie mille per il supporto
luca
ps. una alternativa a cui avevo pensato era quella di usare Visio e di
programmarlo da VB oppure addirittura usando il VBA già inserito in esso:
purtroppo però, per diversi motivi,questa strada non + percorribile e non mi
rimane quindi di realizzare un semplicissimo Visio in casa.

 collegano le varie forme tra loro).
Si può fare tutto, ma a volte il tempo che si dovrebbe impegare è talmente
alto che conviene cercare se esiste qualche componente che risolve i
problemi per te:
Ho fatto una breve ricerca ed ho trovato questi:
http://www.lassalle.com/features.htm
http://www.componentsource.com/BuyComponents/ProductCatalog/ProductPage.asp
?
SC=Pinna&ProductOptions=4807_10X
http://www.soft-solve.com/flowchartcomponent.htm
Certo, non sono gratis, ma quello più caro costa meno di 3 giorni di
sviluppo, e per fare un lavoro come vuoi tu non ci vogliono certo 3 giorni.
Ciao
*Roby*

 sviluppo, e per fare un lavoro come vuoi tu non ci vogliono certo 3
giorni.
Sono d'accordissimo.
Tuttavia la curiosità resta...se tu dovessi impostare un problema del
genere, a grandi linee come faresti?
(immagina ad esempio di dover scrivere un componente tipo quelli che mi hai
mostrato)
Ciao e grazie mille per tutto il supporto!!
Luca

 mostrato)
Direi che il punto di partenza è una bella picturebox. :-)
Per disegnarci e scriverci sopra, usi i metodi standard. Per gestire le aree
usi le Api CreatePolygonRgn. Per vedere se l'utente clicca in un' area
spostabile, usi l'Api PtInRegion, ciclando su tutte le region che hai
attive.
Quando devi far spostare un oggetto a video all'utente, usi un'altra
picturebox (che può avere forme strane grazie all'api SetWindowRgn) su cui
copi il contenuto della region, e poi ne gestisci lo spostamento nella
mousemove. Al termine, ridisegni tutto sulla picturebox principale.
Le linee che uniscono tra di loro gli oggetti del flowchart possono essere
dei semplici controlli Line, così non devi preoccuparti di cancellarli e
ridisegnarli.
Certo, se vuoi anche delle linee curve . oppure se vuoi far ricalcolare il
path per evitare sovrapposizioni, sono cavoli amari.
Questo in teoria. In pratica ci saranno un sacco di problemi che saltano
fuori in fase di implementazione.
Ciao
*Roby*

 genere, a grandi linee come faresti?
Sto facendo una cosa del genere proprio in questo periodo (più per esercizio
che per altro), per la memorizzazione delle varie forme ho utilizzato un
sistema a classi, mentre per la visualizzazione un backbuffer (un dc creato
da codice) ed una pictureBox, come diceva Roberto. Il mio prog è in grado di
far disegnare all'utente una forma predefinita (l'ho fatto della
flessibilità adatta per aggiungerci tutte le forme che ho voglia), quindi
trattarla come un oggetto, cioè selezionarla, spostarla, cambiarne il
zorder. Inoltre è possibile creare delle relazioni tra i punti, in modo che,
come dicevi tu, spostando una forma, la linea che la collega ad un'altra si
sposti con essa. In tutto (per ora) sono 14 classi... Credimi, non è affatto
semplice farle andare tutte d'accordo :)
(per la cronaca, le api che ho usato sono: Rectangle, Ellipse, PolyLine per
il disegno, CreateCompatibleDC, CreateCompatibleBitmap, SelectObject,
DeleteObject per la gestione del backbuffer e poi tutte quelle di creazione
e gestione di brush e pen).
ciao, assa.
--
Sito Comune
http://www.it-lang-vb.net/

Grazie mille per tutto il supporto!!
Luca

 ciao, assa.
Grazie mille per il post molto interessante e molto utile.
Penso cmq che mi orienterò verso un pacchetto di terze parti già pronto,
come suggerito da Roberto.
Lo sviluppo del componente, pur fattibile, sarebbe troppo dispendioso e
finirei per dare troppo peso ad una parte che rispetto al resto
dell'applicazione è circa il 5%...cmq ero molto curioso di farmi una idea
circa la possibile realizzazione fai-da-te.
Siete stati entrambi molto gentili!!
In bocca al lupo per lo sviluppo del tuo sistema di flowcharting.
Ciao e grazie ancora!!
Luca

 ereditarieta' di VB...
pulizia tendente a 0, dovuta alle mie scarse esperienze oo... sto tentando
di leggere un 'libretto' sull'oop, sono arrivato soltanto alle regole base,
il mio prog le infrange probabilmente tutte :P


 straccio di commenti. :-)
presente.
pero' ho dovuto manutenere codice mio rispondente a tali esatte specifiche.
e sto per riscrivere un mio clipper del 91-95 non pessimo ma in cui i
commenti sono molto piu' brevi dei filenames (dos :).
j.rem.ehm

pero' ho dovuto manutenere codice mio rispondente a tali esatte specifiche.
Io aggiungo "anche" mio e "neanche tanto vecchio" :-(
-- 
ciao, hal.oops

Ti ringrazio per tutte le dritte che mi hai dato.
Mi sa che hai proprio ragione, forse in questo caso Delphi è piu'
veloce...(e come dici tu potrei risolvere la parte di accesso ai dati
affidandomi ai nuovi componenti ADO presenti in D6 Ent): devo guardarmi per
bene la Delphi Super Page!!
Grazie mille per il prezioso aiuto!
Luca

 straccio di commenti. :-)
WOW, questa si che è una bella idea....
è un po' quello che fa l'utility prettycode.print che produce la
documentazione a partire dal sorgente: solo che in questo caso, dopo aver
effettuato il parsing, dovrebbe costruire una vista grafica anzichè un
report testuale.
Tuttavia è un progetto arduo...ho visto alla prova anche il modulo di
reverse engineering da codice VB di Rational Rose: fin quando tutto è
ordinato in classi viene fuori anche una cosa bella, purtroppo quando il
codice sotto non è ordinato vengono fuori di quei diagrammi......:-)
Cmq anche io ho avuto problemi a manutenere codice da schifo e senza uno
straccio di commenti / documentazione...spesse volte però era codice scritto
proprio da me :-) che ai tempi mi sembrava documentato a sufficienza...:-))
Cmq una idea estremamente interessante!!
Ciao
Luca

 Cmq una idea estremamente interessante!!
farò del mio meglio per riuscire a relizzarla...
[domandone: non è che qualcuno ha un bel parser per codice vb già bell'è
pronto? :)]


> farò del mio meglio per riuscire a relizzarla...
in bocca al lupo!

 straccio di commenti. :-)
Alzo giusto due dita. I sorgenti erano miei, ma di svariati anni fa...
Dal VB1 (o 2, boh), li ho passati in VB5, in pochi minuti, passando
dal VB3 per la conversione in testo. NON era un programmino
semplice, tre DB in formato proprietario (record UDT), che
interagivano, con esportazione verso altri 2 formati proprietari.
Non hanno fatto una piega, e il funzionamento era perfetto.
Fare delle modifiche perņ... lasciamo perdere :-))))))))))
Bye, G.