Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.02;
Скачать: CL | DM;

Вниз

Вывод знаков псевдографики в 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]

│┤╡╢╖╕╣║╗╝╜&#9 563;┐└┴┬├─┼╞╟╚&#9556 ;╩╦╠═╬╧╨╤╥╙╘&# 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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.044 c
2-1149835201
Tempora
2006-06-09 10:40
2006.07.02
Как перезапустить службу?


2-1150272289
cherman
2006-06-14 12:04
2006.07.02
tchart


15-1147704844
Новичоккк
2006-05-15 18:54
2006.07.02
Ничего не понимаю


2-1149755228
VitV
2006-06-08 12:27
2006.07.02
Хранение паролей в Базе


6-1140336724
Новочеркасский Волк
2006-02-19 11:12
2006.07.02
Клиент-Сервер-Мышь