Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с печатью текста. / 12 сообщений из 12, страница 1 из 1
16.08.2006, 11:44
    #33921053
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
1. есть код, который преобразовывает текст из WIN в DOS. Текст располагается в RichEdit1 по всей длине рускими - всё как надо! Зато на бумагу выводится текст каракулями (обратно кодировка WIN). Почему, объясните! Как исправить?
TStringList *dd = new TStringList();
char buf[1024];
dd->LoadFromFile("C:\\1.txt");
for(int i=0; i<dd->Count; i++)
{
OemToChar(dd->Strings .c_str(),buf);
RichEdit1->Font->Name="Courier";
RichEdit1->Lines->Add(buf);
}
RichEdit1->Print("C:\\1.txt");

2. есть ещё код, который без преобразования WIN->DOS выводит текст на бумагу на русском, но всё в 1 строку!
TPrinter *Prntr = Printer();
TextFile txt;
TRect r = Rect(1,1,Prntr->PageWidth,Prntr->PageHeight);
Prntr->BeginDoc();
Prntr->Canvas->TextOutA(1,1,RichEdit1->Lines->Text);
Prntr->EndDoc();

3. Пробовал ещё перенести текст на другую строку функцией fgets(), но не получается этот кусочек (3) слепить со кусочком (2).
FILE *f;
char s[50];
if((f=fopen("C:\\1.txt", "rt"))==NULL)
{
ShowMessage("Неудача");
}
fgets(s,80,f);
if(feof(f))
break;
if(s[strlen(s)-1]=='\n')
s[strlen(s)-1]=0;
//RichEdit1->Font->Name="Courier";
RichEdit1->Lines->Add(s);
}
while(true);
fclose(f);

Подскажите, плз!!!! Как вывести на бумагу текст по всей ширине рус буквами!!! Что исправить или что добавить в коде 1 или 2, или 3 ? Надо очень!!!!
...
Рейтинг: 0 / 0
16.08.2006, 12:11
    #33921188
дед Макар
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
Вот источник ошибки: RichEdit1->Print("C:\\1.txt");
Ты печатаешь не конвертированый в RichEdit1 текст, а тот же самый оригинальный 1.txt
...
Рейтинг: 0 / 0
16.08.2006, 12:25
    #33921255
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
Пробовал вот так:
RichEdit1->Print(RichEdit1->Lines->Text);
или
RichEdit1->Print(RichEdit1->Text);
ошибок не выдает, в RichEdit текст отображается как надо, а на печать вообще ничего не идёт!!! Принтер не срабатывает, т.н. как бы не было команды печатать текст!
...
Рейтинг: 0 / 0
16.08.2006, 12:34
    #33921285
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
дед МакарВот источник ошибки: RichEdit1->Print("C:\\1.txt");
Ты печатаешь не конвертированый в RichEdit1 текст, а тот же самый оригинальный 1.txt
Print печатает содержимое RichEdit, а параметр - это только название для задания печати.
...
Рейтинг: 0 / 0
16.08.2006, 12:36
    #33921294
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
Вообще, по хорошему, я так думаю, должно быть так:
RichEdit1->Print(dd); Ошибка - разные типы. dd-TStringList, в Print( AnsiString )
...
Рейтинг: 0 / 0
16.08.2006, 12:38
    #33921301
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
seeerg_23
Во втором варианте (с TextOut) можно печатать построчно.
Д/З - посмотреть в стандартной справке свойства TRichEdit и разобраться, как можно работать с каждой его строчкой отдельно.
Пользы будет больше, чем от получения прямого ответа на форуме.

Остальным - не подсказывать, разбалуете :)
...
Рейтинг: 0 / 0
16.08.2006, 12:39
    #33921306
sashka304
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
а попробуй просто у ричэдита поставить в свойсвах фонта чарсет не по дефолту а руссиан :)
...
Рейтинг: 0 / 0
16.08.2006, 12:40
    #33921312
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
Подскажите, плз, что сделать, где исправить либо что нужно добавить!!!
...
Рейтинг: 0 / 0
16.08.2006, 14:08
    #33921730
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
1. Почему эта строка ничего не выводит на принтер? Вроде правильно!!!
RichEdit1->Print(RichEdit1->Lines->Text);
или
RichEdit1->Print(RichEdit1->Text);

2. Вот эта строка выводит текст на русском, но текст смещён влево - шрифт как бы не применяется!!!
TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight- 200);
Prntr->BeginDoc();
for( int i = 0; i < RichEdit1->Lines->Count; i++)
Prntr->Canvas->TextOut(200,200 + (i *
Prntr->Canvas->TextHeight(RichEdit1->Lines->Strings )),
RichEdit1->Lines->Strings);
RichEdit1->Font->Name="Courier";
Prntr->EndDoc();
...
Рейтинг: 0 / 0
16.08.2006, 15:21
    #33922091
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
seeerg_231. Почему эта строка ничего не выводит на принтер? Вроде правильно!!!
RichEdit1->Print(RichEdit1->Lines->Text);
или
RichEdit1->Print(RichEdit1->Text);
Справка Обычная aka HelpFormats and prints the contents of the rich edit control.
virtual void __fastcall Print(const AnsiString Caption);
Description
Use Print to print the contents of a rich edit control. The Caption parameter specifies the title that appears in the print manager and on network title pages .

seeerg_23
2. Вот эта строка выводит текст на русском, но текст смещён влево - шрифт как бы не применяется!!!
TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight- 200);
Prntr->BeginDoc();
for( int i = 0; i < RichEdit1->Lines->Count; i++)
Prntr->Canvas->TextOut(200,200 + (i *
Prntr->Canvas->TextHeight(RichEdit1->Lines->Strings )),
RichEdit1->Lines->Strings);
RichEdit1->Font->Name="Courier";
Prntr->EndDoc();

Справка Обычная aka HelpWrites a string on the canvas, starting at the point (X,Y), and then updates the PenPos to the end of the string.

void __fastcall TextOut(int X, int Y, const AnsiString Text);

Description

Use TextOut to write a string onto the canvas. The string will be written using the current value of Font. Use the TextExtent method to determine the space occupied by the text in the image. To write only the text that fits within a clipping rectangle, use TextRect instead.

After a call to TextOut, the PenPos property indicates the point at the top right of the text on the canvas.
При чём тут RichEdit1->Font ?
...
Рейтинг: 0 / 0
16.08.2006, 16:43
    #33922559
seeerg_23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
TStringList *dd = new TStringList();
AnsiString kk;
Скажите, есть функция преобоазования типов TStringList к AnsiString и наоборот, чтобы kk=dd;
...
Рейтинг: 0 / 0
16.08.2006, 18:12
    #33922939
pandrew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с печатью текста.
dd->Text=kk;
и наоборот
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с печатью текста. / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]