Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
ВнизВывод знаков псевдографики в RichEdit Найти похожие ветки
← →
mefodiy (2006-05-21 13:59) [0]Как можно вывести в RichEdit показанные ниже знаки псевдографики?
┌────┬────┐
│ │ │
├────┼────┤
│ │ │
└────┴────┘
← →
Leonid Troyanovsky © (2006-05-21 18:50) [1]
> mefodiy (21.05.06 13:59)
> Как можно вывести в RichEdit показанные ниже знаки псевдографики?
Поставить ему, скажем, шрифт Терминал.
Анахоа?
--
Regards, LVT.
← →
mefodiy (2006-05-22 14:56) [2]Шрифт установлю, а что писать в
RichEdit1.Lines.Add(Знак);
вместо Знак?
← →
Steplerr © (2006-05-22 15:11) [3]Прогони функцию Chr в цикле - получишь таблицу соответствия кодов символам. Выбирай какой тебе нравится и добавляй через Chr.
← →
han_malign © (2006-05-22 17:55) [4]│┤╡╢╖╕╣║╗╝╜	 563;┐└┴┬├─┼╞╟╚╔ ;╩╦╠═╬╧╨╤╥╙╘&# 9554;╓╫╪┘┌
CP866: 179..218
#218#196#194#196#191
#179" "#179" "#179
#195" "#197" "#180
#179" "#179" "#179
#192#196#193#196#217
← →
han_malign © (2006-05-22 17:58) [5]интересно, часть псевдографических символов, таки перевирается...
← →
ANB © (2006-05-22 18:20) [6]Более удобный способ : использовать шрифт Curier New, а в чарсете указать OEM_CHARSET.
Таким способом я печатал DOS документы и проблем не было.
← →
mefodiy (2006-05-22 21:06) [7]Все это я уже пробовал. Но в RichEdit выводятся не знаки псевдографики, а буквы кириллицы, например,
RichEdit1.Lines.Add(Chr(218)) дает "Ъ"
RichEdit1.Lines.Add(Chr(196)) дает "Д"
RichEdit1.Lines.Add(Chr(194)) дает "В" и т.д.
Причем, ни изменения Charset ни изменения фонта ни дают никакого результата
← →
mefodiy (2006-05-23 14:54) [8]Господа, отзовитесь
← →
mefodiy (2006-06-01 15:30) [9]Мастера помогитеееееееееееее!
← →
Amoeba © (2006-06-01 16:58) [10]
> ни изменения Charset ни изменения фонта ни дают никакого
> результата
Где, как и когда меняешь?
← →
mefodiy (2006-06-02 07:55) [11]with PrintForm.RichEdit do
begin
Font.Charset := OEM_CHARSET;
Font.Name := "Courier New";
Lines.Clear;
Lines.Add(Chr(218));
end;
Выводит в RichEdit букву "Ъ".
← →
TButton © (2006-06-02 08:01) [12]
> with PrintForm.RichEdit do
> begin
> Font.Charset := OEM_CHARSET;
> Font.Name := "Courier New";
> Lines.Clear;
> Lines.Add(Chr(218));
> end;
>
> Выводит в RichEdit букву "Ъ".
пральна.
в конце кодировки ДОС расположены символы кирилицы
прогони символы с 0 по 255
посмотри какие номера у нужных
и есть ли они там вообще
← →
mefodiy (2006-06-02 08:34) [13]Прогоняю символы с 0 по 255 в RichEdit, нужных симовол там вообще нет.
Захоже в режим эмуляции DOS (Command Prompt) нажимаю Alt+218 нужный символ нормально выводится в командной строке.
Кроме того захожу в Word, в режиме вставки символа выбираю символ с щестнадцатиричным юникодом 250C, копирую его в Clipboard, а потом вставляю в RichEdit, опять все номально появляется.
А вот в runtime вывести символы в RichEdit не удается никак.
← →
TButton © (2006-06-02 09:00) [14]а... кхм... а если в свойствах параграфа менять кодировку?
← →
mefodiy (2006-06-02 09:30) [15]А точнее...
← →
Cash © (2006-06-02 09:38) [16]mefodiy (02.06.06 08:34) [13]:
А ты собери в Ворде строку из псевдографики, вставь ее в свой RichEdit,
а потом посмотри, какие атрибуты у этой строки поставлены и какие
кодировки у этих символов.
← →
mefodiy (2006-06-02 09:54) [17]Вот это мне никак не удается.
Подскажи как сделать?
← →
Cash © (2006-06-02 14:09) [18]Там же SelAtributes есть, а ты сказал, что можешь в свое RichEdit воткнуть
псевдографику из Word-а.
Ну дак вот, собираем строку, втюхиваем ее нашему RichEdit-у, ставим
SelStart на начало строки, а SelLength - в длину строки, меньше можно,
больше ни ни! А потом по спецательно подготовленной кнопочке щелкаем,
а там ты должен дать сам себе всю информацию из SelAtributes, ну, если
охота, то и из Paragraph тоже. Вроде так. А кодировки? SelText вроде
есть, его по ord() или byte(SelText[i]) разбирай на коды.
← →
mefodiy (2006-06-02 16:55) [19]Прописал на нажатие кнопки
with PrintForm.RichEdit do
begin
SelStart := 0;
SelLength := 1;
ShowMessage(IntToStr(Ord(SelText[1])));
ShowMessage(IntToStr(Byte(SelText[1])));
end;
Оба месажа дают 218, а
Lines.Add(Chr(218)),
как уже говорилось выше дает букву "Ъ" вместо "┌".
← →
Cash © (2006-06-02 17:13) [20]Так, а атрибуты? Шрифт, CharSet (покапайся в нем, чую оно), стиль и
размер. Ты это выведи!
← →
mefodiy (2006-06-02 17:33) [21]Да уж все перепробовано
CharSet := RUSSIAN_CHARSET;
CharSet := OEM_CHARSET;
CharSet := ANSI_CHARSET;
Name := "Arial";
Name := "Courier New";
Name := "Terminal";
← →
Cash © (2006-06-02 18:42) [22]Мистика! Я вставил код между двумя символами псевдографики и они
!!!все!!! превратились в простые символы! Ничего не понимаю! %(
← →
mefodiy (2006-06-05 10:41) [23]Мастера!
Помогите же начинающему или скажите, что это невозможно!
← →
Cash © (2006-06-05 12:26) [24]Видимо, это невозможно...
Я и сам бедился, и перелопатил прилично по этому вопросу, ничего
толкового нет.
Идать, точно, невозможно...
← →
Vasiliy (2006-06-05 13:47) [25]Вот набросал:
procedure TForm1.Button1Click(Sender: TObject);
Var I:Integer;
S:String;
begin
S:="";
For I:=1 to 255 do S:=S+Chr(I);
For I:=0 to Screen.Fonts.Count - 1 do
begin
RichEdit1.SelAttributes.Charset := DEFAULT_CHARSET;
RichEdit1.SelAttributes.Name := "Symbol";
RichEdit1.SelAttributes.Size := 12;
RichEdit1.SelAttributes.Color := clRed;
RichEdit1.Lines.Add("");
RichEdit1.SelAttributes.Charset := DEFAULT_CHARSET;
RichEdit1.SelAttributes.Name := "Symbol";
RichEdit1.SelAttributes.Size := 12;
RichEdit1.SelAttributes.Color := clRed;
RichEdit1.Lines.Add("----------------------------------------------------------------------------------------------------");
RichEdit1.SelAttributes.Charset := DEFAULT_CHARSET;
RichEdit1.SelAttributes.Name := "Symbol";
RichEdit1.SelAttributes.Size := 12;
RichEdit1.SelAttributes.Color := clRed;
RichEdit1.Lines.Add("FontName = " + ComboBox1.Items[I]);
RichEdit1.SelAttributes.Charset := DEFAULT_CHARSET;
RichEdit1.SelAttributes.Name := "Symbol";
RichEdit1.SelAttributes.Size := 12;
RichEdit1.SelAttributes.Color := clRed;
RichEdit1.Lines.Add("----------------------------------------------------------------------------------------------------");
RichEdit1.Lines.Add("");
RichEdit1.SelAttributes.Color := clBlack;
RichEdit1.SelAttributes.Charset := SYMBOL_CHARSET;
RichEdit1.SelAttributes.Name := ComboBox1.Items[I];
RichEdit1.SelAttributes.Size := 12;
RichEdit1.Lines.Add(S);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items := Screen.Fonts;
end;
Выводит все возможные символы в RichEdit.
Увы, элементов рамки там не нашел, зато много всяких интересных закорючек :)
← →
Vasiliy (2006-06-05 13:49) [26]Да, забыл ...
Другие чарсеты, кроме SYMBOL_CHARSET, выдают одинаковые символы.
← →
mefodiy (2006-06-06 08:04) [27]>Vasiliy
Спасибо за труды.
Как я понял элементы рамки вывести в RichEdit принципиально не возможно.
← →
tButton © (2006-06-06 08:10) [28]
> Как я понял элементы рамки вывести в RichEdit принципиально
> не возможно.
переименуем его в PoorEdit? =)
← →
mefodiy (2006-06-07 07:46) [29]Шутки шутками, а работа не продвигается!
← →
tButton © (2006-06-07 09:07) [30]если мне правильно изменяет память - я выводил в memo текст шрифтом terminal и рамки отображались
как вариант, не помню предлагалось уже или нет, могу предложить сделать рамки в ворде, сохранить в rtf и уже из rtf выдрать... не знаю что оттуда выдирать =) ибо... не знаю =)
а вообще RichEdit вроде б как таблицы поддерживать должен
← →
Vasiliy (2006-06-07 12:20) [31]Может есть смысл порыть в сторону WideChar и WideString чтобы можно было использовать UNICODE
← →
mefodiy (2006-06-07 16:53) [32]>>сохранить в rtf и уже из rtf выдрать
Это возможно с использованием
RichEdit.Lines.LoadFromFile("имя файла").
Все нормально загружается и отображается. Но это меня не устраивает, так мне нужно рисовать и заполнять данными таблицу в runtime, чтобы у пользователя была возможность предварительного просмотра.
>>Может есть смысл порыть в сторону WideChar и WideString чтобы можно было использовать UNICODE
Перепробовал все.
← →
ViK © (2006-06-08 01:39) [33]У меня заработало OEM_CHARSET + Terminal
Только при вводе русских букв (програмно) надо будет использовать функцию AnsiToOEM
← →
mefodiy (2006-06-08 08:17) [34]>>У меня заработало OEM_CHARSET + Terminal
Попробовал следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
s1: string;
s : array[0..255] of Char;
begin
with RichEdit1 do
begin
Font.Charset := OEM_CHARSET;
Font.Name := "Terminal";
for i:=1 to 254 do
begin
s1 := Chr(i);
AnsiToOem(PChar(s1),s);
Lines.Add(s);
end;
end;
end;
Нужных символов все рано нет.
← →
ViK © (2006-06-08 11:19) [35]AnsiToOem() надо использовать для обычного текста (только для русских букв), а псевдографику вставлять кодами:
JvRichEdit.Font.Charset := OEM_CHARSET;
JvRichEdit.Font.Name := "Terminal";
JvRichEdit.Font.Size := 20;
s1 := #201#205#205#205#205#205#205#205#205#205#187;
JvRichEdit.Lines.Add(s1);
AnsiToOem("Таблица", s); s1 := s;
s1 := #186#32 + s1 + #32#186;
JvRichEdit.Lines.Add(s1);
s1 := #200#205#205#205#205#205#205#205#205#205#188;
JvRichEdit.Lines.Add(s1);
Для вставки текста можно пользоваться функциями:
JvRichEdit.AddFormatText(...)
JvRichEdit.InsertFormatText(...)
они немного удобней
← →
mefodiy (2006-06-08 16:59) [36]>>ViK ©
Вот, что получилось
ЙННННННННН»
є ’ Ў«Ёж є
ИНННННННННј
← →
mefodiy (2006-06-13 07:49) [37]>ViK ©
Отзовись!!!!!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.01 c