Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вывод знаков псевдографики в RichEdit [D7, WinXP]


Страницы:   1 2

mefodiy ©   (2006-05-21 13:59:00) 

Как можно вывести в RichEdit показанные ниже знаки псевдографики?

┌────┬────┐
│        │       │
├────┼────┤
│        │        │
└────┴────┘


mefodiy   (2006-06-13 07:49:00) [1]

>ViK ©

Отзовись!!!!!!!


mefodiy   (2006-06-08 16:59:00) [2]

>>ViK ©

Вот, что получилось

ЙННННННННН»
є ’ Ў«Ёж  є
ИНННННННННј


ViK   (2006-06-08 11:19:00) [3]

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 08:17:00) [4]

>>У меня заработало 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 01:39:00) [5]

У меня заработало OEM_CHARSET + Terminal
Только при вводе русских букв (програмно) надо будет использовать функцию AnsiToOEM


mefodiy   (2006-06-07 16:53:00) [6]

>>сохранить в rtf и уже из rtf выдрать

Это возможно  с использованием

RichEdit.Lines.LoadFromFile('имя файла').

Все нормально загружается и отображается. Но это меня не устраивает, так мне нужно рисовать и заполнять данными таблицу в runtime, чтобы у пользователя была возможность предварительного просмотра.

>>Может есть смысл порыть в сторону WideChar и WideString чтобы можно было использовать UNICODE

Перепробовал все.


Vasiliy   (2006-06-07 12:20:00) [7]

Может есть смысл порыть в сторону WideChar и WideString чтобы можно было использовать UNICODE


tButton   (2006-06-07 09:07:00) [8]

если мне правильно изменяет память - я выводил в memo текст шрифтом terminal и рамки отображались

как вариант, не помню предлагалось уже или нет, могу предложить сделать рамки в ворде, сохранить в rtf и уже из rtf выдрать... не знаю что оттуда выдирать =) ибо... не знаю =)

а вообще RichEdit вроде б как таблицы поддерживать должен


mefodiy   (2006-06-07 07:46:00) [9]

Шутки шутками, а работа не продвигается!


tButton   (2006-06-06 08:10:00) [10]


> Как я понял элементы рамки вывести в RichEdit принципиально
> не возможно.

переименуем его в PoorEdit? =)


mefodiy   (2006-06-06 08:04:00) [11]

>Vasiliy

Спасибо за труды.
Как я понял элементы рамки вывести в RichEdit принципиально не возможно.


Vasiliy   (2006-06-05 13:49:00) [12]

Да, забыл ...
Другие чарсеты, кроме SYMBOL_CHARSET, выдают одинаковые символы.


Vasiliy   (2006-06-05 13:47:00) [13]

Вот набросал:


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.
Увы, элементов рамки там не нашел, зато много всяких интересных закорючек :)


Cash   (2006-06-05 12:26:00) [14]

Видимо, это невозможно...
Я и сам бедился, и перелопатил прилично по этому вопросу, ничего
толкового нет.
Идать, точно, невозможно...


mefodiy   (2006-06-05 10:41:00) [15]

Мастера!
Помогите же начинающему или скажите, что это невозможно!


Cash   (2006-06-02 18:42:00) [16]

Мистика! Я вставил код между двумя символами псевдографики и они
!!!все!!! превратились в простые символы! Ничего не понимаю! %(


mefodiy   (2006-06-02 17:33:00) [17]

Да уж все перепробовано

CharSet := RUSSIAN_CHARSET;
CharSet := OEM_CHARSET;
CharSet := ANSI_CHARSET;
Name := 'Arial';
Name := 'Courier New';
Name := 'Terminal';


Cash   (2006-06-02 17:13:00) [18]

Так, а атрибуты? Шрифт, CharSet (покапайся в нем, чую оно), стиль и
размер. Ты это выведи!


mefodiy   (2006-06-02 16:55:00) [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 14:09:00) [20]

Там же SelAtributes есть, а ты сказал, что можешь в свое RichEdit воткнуть
псевдографику из Word-а.
Ну дак вот, собираем строку, втюхиваем ее нашему RichEdit-у, ставим
SelStart на начало строки, а SelLength - в длину строки, меньше можно,
больше ни ни! А потом по спецательно подготовленной кнопочке щелкаем,
а там ты должен дать сам себе всю информацию из SelAtributes, ну, если
охота, то и из Paragraph тоже. Вроде так. А кодировки? SelText вроде
есть, его по ord() или byte(SelText[i]) разбирай на коды.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо