Si può impostare la posizione di un oggetto con una formula?

venerdì 12 dicembre 2008 - 22.59

ci.ondo Profilo | Newbie

Ciao a tutti, secondo voi è possibile spostare un oggetto (un campo o una linea ecc.) impostando le nuove coordinate al verificarsi di un evento?
Mi spiego meglio : ho impostato un campo che può aumentare asseconda della lunghezza del contenuto e se aumenta di una riga vorrei spostare un'altro campo di posizione. Si può fare? A proposito uso il crystal 8. Grazie in anticipo per l'aiuto

freeteo Profilo | Guru

Ciao,
se il campo che vuoi spostare è sotto, ti basta lavorare con 2 "sotto-sezioni" della stessa sezione (dettagli,groupheader,pageheader,footer etc...) una che contenga il campo che può aumentare e quella sotto che contiene l'altro, campo o cmq oggetto che sia.

Se invece vuoi proprio farlo via formula, puoi impostare la proprietà "left" e "top" dell'elemento da codice, ma per quanto ne so io, non riesci a farlo dentro al designer del Report.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ci.ondo Profilo | Newbie

Il campo che voglio spostare è attiguo. Penso proprio che lo devo fare da codice. Tu intendi nel codice dell'applicazione? puoi darmi un'idea di come fare? Se come penso, devo inserire del codice nell'aplicazione andrà messo in un evento......E poi la proprietà left o top non si può gestire con una formula da dentro il Crystal Report?

freeteo Profilo | Guru

>Il campo che voglio spostare è attiguo. Penso proprio che lo
>devo fare da codice. Tu intendi nel codice dell'applicazione?
si intendo un codice di questo tipo:
DataTable table = new DataTable(); ... ReportDocument report = new ReportDocument(); report.Load(@"C:\...mioReport.rpt", OpenReportMethod.OpenReportByTempCopy); report.SetDataSource(dataTable); report.ReportDefinition.ReportObjects[0].Left = ###;
dove "###" è un numero, che sinceramente non ho mai capito bene cosa sia , sono sempre andato a tentativi quando ho usato questa proprieta.


>puoi darmi un'idea di come fare? Se come penso, devo inserire
>del codice nell'aplicazione andrà messo in un evento......
non c'entra l'evento, tu setti il valore della proprietà dell'oggetto e poi il report quando lo renderizza lo sposterà


>E poi la proprietà left o top non si può gestire con una formula da
>dentro il Crystal Report?
no appunto come ti dicevo


Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

ci.ondo Profilo | Newbie

Scusami ancora,
(spero sia l'ultima volta). Scrivo ancora per quel problema del riposizionamento di un oggetto da codice. Mi hai fornito un'esempio che non riesco ad applicare. Forse perchè tu usi un'altro linguaggio o un'altro crystal report....non so. Io uso Visual Basic 6 e Crystal Report 8 e, sincermante non riesco ad usare il tuo suggerimento....
DataTable table = new DataTable();
...
ReportDocument report = new ReportDocument();
report.Load(@"C:\...mioReport.rpt", OpenReportMethod.OpenReportByTempCopy);
report.SetDataSource(dataTable);

report.ReportDefinition.ReportObjects[0].Left = ###;

Io nell'evento load della finestra di anteprima all'interno del VB6 ho messo:
Dim crAPP As New CRAXDRT.Application
Dim Report As CRAXDRT.Report
On Error GoTo errante
Set Report = crAPP.OpenReport(pereport)
If Orientation <> "" Then Report.PaperOrientation = Orientation 'crLandscape
CRViewer1.ReportSource = Report
Report.RecordSelectionFormula = SFormula
CRViewer1.ViewReport
Report.DiscardSavedData

Non so....come usare il tuo codice....scusa per l'enorme ignoranza

freeteo Profilo | Guru

Ciao,
scusami ma pensavo fossi in .net, quel codice è C#, e non vb6.
Vb6 non lo uso da un po' e per quello che ho visto mi sa proprio che non è possibile farlo.

Forse potresti provare a fare un campo di testo dove tramite formula inserisci tanti spazi quanti specificati da una formula, e quindi il testo verrebbe indentato "dinamicamente".
Ma è sicuramente un accrocchio...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5