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
Label.text da sql
domenica 10 febbraio 2008 - 20.27
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
cispolo.ppl
Profilo
| Senior Member
261
messaggi | Data Invio:
dom 10 feb 2008 - 20:27
Salve a tutti, ho un programma in vb con un database sql che viene caricato e modificato attraverso una datagridview. I miei quesiti sono:
1- devo visualizzare in un altro form una label visualizzante con un timer tutti i record (una sola colonna). Sono riuscito a visualizzare il primo record, ma come faccio a visualizzare gli altri record dopo il primo ogni 5 secondi?
2- come posso stampare la tabella del datagridview, poichè non riesco con il printdocument.
Grazie x le risposte
Massimo
hidden
Profilo
| Newbie
23
messaggi | Data Invio:
mer 13 feb 2008 - 14:37
>2- come posso stampare la tabella del datagridview, poichè non
>riesco con il printdocument.
>Grazie x le risposte
>Massimo
Con questo sitema puoi stampare ogni tipo di datagridview
N.B. KDResoconto è il nome della mia DatagridView
N.B. KDResoconto è il nome della tua datagridView
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Try
Static RigheStampate As Integer
Static PagineStampate As Integer
Static MiePagine As Integer
Dim RigheTotali As Integer = KDResoconto.Rows.Count
Dim ControllaPagine As Boolean = True
Dim Rect As Rectangle
Dim RectQuality As Rectangle
Dim ColCorrente As Integer = 0
Dim Top As Integer = 25 ' e.MarginBounds.Top
Dim Left As Integer = 25 ' e.MarginBounds.Left
Dim Height As Integer = KDResoconto.RowTemplate.Height
Dim MaxRighe As Integer = e.MarginBounds.Height / Height
Dim MaxPagine As Integer = KDResoconto.Rows.Count / MaxRighe
Dim MPX As Integer = (KDResoconto.Rows.Count \ MaxRighe) + 1
Dim BrHeader As SolidBrush = New SolidBrush(Color.Gray)
Dim Hfont As Font = KDResoconto.Font
Dim Fc As String
Dim Fr As String
For Each col As DataGridViewColumn In KDResoconto.Columns
Fc = ""
Dim ColText As String = col.HeaderText
Dim Sz As System.Drawing.SizeF = e.Graphics.MeasureString(ColText, Hfont)
While Sz.Width > col.Width
ColText = ColText.Remove(ColText.Length - 1, 1)
Sz = e.Graphics.MeasureString(ColText + "...", Hfont)
Fc = "..."
End While
Rect = New Rectangle(Left, Top, col.Width, Height)
e.Graphics.FillRectangle(BrHeader, Rect)
e.Graphics.DrawString(ColText + Fc, Hfont, Brushes.Black, Left, Top + (e.Graphics.MeasureString(ColText, Hfont).Height / 2))
Left += col.Width
If Left > e.PageBounds.Right - 25 Then
MsgBox("Attenzione i campi da stampare sono troppi e la stampa non sarà effettuata correttamente" + Chr(13) + Chr(13) + "Possibili Soluzioni:" + Chr(13) + " .Impostare la stampa in modo Orizzontale" + Chr(13) + " .Selezionare un foglio di dimensioni maggiori" + Chr(13) + " .Ridurre il numero di campi da stampare", MsgBoxStyle.Information)
Exit For
End If
Next
Dim BrRow As SolidBrush = New SolidBrush(Color.Transparent)
Dim PnRow As Pen = New Pen(Color.Black)
Dim RigaCorrente As Integer = 0
For RigaCorrente = RigheStampate To RigheStampate + MaxRighe
Left = 25 ' e.MarginBounds.Left
Top += Height
For Each col As DataGridViewColumn In KDResoconto.Columns
Fr = ""
Dim CelText As String = KDResoconto.Rows(RigaCorrente).Cells(col.Name).Value.ToString
Dim Sz As System.Drawing.SizeF = e.Graphics.MeasureString(CelText, Hfont)
While Sz.Width > col.Width
CelText = CelText.Remove(CelText.Length - 1, 1)
Sz = e.Graphics.MeasureString(CelText + "...", Hfont)
Fr = "..."
End While
Rect = New Rectangle(Left, Top, col.Width, Height)
e.Graphics.FillRectangle(BrRow, Rect)
e.Graphics.DrawRectangle(PnRow, Rect)
e.Graphics.DrawString(CelText + Fr, Hfont, Brushes.Black, Left, Top + (e.Graphics.MeasureString(CelText, Hfont).Height / 2))
Left += col.Width
Next
RigheStampate += 1
MiePagine = PagineStampate + 1
If RigheStampate >= KDResoconto.Rows.Count Then
ControllaPagine = False
e.HasMorePages = False
RigheStampate = 0
PagineStampate = 0
Exit For
End If
Next RigaCorrente
If ControllaPagine Then
PagineStampate += 1
If PagineStampate < MaxPagine Then
e.HasMorePages = True
Else
e.HasMorePages = False
RigheStampate = 0
PagineStampate = 0
End If
End If
BrHeader.Dispose()
BrRow.Dispose()
PnRow.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
In più aggiungi un pulsante e gestisci così l'evento click
Private Sub Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stampa.Click
If (KOrizzontale.Checked) Then 'CheckBox per selezionare la stampa orizzontale
PrintDocument1.DefaultPageSettings.Landscape = True
PageSetupDialog1.PageSettings.Margins.Bottom = 360
PageSetupDialog1.PageSettings.Margins.Left = 0
PageSetupDialog1.PageSettings.Margins.Right = 0
PageSetupDialog1.PageSettings.Margins.Top = 0
Else
PageSetupDialog1.PageSettings.Landscape = False
PageSetupDialog1.PageSettings.Margins.Bottom = 360
PageSetupDialog1.PageSettings.Margins.Left = 0
PageSetupDialog1.PageSettings.Margins.Right = 0
PageSetupDialog1.PageSettings.Margins.Top = 0
End If
PageSetupDialog1.ShowDialog()
PrintPreviewDialog1.WindowState = FormWindowState.Maximized
PrintPreviewDialog1.PrintPreviewControl.Zoom = 1
PrintPreviewDialog1.ShowDialog(Me)
End Sub
Se hai bisogno di altro basta chiedere.
Alexia
Profilo
| Newbie
46
messaggi | Data Invio:
lun 25 gen 2010 - 18:08
Ciao Scusami..... saresti cosi Gentile di spiegarmi una cosa??
Sto facendo un lavoretto in vb 2008 express non è cosi semplice per me xche sono mollllllllto negata....
dovrei stampare un datagridview e alcuni record sono di colorate "di azzurro " quando lo mando in stampa xò non mi vede le celle colorate... (((
il progetto l'ho preso da qui...
http://www.codeproject.com/KB/grid/PrintDataGridView.aspx
e da qui vedrai cosa e come è strutturata la mia stampa.... Te lo dico xche se mi iniziassi a fare qualche domanda strana "x me" non saprei come risponderti...(( e Tu andresti ancor di più nel pallone al mio brancolare nell'ignoto
....
sono veramente alle prime armi in questo campo...
ho lavorato con excel e il suo vba e li ci prendo abbastanza ma qui non so proprio come interagire...
Ti Ringrazio Molto....
jtpsala
Profilo
| Senior Member
206
messaggi | Data Invio:
lun 25 gen 2010 - 20:48
Per visualizzare le varie righe della tua tabella potresti utilizzare un Timer con l'Intervall impostato a 5000 (5 secondi) e all'interno gestisti il tuo TabXXXBindingSource.MoveNext...
In questo modo ogni 5 secondi il tuo XXXPatenteBindingSource si sposta in avanti di una riha per volta.
Per la stampa non so darti una mano.
Pippo
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 !