Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Report σε LPT Dot-Matrix.

Îåêßíçóå áðü ôï ìÝëïò Τάσκος Γιώργος. Τελευταία δημοσίευση από το μέλος Τάσκος Γιώργος στις 22-02-2010, 15:33. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-02-2010, 16:50 57213

    Report σε LPT Dot-Matrix.

    Τελευταία είδα λίγο το Reporting και έβγαλα ένα σενάριο που έβαλα σαν παιχνίδι.
    Έχω μια απορία και δεν έχω πρόχειρο DotMatrix εκτυπωτή να το δοκιμάσω, ίσως κάποιος μπορεί να με διαφωτίσει.
    Μπορείς το ίδιο report να το τυπώσεις όπως τυπώνεται σε Laser/InkJet και σε LPT DotMatrix εκτυπωτή?
    Δηλαδή το WYSIWYG (What You See Is What You Get) ισχύει και σε αυτή την περίπτωση? Αν όχι ποιος είναι ο δρόμος
    που ακολουθείς στην περίπτωση που κάποιος θέλει να τυπώσει σε τέτοιο τύπο εκτυπωτή, πιθανώς γιατί το έντυπό του υπάρχει
    και χρησιμοποιεί αυτή την μέθοδο?

    Ευχαριστώ.



    Δημοσίευση στην κατηγορία:
  •  22-02-2010, 10:49 57243 σε απάντηση της 57213

    Απ: Report σε LPT Dot-Matrix.

    ελα george δεν ξερω αν εκανες κατι πανω σε αυτο που λεγαμε στο msn αλλα δεν βλεπω εδω να περνεις απαντηση διοτι και θες εκτυπωτη φυσικα και ειναι μεγαλη κουβεντα, οποτε δες αν αυτο πού εχω κανει μπορει να σε βολεψει, μπορεις να το φερεις στα μετρα σου φυσικα.

    γενικα τι κανει? στελνεις ενα devexpressgridviewcontrol και ενα filepath c:\mytextfile.txt,  και αυτο θα υπολογισει αναλογα το πλατος καθε στηλης και το οριο που εχεις θεσει ως μεγιστο αριθμο χαρακτηρων (διοτι αυτο ειναι σημαντικο για dotmatrix) και θα σου βγαλει σε txt αυτο που θες, ωστε μετα να το προοθησεις σε εναν εκτυπωτη μεσω printdialog ή οπως θες.

    δεν ειναι φορμα εκτυπωσεις-τιμολογιο, απλα ενα report μια λιστα που μπορει να θελει να τυπωσει σε dotmatrix, τωρα κατι παρομοι μπορεις να παρεις ιδεες και να φτιαξεις για xtrareportdesigner.

    ξαναλεω δεν ξερω αν ειναι αυτο που θες αλλα μπορει να παρεις μια ιδεα.Smile

    VB.net
    Public OptionsDOS_MaxRowCharacters As Integer = 100
        Public OptionsDOS_Encoding As System.Text.Encoding = System.Text.Encoding.Default
        Public Function GRID2DOS(ByRef GV As Views.Grid.GridView, ByVal FilePath As String)
    
            Dim TotalColumns As Integer = GV.Columns.Count
            Dim TotalColumnsWidth As Integer
            For c As Integer = 0 To GV.Columns.Count - 1
                TotalColumnsWidth += GV.Columns(c).Width
            Next
            OptionsDOS_MaxRowCharacters = OptionsDOS_MaxRowCharacters - (GV.Columns.Count - 1)
    
            Dim MyText As String = ""
    
            'one for the Captions
            For i1 As Integer = 0 To GV.Columns.Count - 1
                If GetColChars(GV.Columns(i1).Width, TotalColumnsWidth, OptionsDOS_MaxRowCharacters) < 1 Then
                    MsgBox("Προσοχή! Βρέθηκαν στήλες με μέγεθος μηδενικό. Η εξαγωγή θα τερματιστεί.", MsgBoxStyle.Exclamation, "Σφάλμα")
                    Return False
                    Exit Function
                End If
                MyText &= LSet(GV.Columns(i1).Caption & " ", GetColChars(GV.Columns(i1).Width, TotalColumnsWidth, OptionsDOS_MaxRowCharacters))
            Next
    
            'loop for the values
            For i1 As Integer = 0 To GV.DataRowCount - 1
                For i2 As Integer = 0 To GV.Columns.Count - 1
                    MyText &= GV.Columns(i2).Caption & " "
                    MyText &= LSet(GV.GetRowCellValue(i1, GV.Columns(i2).FieldName) & " ", GetColChars(GV.Columns(i2).Width, TotalColumnsWidth, OptionsDOS_MaxRowCharacters))
                Next
                MyText &= Environment.NewLine
            Next
    
            'write the collected text as a file with a specific encoding
            IO.File.WriteAllText(FilePath, MyText, OptionsDOS_Encoding)
    
            Return True
        End Function
    
        Private Function GetColChars(ByVal ColWidth As Integer, ByVal TotalColumnsWidth As Integer, ByVal MaxRowCharacters As Integer) As Integer
    
            'find how many characters are needed by the column's width percent %
            Dim ColChars As Integer
            Dim colPerc As Double = ((ColWidth * 100) / TotalColumnsWidth)
            ColChars = Int((colPerc * MaxRowCharacters) / 100)
    
            Return ColChars
        End Function

    C# conversion
    public int OptionsDOS_MaxRowCharacters = 100;
    public System.Text.Encoding OptionsDOS_Encoding = System.Text.Encoding.Default;
    public object GRID2DOS(ref Views.Grid.GridView GV, string FilePath)
    {
       
        int TotalColumns = GV.Columns.Count;
        int TotalColumnsWidth = 0;
        for (int c = 0; c <= GV.Columns.Count - 1; c++) {
            TotalColumnsWidth += GV.Columns(c).Width;
        }
        OptionsDOS_MaxRowCharacters = OptionsDOS_MaxRowCharacters - (GV.Columns.Count - 1);
       
        string MyText = "";
       
        //one for the Captions
        for (int i1 = 0; i1 <= GV.Columns.Count - 1; i1++) {
            if (GetColChars(GV.Columns(i1).Width, TotalColumnsWidth, OptionsDOS_MaxRowCharacters) < 1) {
                Interaction.MsgBox("Προσοχή! Βρέθηκαν στήλες με μέγεθος μηδενικό. Η εξαγωγή θα τερματιστεί.", MsgBoxStyle.Exclamation, "Σφάλμα");
                return false;
                return;
            }
            MyText += Strings.LSet(GV.Columns(i1).Caption + " ", GetColChars(GV.Columns(i1).Width, TotalColumnsWidth, OptionsDOS_MaxRowCharacters));
        }
       
        //loop for the values
        for (int i1 = 0; i1 <= GV.DataRowCount - 1; i1++) {
            for (int i2 = 0; i2 <= GV.Columns.Count - 1; i2++) {
                MyText += GV.Columns(i2).Caption + " ";
                MyText += Strings.LSet(GV.GetRowCellValue(i1, GV.Columns(i2).FieldName) + " ", GetColChars(GV.Columns(i2).Width, TotalColumnsWidth, OptionsDOS_MaxRowCharacters));
            }
            MyText += Environment.NewLine;
        }
       
        //write the collected text as a file with a specific encoding
        IO.File.WriteAllText(FilePath, MyText, OptionsDOS_Encoding);
       
        return true;
    }
    private int GetColChars(int ColWidth, int TotalColumnsWidth, int MaxRowCharacters)
    {
       
        //find how many characters are needed by the column's width percent %
        int ColChars = 0;
        double colPerc = ((ColWidth * 100) / TotalColumnsWidth);
        ColChars = Conversion.Int((colPerc * MaxRowCharacters) / 100);
       
        return ColChars;
    }


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  22-02-2010, 15:33 57260 σε απάντηση της 57243

    Απ: Report σε LPT Dot-Matrix.

    Ευχαριστώ για τον χρόνο σου johnny, αλλά μάλλον θα πρέπει να έχουμε ένα εκτυπωτή για να το δούμε. :)



Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems