|
Тема |
Re: Печат [re: ActronB] |
|
Автор |
Щиpлиц (разузнавач) |
|
Публикувано | 24.07.06 15:17 |
|
|
Ами, понеже извеждаш данните в последователен текстов файл, аз лично бих препоръчал да вадиш данните от ФлексГрид като чисти стрингове, и да пишеш във файла с Print #1, String. Колкото до позицията на стринговете във файла - ще трябва на ръка да определяш броя интервали, с които да се запълва всяка "колона" с данни, за да се подредят. Не зная дали ще стане с табулатори, затова ти казвам с интервали, щото и без това не си уточнил за какъв принтер ще става дума. Ккато и да е. Да пробваме да видим какво ще получим...
Ще драсна примерен код с директно въведени данни, но ти просто ги вземай от ФлексГрид. ... Имайки от ФлексГрид чисти стрингове, без кавички и запетаи - можем да записваме във файла така:
Private Sub command2_click()
Dim i As Long, j As Long
Dim col(7) As Long
'Това са ширините на колоните
col(1) = 4
col(2) = 6
col(3) = 50
col(4) = 6
col(5) = 5
col(6) = 5
col(7) = 5
'Отваряме файла
Open "C:\Testfile.PRN" For Output As #1
For i = 0 To MSFlexGrid1.Rows - 1
For j = 0 To MSFlexGrid1.Cols - 1
'Записваме данните във файла
Print #1, MSFlexGrid1.TextMatrix(i, j) & Space(col(j) - Len(MSFlexGrid1.TextMatrix(i, j)));
Next j
Print #1, vbCrLf;
Next i
'Затваряме файла
Close
End Sub
Т.е. обърни внимание, че в реда, където се записва стринга във файла, съм "залепил" след стринга и интервали с функцията Space(), на която като параметър се подава число - брой интервали. За брой интервали съм изчислил от масива Col(), според предварително настроената ширина на конкретната колона минус броя на знаците, които се съдържат в дадения стринг. Т.е. ако ширината на колоната сме я указали 50 знака, а текста в нея е 23 - ще бъде изчислено число 27 - т.е. още 27 интервала, които ще бъдат добавени във файла във вид на стринг, за да се подравнят текстовете. Според вида на колоната - тези интервали може да се добавят преди или след стринга, за да се получи Left или Right подравняване. Когато се работи с принтери - може да се ползва и "Tab", но понеже си постнал само малка част от сорса - нямам представа къде и какво трябва да се получи. опитай така. Ако има разминаване - ще мислим пак.
Щирлиц
|
| |
|
|
|