Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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]

│┤╡╢╖╕╣║╗╝╜&#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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.011 c
11-1129729491
Dmitry Galin
2005-10-19 17:44
2006.07.02
KOL & BDS 2005?


1-1148213533
Windows
2006-05-21 16:12
2006.07.02
Работа с CD-RW


1-1148547389
yahaha
2006-05-25 12:56
2006.07.02
WebBrowser и атрибут STYLE


2-1150421663
Anonymous2
2006-06-16 05:34
2006.07.02
Удаление файлов из папки.


2-1150286067
parovoZZ
2006-06-14 15:54
2006.07.02
Class type required - что значит?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский