1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
Delegate Function CréerFichier() As ResultatExport
Private Function ToPDF(ByVal sChemin As String, ByVal bOuvrir As Boolean) As String
ToXLS = ""
If sChemin Is Nothing Then
Dim svgDlg As New System.Windows.Forms.SaveFileDialog
svgDlg.AddExtension = True
svgDlg.Filter = "Fichiers XLS (*.xls)|*.xls"
svgDlg.FilterIndex = 1
If svgDlg.ShowDialog() = Windows.Forms.DialogResult.OK Then
sChemin = svgDlg.FileName
isiToXLS = sChemin
Else
Exit Function
End If
End If
'Ma grid c'est Me.ugvDataGrid, l'object qui doit faire l'export c'est Me.ugeExportPdf
Dim oExportToPdf As New ExportToPdf(sChemin, Me.ugvDataGrid, Me.ugeExportPdf, bOuvrir)
Dim tA As New CréerFichier(AddressOf oExportToPdf.Export)
tA.BeginInvoke(AddressOf AfficherResultat, tA)
End Function
Class ExportToPdf
Private _Chemin As String
Private _Grid As UltraGrid
Private _ugePdf As UltraWinGrid.DocumentExport.UltraGridDocumentExporter
Private _RetourExport As ResultatExport
Private _Ouvrir As Boolean = False
Public Sub New(ByVal Chemin As String, _
ByVal uGrid As UltraGrid, _
ByVal ugePdf As UltraWinGrid.DocumentExport.UltraGridDocumentExporter, _
ByVal Ouvrir As Boolean)
_Chemin = Chemin
_Ouvrir = Ouvrir
_ugePdf = ugePdf
_Grid = uGrid
End Sub
Public Function Export() As ResultatExport
Try
_ugePdf.Export(_Grid, _Chemin, DocumentExport.GridExportFileFormat.PDF)
Me._RetourExport = New ResultatExport(_Chemin, eTypeRetour.Path, _Ouvrir, Nothing)
Catch ex As Exception
Me._RetourExport = New ResultatExport(Nothing, eTypeRetour.Erreur, False, "Impossible de générer un fichier PDF, " & ex.Message)
End Try
Return Me._RetourExport
End Function
End Class
Public Sub AfficherResultat(ByVal iAr As IAsyncResult)
Dim oResultatExport As ResultatExport
Dim tA As CréerFichier
tA = CType(iAr.AsyncState, CréerFichier)
oResultatExport = tA.EndInvoke(iAr)
Invoke(ArreterPrgDelegate)
If Not (oResultatExport.Erreur Is Nothing) Then
MessageBox.Show(oResultatExport.Erreur, "Export", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
If oResultatExport.Ouvrir Then
If MessageBox.Show("Confirmez-vous l'ouverture du fichier généré?", "Export", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = DialogResult.Yes Then
'Dim t As New Thread(AddressOf oResultatExport.OuvrirFichier)
't.IsBackground = True
't.Start()
Else
MessageBox.Show("Fichier généré avec succès: " & oResultatExport.Chemin, "Export", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.Show("Fichier généré avec succès: " & oResultatExport.Chemin, "Export", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
Class ResultatExport
Private _Chemin As String
Private _TypeRetour As eTypeRetour
Private _MessageErreur As String
Private _Ouvrir As Boolean
Public Sub New(ByVal Chemin As String, _
ByVal TypeExport As eTypeRetour, _
ByVal Ouvrir As Boolean, _
ByVal Message As String)
_Chemin = Chemin
_TypeRetour = TypeExport
_Ouvrir = Ouvrir
_MessageErreur = Message
End Sub
Public ReadOnly Property Ouvrir() As Boolean
Get
Return _Ouvrir
End Get
End Property
Public ReadOnly Property TypeRetour() As eTypeRetour
Get
Return _TypeRetour
End Get
End Property
Public ReadOnly Property Erreur() As String
Get
Return _MessageErreur
End Get
End Property
Public ReadOnly Property Chemin() As String
Get
Return _Chemin
End Get
End Property
Public Sub OuvrirFichier()
If File.Exists(_Chemin) Then
Dim proc As New Process
proc.StartInfo.FileName = _Chemin
proc.Start()
End If
End Sub
End Class |
Partager