Как распечатать содержимое wxGrid.

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Как распечатать содержимое wxGrid.

Post by Mojo »

Все. Распечатал содержимое грида, все работает отлично.

Image

Но есть одна проблема которая портит мою жизнь.

Я распечатываю, это документы на одном листе, типа приходного или расходного ордера.

Но например накладная или счет или счет-фактура могут быть на нескольких листах, ввиду большого списка товара.

И вот тут я стопорнулся.... уже месяц как буксую....

Накладная или счет-фактура состоит из нескольких частей-блоков, эти блоки я сформулировал так: шапка документа, подвал документа, шапка страницы, подвал страницы.

Т.е. при визуальном рисовании шаблона накладной или счета, нужно как-то выделить эти шапки и подвалы.... в 1С они выделяются слева сразу за номерами рядов, в виде большой скобы, затем красная линия идет до правой стороны грида.

Вот картинка:

Image

Т.е. мне нужно нарисовать слева скобу или просто толстую линию обозначающую сколько рядов уходит под шапку, сколько под подвал... и т.п. Это не проблема я её нарисовал переопределив функцию DrawRowLabel(wxDC& dc, int row) в моем производном от wxGrid классе.

Проблема у меня возникла с рисованием красной линии....... дело в том, что эту линию придется рисовать только в гриде использую пользовательский рендерер. А там у меня уже нарисовано три короба с использование другого рендерера и если сверху "наложить" еще один рендерер, то он потрет содержимое ячеек.

Вот у меня вопрос и возник... wxGrid производный от wxScrolledWindow, можно ли как-то нарисовать в этом окне но сверху грида?

Спрашивал у капиталистов, они не знают, даблмакс посоветовал покопаться в исходниках грида..... я копался.... но там опять все сводится к написанию пользовательского рендерера...

Короче западня....

Или нужно искать другой способ выделения блоков, но это должен быть только визуальный способ, потому, что это главная концепция построение отчетов, они должны визуально рисоваться как в экселе или в 1С.

У кого какие идеи братва?
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
SteelRat
Experienced Solver
Experienced Solver
Posts: 50
Joined: Tue Sep 08, 2009 4:42 pm
Location: Russia, Obninsk

Re: Как распечатать содержимое wxGrid.

Post by SteelRat »

Создать wxBitmap почти весь прозрачный, кроме линии и в OnPaint пастить сверху?
Win7/LinuxMint 17, VS2013/C::B, wxWidgets 3.0 x64
Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Как распечатать содержимое wxGrid.

Post by Mojo »

SteelRat wrote:Создать wxBitmap почти весь прозрачный, кроме линии и в OnPaint пастить сверху?
Не выйдет, во-первых эти красные линии мне нужны в редакторе, в печати их быть не должно, а редакторе вставлять wxBitmaр...... не то....

Во-вторых я пробовал рисовать в OnPaint ничего не рисуется, как я понимаю грид закрывает сверху ScrolledWindow.

Капиталисты советуют залезть в исходники грида а именно в функцию void wxGridWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) и в этой функции вставить свою виртуальную, которую в своем производном классе переопределить.... идея хорошая, как я сам не догадался.....
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0
Post Reply