| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
| Страници: (5) « първа ... 3 4 [5] ( Първото ново мнение ) | ![]() ![]() ![]() |
| Pavlov |
Публикувано на: 17-03-2017, 16:52
|
|
Име: Вълкан Павлов Група: Потребител Ранг: Новопостъпил Мнения: 31 Регистриран на: 21.12.16 |
Важен въпрос. В случая точно не, но в други сигурно да. При тези гридове обаче може би е по-важно да се направи автоматичното побиране чрез пренасяне на текста, в клетката, с предварително зададен размер. Лично аз ги ползвам само за схематично показване на списък, а правя отделни форми за цялостно визуализиране на съдържанието.В конректния случай просто чета една книга и правя примерите.
Това обаче ми напомни за друг проблем, който от известно време стои без разрешение. В общи линии ситуацията е следната. 1) Текст 2) Стринг или ДБ Грид 3) Текст Това е за създаване на документ, който съдържа списък. Проблемът е че списъкът може да бъде произволно голям. Как да подходя, за да принтирам формата на колкото страници е нужно? Знам, че мога да обвържа дължината на формата с височината на грида, същото и за позицията на текста под него. Но ако го принтирам, какво ще се случи? Съжалявам че нямам принтер за да тествам, но в обджект инспектора имам една настройка PrintScale. Ако я сложа на poProportional ще се раздели ли формата на повече от една страница? Въобще правилно ли подхождам, опитвайки се да принтирам цялата форма? |
| r4nd0m |
Публикувано на: 17-03-2017, 18:48
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 1125 Регистриран на: 05.09.07 |
нещо като Crystal Reports?
-------------------- "Happiness only real when shared."
|
| enf |
Публикувано на: 18-03-2017, 09:47
|
||||||||
|
Име: Група: Потребител Ранг: Посетител Мнения: 55 Регистриран на: 01.08.14 |
Не ти трябва физически принтер. Можеш да си дръпнеш виртуален. Пишеш нещо от рода на "print to pdf" в гугъл и си избираш. Ако си с виндовс 10, той си има "вграден" - Microsoft Print to PDF.
Ако си с pro или arch версия на делфи, най-вероятно имаш достъп до сорса на vcl-a. Та,
И съответният извод - ще се принтира само *видимата* част от формата. Механизмът е много подобен и при самото визуализирана на формата на екран. Това, което искаш е т.н. репорт. По-бързият вариант е да използваш готово решение (както предлага r4nd0m). Делфи обикновено върви с някаква "лайт" версия на такива компоненти. Ако си с XE3 или нагоре, трябва да имаш FastReport, иначе - RaveReport. Като цяло са доста бъгави, но вършат работа. Но при положение, че всичко го правиш за упражнение, ти препоръчвам сам да си направиш печата. Така ще се разбереш що е Canvas и как въобще можеш да рисуваш. Пример:
Трябва да си извъртиш един цикъл, за да обиколиш всички редове/клетки (в твоя случай - дейтасета, който си вързал с грида) и да ги изведеш на съответните координати. Вече по-нататък, ако разгледаш документацията, ще видиш как можеш да форматираш текст, да рисуваш изображения и т.н. |
||||||||
| Pavlov |
Публикувано на: 21-03-2017, 14:15
|
|
Име: Вълкан Павлов Група: Потребител Ранг: Новопостъпил Мнения: 31 Регистриран на: 21.12.16 |
Здравейте Enf и r4nd0m
Извинявам се за закъснението, но нямах достъп до компютър няколко дни. Ще ми трябва и малко време да проуча новите неща. Иначе не е само за упражнение, мъча се да правя една програма, която да ми улесни живота на работа. Благодаря за включванията! |
| Pavlov |
Публикувано на: 23-03-2017, 14:12
|
|
Име: Вълкан Павлов Група: Потребител Ранг: Новопостъпил Мнения: 31 Регистриран на: 21.12.16 |
Прегледах готовите неща, но реших да проуча как стоят работите с последния пример и да се опитам да го направя сам.
Имам обаче няколко неясноти. В Printer.Canvas.TextOut(0, 0, 'test test test'); двете нули са координати за позиция. Не разбирам в какви мерни единици са. Да речем че имам константен текст в началото и края, и променлив по средата. Малко ми е трудно да уцеля точната позиция на крайния текст. Опитвам се да ползвам Edit1.GetTextLen, това обаче ми връща стойност с която не успявам да работя. С проба-грешка, го докарах до това един символ да е широк 18-19 от мерните единици на координатите. Сега умножавам броя на символите по 18, да речем, но хич не ми се получава точно. Подозирам че и ако се смени листа с друг формат, letter примерно, подредбите ще се развалят. За това ми се иска вместо да задавам цифрови координати, да навръзвам позициите на всяко следващо с предходното. Има ли начин да извлека размера на текст в канвас-а? И мога ли да го визуализирам по някакъв начин, освен с ПДФ-а? Иначе разбрах че с TextRect, мога да задам размер, но прочетох че размерът е за самата фигура, ако текста стане по-дълъг от нея, ще бъде отрязан. Не можах и да го подкарам това TextRect да се покаже в ПДФ-а. Поздрави и благодаря отново! Това мнение е било редактирано от Pavlov на 23-03-2017, 15:50 |
| enf |
Публикувано на: 23-03-2017, 15:30
|
|
Име: Група: Потребител Ранг: Посетител Мнения: 55 Регистриран на: 01.08.14 |
|
| Pavlov |
Публикувано на: 23-03-2017, 15:49
|
|
Име: Вълкан Павлов Група: Потребител Ранг: Новопостъпил Мнения: 31 Регистриран на: 21.12.16 |
Благодарности!
Това мнение е било редактирано от Pavlov на 23-03-2017, 15:49 |
| Pavlov |
|
|
Име: Вълкан Павлов Група: Потребител Ранг: Новопостъпил Мнения: 31 Регистриран на: 21.12.16 |
TextWidth свърши страхотна работа! Сега всичко се получава много точно. Имам друг подобен проблем обаче този път добре прегледах методите на TCanvas, но може би търся на грешното място. Става въпрос за това че текста трябва да е центриран. С TextWidth мога да му взема широчината и да я разделя на две. Трябва ми широчината на страницата. Като извадя половината от широчината на текста от половината на широчината на страницата, би трябвало да получа точната позиция на въпросния текст. Не успявам обаче програмно да взема размерите на канваса. След като това е отпечатваната страница, може би ще мога да го взема от Printer.PageWidth. Сега се сетих че и отстъпите от началото на страницата ще трябва да бъдат обвързани с нейните размери и може би DPI настройката.
Утре ще тествам. Това мнение е било редактирано от Pavlov на 24-03-2017, 19:42 |
| Pavlov |
|
||||
|
Име: Вълкан Павлов Група: Потребител Ранг: Новопостъпил Мнения: 31 Регистриран на: 21.12.16 |
Здравейте приятели. След известно прекъсване на работата по компонентите за принтиране се върнах на тях със свежи идеи, чиято имплементация си остава редовният ми проблем
Горното е почти идентично с един отделен код, във отделен проект, който ползвам за тестване:
В горния случай получавам грешка: Missing Operator or semicolon. И на двете съм вкл. System.StrUtils в uses. |
||||
| Pavlov |
Публикувано на: 24-07-2018, 15:39
|
|
Име: Вълкан Павлов Група: Потребител Ранг: Новопостъпил Мнения: 31 Регистриран на: 21.12.16 |
Подкарах го, като написах System.StrUtils пред LeftStr.
|
Страници: (5) « първа ... 3 4 [5] |
![]() ![]() ![]() |