Форум: "Потрепаться";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизПечать ценников из своей программы Найти похожие ветки
← →
Layner © (2005-02-01 15:48) [0]Приветствую всех!
Есть потребность в генерации и посл. печать на принтере A4, ценников. С написанием проблем в принципе нет, не известено, как бы это реализовать.
Т.е. есть способ такой, генерю Image подложку, рисую на ней ценники, сохраняю BMP файл. Потом эти файлы надо вручную открыть и распечатать.
Ещё есть способ, воспользоваться компонентом EMS Excel Report, но он вроде бы не даст проехаться по одному рекордсету, и при этом вставить на один лист 4 колонки. Т.е. там ОДНА стока = ОДНОЙ и более строк в Excel. (Ценники должны получатся по 4 колонки на лист, может 3 или 4 ряда.)
Другие компаненты отчетов использовать не хотелось бы, хотя если кто то реализовал это с помощью компанентов, напишите, с помощью каких, и много ли работы для его "подключения". Если есть бесплатные компаненты, тоже хотелось бы их тоже узнать.
Заранее спасибо.
← →
Digitman © (2005-02-01 15:52) [1]
> С написанием проблем в принципе нет
с написанием ЧЕГО ??!!
← →
Kerk © (2005-02-01 15:53) [2]Layner © (01.02.05 15:48)
печать на принтере A4, ценников.
нифига себе ценники.. А4 !!!
← →
Prohodil Mimo © (2005-02-01 16:04) [3]Я делаю это дело так:
генерю RTF, в котором создаю TextBox-ы, или как там они называются, в каждый из них записываю нужный текст. Затем это дело открываю вордом.
Kerk © (01.02.05 15:53) [2]
Есть такие листы с наклейками порезаными по определённым размерам. Думаю о подобном идёт речь. Ну или просто бумага, а потом порезать.
← →
Alx2 © (2005-02-01 16:07) [4]>Layner © (01.02.05 15:48)
А сразу на канве принтера рисовать почему нельзя?
← →
Мазут Береговой © (2005-02-02 02:13) [5]Я недавно обращался здесь с таким вопросом. Только это были наклейки. Пришел к следующему решению:
Сделал doc файл для MS Word. Разбил и отформатировал его на две колонки (можно и на больше). Набрал текст и поустанавливал метки. Вот пример наклейки:
Наименование: #1
Продукт: #2
Производитель: #3
Таких наклеек (ценников) может быть несколько на одном листе. И все поля под "Наименованием" имеют метку #1 и так далее.
Открываю этот doc файл объектом word в свой проге, нахожу все метки #1 и заменяю на данные, например, "Молоко" и так далее.
Самый простой и удобный способ:
1. Можно сделать несколько дизайнов для одной наклейки (ценника)
2. Можно автоматизировать это все дело внеся метки, поля, названия файлов в реляционную базу данных
3. В случае изменения дизайна не надо перекомпилировать и переустанавливать прогу...
и т.д.
А вот и код, правда, написанный в Visual Basic.NET.
Private Function changeValue(ByVal W As Word.Application, ByVal Mark As String, ByVal cValue As String)
With W.Selection.Find
.ClearFormatting()
.Text = Mark
With .Replacement
.ClearFormatting()
.Text = cValue
End With
.Execute(Replace:=Word.WdReplace.wdReplaceAll)
End With
End Function
Private Function Numbering(ByVal W As Word.Application, ByVal Mark As String, ByVal vStart As Integer, ByVal vEnd As Integer) As Integer
Dim i As Integer = vStart
Dim cnt As Integer = vStart
Dim rng As Word.Range = W.Selection.Range
While W.Selection.Find.Execute(FindText:=Mark, Wrap:=Word.WdFindWrap.wdFindContinue)
rng.Select()
W.Selection.Find.Execute(FindText:=Mark, ReplaceWith:=cnt, Replace:=Word.WdReplace.wdReplaceOne)
rng.Select()
If i < vEnd Then
i += 1
cnt = i
Else
cnt = 0
End If
End While
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
Dim PageCount As Int16 = 1
Dim QtyPerPage As Int16 = 6
Dim Pages As Double = CInt(Me.txtCartons.Text) / QtyPerPage
Dim F As String = "../labelsheet.doc"
Dim appPath As String = System.AppDomain.CurrentDomain.BaseDirectory
F = appPath & "/labelsheet.doc"
PBar.Value = 0
Try
If W Is Nothing Then
W = New Word.Application
W.Visible = False
Else
W.Quit(Word.WdSaveOptions.wdDoNotSaveChanges)
W = Nothing
W = New Word.Application
W.Visible = False
End If
PBar.Value = 10
"open label file
W.Visible = False
W.Documents.Open(FileName:=F, ReadOnly:=True)
W.Visible = False
PBar.Value = 20
"make copy in memory
W.Documents.Item(1).Range.Select()
W.Selection.Range.Copy()
"get the end of document
Dim DocEnd As Int32 = W.Documents.Item(1).Content.End
PBar.Value = 25
"correct the number of pages
If Math.Floor(Pages) < Pages Then Pages = Math.Floor(Pages) + 1
While PageCount <= Pages - 1
W.Selection.Move(Word.WdUnits.wdCharacter, DocEnd)
W.Selection.Paste()
DocEnd = W.Documents.Item(1).Content.End
PageCount += 1
End While
PBar.Value = 35
"reset range of document
W.Documents.Item(1).Range.SetRange(Start:=0, End:=DocEnd)
W.Documents.Item(1).Range.Select()
W.Selection.Move(Word.WdUnits.wdCharacter, 0)
"go insert label fields into $Marks
changeValue(W, "$PO", Me.txtPO.Text)
changeValue(W, "$Country", Me.txtCountry.Text)
changeValue(W, "$LA", Me.txtLA.Text)
changeValue(W, "$Qty", Me.txtQty.Text)
changeValue(W, "$Desc", Me.txtDescr.Text)
changeValue(W, "$NN", Me.txtCartons.Text)
changeValue(W, "$CNT", Me.txtCnt.Text)
PBar.Value = 55
Numbering(W, "$N0", 1, CInt(Me.txtCartons.Text))
PBar.Value = 70
"remove selection
W.Selection.Move(Word.WdUnits.wdCharacter, DocEnd)
"send to printer
Dim printPages As String
If Pages = 1 Then
printPages = "1"
Else
printPages = "1 - " & Pages
End If
PBar.Value = 80
W.PrintOut(Background:=False, Append:=False, _
Range:=Word.WdPrintOutRange.wdPrintRangeOfPages, _
Item:=Word.WdPrintOutItem.wdPrintDocumentContent, _
Copies:="1", Pages:=printPages, _
PageType:=Word.WdPrintOutPages.wdPrintAllPages, _
PrintToFile:=False, Collate:=True, ManualDuplexPrint:=False)
Finally
"do nothing
End Try
PBar.Value = 100
End Sub
← →
Мазут Береговой © (2005-02-02 02:17) [6]PBar - ProgressBar, показывающий выполнение...
И еще... Задаю кол-во наклеек. Если их больше чем на один лист, то добавляю к документу word еще одну страницу...
← →
Petr V. Abramov © (2005-02-02 02:44) [7]Так вроде в FR3 это нормально делается
← →
Ozone © (2005-02-02 06:37) [8]Подобного рода программа писалась мной как первый коммерческий продукт в 10 классе :) Продал помню за 500 р. и бутылку коньяка (сказали родителей угостишь) :)) Решение проблемы пришло во сне - сделал шаблон для каждого вида ценника в QReport и проблем не было... и оч даже удобно по-моему.
← →
Digitman © (2005-02-02 08:34) [9]использовать Ёхель для таких целей - крайняя мера ... слишком уж шаткая програмная конструкция получается - всем известны капризы Ёхеля ..
а вот Access (если уж речь об офисе идет как о готовом инструменте для рендеринга) для этой цели как нельзя кстати ..
механизм отчетов Access"а с удивительной легкостью и достаточной надежностью позволяют решать такие задачи
← →
Vlad Oshin © (2005-02-02 08:59) [10]
> сделал шаблон для каждого вида ценника
дать юзеру их делать
использую, работает
← →
Layner © (2005-02-02 20:37) [11]Здравствуйте!
Проблема была у меня с выходом в инет, только что выбрался, хотел сказать всем большое спасибо за ответы, особенно Мазуту за код, хотя на бейсике ни когда не писал, посмотрю, но главное идея.
И на счет Excel тоже понял, не буду и пробовать :)
← →
Мазут Береговой © (2005-02-02 21:53) [12]
> Layner © (02.02.05 20:37) [11]
Всегда пожалуйста...
← →
GanibalLector © (2005-02-03 02:11) [13]Кстати,а если нужно в ценник штрих-код запуздырить...Что теперь скажете?Как бы Вы поступили?
2 Digitman © (02.02.05 08:34) [9]
> всем известны капризы Ёхеля
Ну-ну...и какие же?Пока ничего не было(через ОЛЕ работаю).
← →
kaif © (2005-02-03 02:21) [14]Я совсем недавно реализовывал точно такую задачу с ценниками при помощи генератора отчетов FastReport. Я вообще впервые работаю с этим генераторов отчетов и ценники в три вертикальных ряда - первый отчет, который я на нем сделал. Времени ушло ровно полчаса, в основном разбирался с размерами при печати, так как на наклейки печатать надо было (попадать четко).
Очень рекомендую этот генератор. Я не надеялся так быстро и лихо его освоить даже для такой простой задачи.
← →
Vlad Oshin © (2005-02-03 08:41) [15]
> FastReport.
Удобная штука, только с ним иногда приходится отключать расширенные возможности печати принтера и оптимизацию печати - крякозябы получаются. Причем, почему - непонятно. Ходил к ним(FR ) на страницу, почитал - ничего путного не пишут.
← →
Digitman © (2005-02-03 09:16) [16]
> GanibalLector © (03.02.05 02:11) [13]
> Пока ничего не было
"- У вас на стройке несчастные случаи были ? .. Будут !" (с)
← →
Шишкин Илья © (2005-02-03 10:40) [17]2GanibalLector
Не знаю как с цениками, но сделать прогу генерирующую изображение штрих-кода по конкретному коду можно ИМХО за час...
http://mgul-vt.fatal.ru/download/index.php?p=freeware/barcode/
← →
Prohodil Mimo © (2005-02-03 12:46) [18]GanibalLector © (03.02.05 2:11) [13]
Кстати,а если нужно в ценник штрих-код запуздырить...Что теперь скажете?Как бы Вы поступили?
Я запуздыриваю. Способ тот же. [3]
Для генерации штрих кода использую ЕАН-фонты
← →
kaif © (2005-02-03 16:19) [19]Я запуздыриваю. Способ тот же. [3]
Для генерации штрих кода использую ЕАН-фонты
ЕАН стандарт это тот, который число Зверя? Который именно поэтому Государство так любит юзать?
← →
Prohodil Mimo © (2005-02-03 16:50) [20]kaif © (03.02.05 16:19) [19]
Моя твоя не понимать
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.06 c