Newsgroup: it.comp.lang.delphi
Titolo: Form dati delphi5

Salve a tutti,
devo aggiungere ad un progetto in Delphi5 l'anteprima a video di un form dati composto da vari check, i dati provengono dal db.
In pratica se l'utilizzatore seleziona una riga da un dbgrid, leggendo i dati dal db devo creare al volo un form in formato A4 con tutte le informazioni collegate e disegnare il layout del form originale.
Con quickreport posso crearlo ma mi fa solo la preview della stampa, a me invece serve visualizzare il form a lato della dbgrid, al limite dentro un panel o image o memo.
Qualcuno ha qualche idea in merito? Spero di essere riuscito a spiegarmi.
Saluti
 
fabio

 Qualcuno ha qualche idea in merito? Spero di essere riuscito a spiegarmi.
 
In che senso "qualche idea in merito"? Stai chiedendo come programmare in Delphi?
I dati della dbGrid sono collegati mediante un datasource. E` lo stesso meccanismo che devi usare per visualizzarli in un form.

 collegate e disegnare il layout del form originale.
 
 
 
A che scopo?
 
A.

 In pratica se l'utilizzatore seleziona una riga da un dbgrid, leggendo i dati dal db devo creare al volo un form in formato A4 con tutte le informazioni collegate e disegnare il layout del form originale.
 
Non so bene a cosa potrebbe servirti, ma prendi spunto da questo "tip", dove si catturano i contenuti del desktop come immagine:
http://www.swissdelphicenter.ch/en/showcode.php?id=259
 
 
Se fai una traslazione usando come contesto il Form da catturare invece del desktop, dovresti riuscire ad acquisire una immagine dello stesso per i tuoi scopi, benché l'esigenza che ti è stata richiesta mi rimane ancora molto strana. :)
 
Ciao,
  Marco.
 
-- 
MARCO BREVEGLIERI (Software and Web Developer)
 #Home: 
http://www.marco.breveglieri.name
 
 #Blog: 
http://www.compilaquindiva.com
 
 #DelphiPodcast: 
http://www.delphipodcast.com
 


Come immaginavo non sono riuscito a spiegarmi.
Avete presente i form tipo questionario? Pieno di risposte multiple con crocette, campi testo, numerici ecc.
I valori di ogni questionario vengono registrati su db.
Con la dbgrid visualizzo il codice univoco del questionario e selezionando una riga del dbgrid devo ricreare il form del questionario con tutti i valori registrati, in modo grafico tipo quickreport.
 
Spero di essere stato più chiaro.
Grazie a tutti
 
fabio


No ti ringrazio è solo 20 anni che programmo in delphi.
;-)
 
f.

 in modo grafico tipo quickreport.
 
Qua non ho capito.
Tu devi
 
1) Creare un tform e infilarci dentro dei tedit tmemo techeckbox.. etc
2) Creare un "oggetto" di quickreport?
3) o che altro?
 
A.

Ciao Alberto,

Credo sia il punto 1.
Deve costruirsi la form andando a gestire i dati del record interessato.
Una cosa del tipo form con due pannelli, in quello a sinistra una griglia 
che visualizza il contenuto del db e a destra
una pannello con i vari edit, checkbox ecc.. settati in accordo con il 
record puntato.
Poi eventualmente deve costruirsi la stampa come e' visualizzato nel 
pannello.
 
Niente di impossibile ...... considerato che usa delphi da 20 anni.
 
Ciao
 
Daniele
 

 ;-)
 
Peggiori solo le cose.
;-)
 

 Con la dbgrid visualizzo il codice univoco del questionario e selezionando una riga del dbgrid devo ricreare il form del questionario con tutti i valori registrati, in modo grafico tipo quickreport.
 
Cioe` devi creare un panel, magari su sfondo bianco, su cui metterci delle belle label font 36pt e delle immagini contenti i quadratini barrati? 
Se, poi, il questionario deve essere interattivo, cosi` che cliccando sulle immagini, i quadratini "togglano" checked/unchecked, anche qui, un presenter che intercetta l'evento, aggiorna il model, e cambia l'immagine non mi sembra una gran difficolta`. 

Fermo restando che la struttura del db DEVE permettere un parsing delle informazioni, devi:
 
1) stabilire delle regole che ti permettano di CAPIRE in base al tipo di domanda se serve una checkbox,un radiogroup, una checklistbox o un memo. 
Altri onestamente non me ne vengono in mente.
 
2) Avendo le regole al punto 1, cicli sulle domande.
Per ognuna di esse crei a runtime l'oggetto visuale corretto.
Questo ogetto visuale avrà il form contenitore sia come owner che come parent.
 
3)
Io creerei una classe del tipo TCustomQuestionDescriptor
Questa classe accetta come parametro del costruttore un record (ipotizzando che ci sia un record per una domanda...) letto dal db.
Poi, crei n discendenti di questa classe, uno per tipo di editor (vedi punto 1).
Quindi avrei TCheckBoxQuestionDescriptor, TMemoQuestionDescriptor et similia.
 
Avrai poi una classe collection di questi elementi (TCustomQuestionDescriptrList e una classe manager.
Questa  classe manager avrà almeno 2 property:
 
1) una istanza form. Nota che il form NON LO CREA IL MANAGER.
2) una istanza di classe TCustomQuestionDescriptrList 
 
Infine, un metodo execute che cicla sulla collection, ti crea gli oggetti visuali. Infine, basta mostrare il form.
 
Non è cosi complicato. La rottura dal mio punto di vista è sopratutto la logica per calcolare le posizioni e le dimensioni degli  oggetti visuali.
 
Tutto questo discorso non include la gestione delle risposte.
Quella sarebbe da pensare...
 
A.

Dimenticavo: 
 
ti serve una qualche specie di class factory che "conosce" le varie classi TCustomQuestionDescriptor e, con un apposito metodo CreateDescriptor avente come parametro il record letto dal db, ti sputa fuori una istanza del discendente giusto di TCustomQuestionDescriptor.
In queste cose il costrutto "class of" rulez...! :-D
 
 
A.


Ringrazio tutti, ma credo di non essere riuscito a spiegarmi nuovamente, il form è A4 pieno zeppo di check-box testo ed altro quindi è obbligatorio che sia grafico perché si deve poter zoommare. Comunque vi ringrazio lo stesso, ho risolto.
Saluti al ng.
 
fabio

 Comunque vi ringrazio lo stesso, ho risolto.
 
Ok..Ma sarebbe carino, secondo me, condividere non il codice ma l'idea..
 
A.