Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2

Организация просмотрщика отчетов

17.07.2010, 14:55. Показов 1192. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Отчеты у меня формируются в компоненте RichEdit, необходимо чтобы размер компонента richEdit устанавливался в соответствии с размером бумаги: а4, а3, а5, каким образом мне установить размер компонента чтобы видимая область при печати полностью помещалась на лист?

и второе. Возможно ли организовать уменьшение отчета для предпросмотра?
подскажите как бы это все сделать пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.07.2010, 14:55
Ответы с готовыми решениями:

Организация отчётов и поиска
Есть приложение, которое может конектится к любой БД на access.В ней есть простенький фильтр.Есть поиск, который что-то делает, но эта...

Реализация просмотрщика изображений на сайте
Добрый всем день, такой вопрос: На сайте д/б картинка (миниатюра) - при нажатии на нее разворачивание в этом же окне полного изображения,...

Пустой список отчетов в справочнике Варианты Отчетов в УТ 11
Друзья, выручайте. В УТ 11 справочник Варианты Отчетов - пуст. Как его заполнить?

10
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
17.07.2010, 23:29
Всё это типа как в Word'e?
каким образом мне установить размер компонента
Распечатать текст на нужном формате бумаги. Посчитать число символов в строке. Растянуть RichEdit
что-бы это число символов влезало. И сохранить эти размеры в программе.

Возможно ли организовать уменьшение отчета для предпросмотра?
Уменьшить RichEdit что-бы влазил на экран. И во столько же уменьшить размер шрифта.
Или.
Скопировать текст куданить.Распечатать на Bitmap. И вывести Bitmap, н-р на Image нужного размера.
Так я вырисовывал текст из файла.
C++
1
2
3
4
5
6
7
TStringList *Lst = new TStringList;
Lst->LoadFromFile("Date\\"+imja+".txt");
for(int i = 0; i < Lst->Count; i++)
 {
  Image1->Canvas->TextOutA(10,i*15+50,Lst->Strings[i]);
 }
delete Lst;
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
18.07.2010, 18:52  [ТС]
Grey, я это итак отлично знаю, единственное спасибо за копирование в имэйдж, дело в том что я не знаю скольки пикселям по ширине и высоте компонента соответствуют размеры бумаги!
И как Вы себе представляете уменьшение текста в RichEdit если там хранится текст разных размеров! каким же образом уменьшить шрифт на 1 если в одном месте он 12 а в другом 8, ведь он тогда весь сравняется
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
18.07.2010, 20:09
каким же образом уменьшить шрифт на 1 если в одном месте он 12 а в другом 8, ведь он тогда весь сравняется
Не на 1, а в несколько процентов. Уменьш оба шрифта в 2 раза, визуально большая разница получается?

Добавлено через 7 минут
Если шрифт одинаковый,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Graphics::TBitmap*b=new Graphics::TBitmap();
b->Height=RichEdit1->ClientHeight;//600
b->Width=RichEdit1->ClientWidth;  //500
b->Canvas->Font->Size=RichEdit1->Font->Size;
b->Canvas->Font->Name=RichEdit1->Font->Name;
 
TStringList *Lst = new TStringList;//áåç ýòîãî
Lst->Text=RichEdit1->Text;
Edit1->Text=IntToStr(Lst->Count);
for(int i = 0; i < Lst->Count; i++)//ÿ íå çíàþ ñêîëüêî ñòðîê
 {
  b->Canvas->TextOutA(0,i*15,Lst->Strings[i]);//15 çàâèñèò îò ðàçìåðà øðèôòà
 }
delete Lst;
Lst=NULL;
 
Image1->Canvas->CopyRect(Rect(0,0,Image1->Width,Image1->Height),b->Canvas,Rect(0,0,b->Width,b->Height));
//Image 300*250
delete b;
b=NULL;
RichEdit1->Visible=false;
А если шрифт разный, весь текст посимвольно перебирать. Получится, скину код.
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
21.07.2010, 19:05  [ТС]
если весь текст перебирать посимвольно и уменьшать размер то производительность у такого алгоритма будет отвратительная

Добавлено через 32 секунды
вопрос актуален
0
 Аватар для serrg
70 / 70 / 4
Регистрация: 02.07.2010
Сообщений: 228
21.07.2010, 20:02
Могу только предложить вариант влоб для предпросмотра, это ставить виртуальный принтер для печати в pdf это хоть и глупа но предложить пока другого не могу, не разу не приходилось рабоать с документами для печати. Попробуй ещё поищи коды прог типа эмулятора wordPad там должен быть пример печати
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
24.07.2010, 11:48  [ТС]
ну так не интересно, а вобще есть какой нить способ попроще чтобы весь текст в richedit уменьшить на 1 пункт, при этом чтобы он не прировнялся?
вижу только один способ, это выборка каждого символа и изменение его шрифта, но может можно как нибудь основываясь на структуру *.rtf файла сделать это умнее?
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
10.08.2010, 19:16  [ТС]
вопрос решен, если кому интересно спрашивайте.
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
10.08.2010, 19:47
[XandeR], если сами решаете свою проблему, то непременно выкладывайте ваше решение на форум - другие люди тоже могут столкнуться с такой проблемой и найдут решение в вашем лице.
0
 Аватар для serrg
70 / 70 / 4
Регистрация: 02.07.2010
Сообщений: 228
11.08.2010, 07:10
Скорее всего автор организовал всё через QuickRep, мощная вещь.
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
13.08.2010, 15:38  [ТС]
нет, в моем случае мне не подходят компоненты отчетов.
вот таким кодом мы производим увеличение и уменьшение листа отчета
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//функция изменения размера компонента пропорционально размеру текста
void __fastcall TFOrderView::FontResize(int size)
{
if (FSize->Caption.ToInt()>30&&FSize->Caption.ToInt()<200||FSize->Caption.ToInt()==200&&size<0||FSize->Caption.ToInt()==30&&size>0) {
     int count;
 
     List->Visible=false;
     List->SelectAll();
     count=List->SelLength;
 
     for (int i = 0; i < count; i++) {
        List->SelStart=i;
        List->SelLength=1;
        List->SelAttributes->Size+=size;
     }
     List->Visible=true;
     List->Height+=size*(selH/11);
     List->Width+=size*(selW/11);
 
     FSize->Caption=FSize->Caption.ToInt()+size*10;
 
     Align();
}
}
а вот как её пользоватся
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TFOrderView::UpDown1ChangingEx(TObject *Sender, bool &AllowChange,
          short NewValue, TUpDownDirection Direction)
{
if (AllowChange) {
    if (Direction==1) {
        FontResize(1);
    } else {
        FontResize(-1);
    }
}
}
размер шрифта в ричэдит изменял посимвольно, если предварительно сделать компонент невидимым то производительность у этого алгоритма отличная
C++
1
2
3
4
5
for (int i = 0; i < count; i++) {
        List->SelStart=i;
        List->SelLength=1;
        List->SelAttributes->Size+=size;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2010, 15:38
Помогаю со студенческими работами здесь

создание просмотрщика 3D-моделей, импортированых из 3D-Max средствами OpenGL в Lazaruse
создание просмотрщика 3D-моделей, импортированых из 3D-Max средствами OpenGL в Lazaruse - это вообще возможно??? если да то подскажите,...

Запуск просмотрщика AutoCad Volo View Express из приложения созданного на Visual Basic 6.0
Кто знает как или где найти способ запуска просмотрщика Volo View Express (Файлов AutoCad) из приложения созданного на Visual Basic 6.0. ...

Организация функций , Обработка одномерных массивов , Организация процедур.
Помогите пожалуйста кто чем может до экзамена 3-4 дня осталось а без программирования не пускают к сессии Организация процедур. ...

В чем ошибка? [Таблица3]![Организация]=[Таблица1]![Организация]
В чем ошибка: пишу в таблице один - обработка двойного нажатия кнопки: !=! - почему не копирует из таблицы1 значение в таблицу3...

Организация команды, Организация проекта
Здравствуйте, ребята! В общем, имея идею, но не имея никаких материальных средств и контактов, с чего стоит начать организацию проекта будь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru