hanest Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 Alle som har forsøkt seg med PageSetupDialog vet at det er noe som er helt feil. Feilen kommer av en dobbel konvertering av marger i PageSetupDialog vist systemet er innstilt for å bruke metriske verdier. Du trenger 2 Button for å teste dette, btnSideoppsettMedFiks og btnSideoppsettUtenFiks. Dialogboksene er konstruert med kode. 'På toppen Imports System.Drawing.Printing Private Const LOCALE_IMEASURE As Integer = &HD Private Enum IMEASURE_TYPE METRISK = 0 TOMMER = 1 End Enum Private Declare Auto Function GetLocaleInfo Lib "Kernel32" ( _ ByVal lcID As Integer, _ ByVal lcType As Integer, _ ByVal lcData As String, _ ByVal lcDataLen As Integer) As Integer Private Declare Function GetUserDefaultLCID Lib "Kernel32" () As Integer Private mMargerUtenFiks As New Margins(100, 100, 100, 100) Private mMargerMedFiks As New Margins(100, 100, 100, 100) Private Sub btnSideoppsettMedFiks_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles btnSideoppsettMedFiks.Click Dim tmpPrintDok As New System.Drawing.Printing.PrintDocument tmpPrintDok.DefaultPageSettings.Margins = mMargerMedFiks Dim dlgUtskriftOppsett As New PageSetupDialog dlgUtskriftOppsett.Document = tmpPrintDok Dim lcID As Integer = GetUserDefaultLCID Dim iLcInfoLengde As Integer = 10 Dim sLcInfo As String 'Noen mener sikker jeg kunne brukt CultureInfo for å sjekke dette. 'Men det tar ikke hensyn til om du har gjort egne valg. Dim iMeasureType As IMEASURE_TYPE iMeasureType = GetLocaleInfo(lcID, LOCALE_IMEASURE, sLcInfo, iLcInfoLengde) If iMeasureType = IMEASURE_TYPE.METRISK Then dlgUtskriftOppsett.Document.DefaultPageSettings.Margins = _ PrinterUnitConvert.Convert( _ dlgUtskriftOppsett.Document.DefaultPageSettings.Margins, _ PrinterUnit.Display, _ PrinterUnit.TenthsOfAMillimeter) End If If dlgUtskriftOppsett.ShowDialog() = DialogResult.OK Then mMargerMedFiks = dlgUtskriftOppsett.PageSettings.Margins End If End Sub Private Sub btnSideoppsettUtenFiks_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles btnSideoppsettUtenFiks.Click Dim tmpPrintDok As New System.Drawing.Printing.PrintDocument tmpPrintDok.DefaultPageSettings.Margins = mMargerUtenFiks Dim dlgUtskriftOppsett As New PageSetupDialog dlgUtskriftOppsett.Document = tmpPrintDok If dlgUtskriftOppsett.ShowDialog() = DialogResult.OK Then mMargerUtenFiks = dlgUtskriftOppsett.PageSettings.Margins End If End Sub Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå