![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод знаков псевдографики в RichEdit [D7, WinXP]
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]) разбирай на коды.