|
|
Определяет стандартный редактор текста.
Создание объекта
redObj=new TRichEdit(Parent);
Собственные свойства
|
Свойство
| Тип
| Описание
|
CaretPos
| TPoint
| текущая позиция курсора
|
DefAttributes
| TTextAttributes
| шрифтовые атрибуты всего текста
|
HideSelection
| Boolean
| убирать выделение текста при потере фокуса ввода
|
HideScrollBars
| Boolean
| скрыть полосы прокрутки
|
Lines
| TStrings
| список строк редактируемого текста
|
MaxLength
| Number
| максимально допустимая длина редактируемого текста
|
PageRect
| TRect
| размеры страницы при печати на принтере
|
PlainText
| Boolean
| запретить чтение и запись служебной информации формата RTF
|
ReadOnly
| Boolean
| запретить изменение редактируемого текста
|
ScrollBars
| Enum
| отображение полос прокрутки (см. ниже)
|
SelAttributes
| TTextAttributes
| шрифтовые атрибуты выделенного текста
|
SelLength
| Number
| количество символов выделенного текста
|
SelStart
| Number
| индекс первого символа выделенного текста, начиная с 0. При отсутствии выделения - индекс символа, перед которым находится курсор
|
SelText
| String
| выделенный текст (установка нового значения заменяет выделенный текст, а при отсутствии выделения вставляет его в позицию курсора)
|
Text
| String
| редактируемый текст
|
WantReturns
| Boolean
| разрешить ввод символа перевода на новую строку
|
WantTabs
| Boolean
| разрешить ввод символа табуляции
|
WordWrap
| Boolean
| разрешить перенос слов в длинных строках на новую строку
|
Только чтение
| [TYPE]
| [DESC]
|
CanUndo
| Boolean
| редактирование текста можно отменить методом Undo
|
Paragraph
| TParaAttributes
| атрибуты текущего абзаца (с выделенным текстом или с установленным курсором)
|
|
Стандартные свойства
Собственные методы
|
Метод
| Описание
|
Clear
| удаляет весь редактируемый текст
|
ClearSelection
| удаляет выделенный фрагмент
|
ClearUndo
| очищает буфер отмены редактирования
|
CopyToClipboard
| копирует выделенный фрагмент в буфер обмена
|
CutToClipboard
| вырезает выделенный фрагмент в буфер обмена
|
FindText
| ищет в редактируемом тексте указанную строку
|
PasteFromClipboard
| вставляет текст из буфера обмена
|
Print
| распечатывает редактируемый текст на текущем принтере
|
SelectAll
| выделяет весь редактируемый текст
|
SetParaFormat2
| устанавливает свойства текущего или выделенного абзаца
|
Undo
| отменяет последнюю операцию редактирования
|
|
Стандартные методы
Стандартные события
var VSW=GetSystemMetrics(SM_CXVSCROLL);
// Главная форма frm=new TForm(); frm.Caption="JS+ - визуальный компонент TRichEdit"; frm.Width =800; frm.Height=600; frm.BorderStyle=bsSizeable; frm.BorderIcons=biMaximize | biMinimize | biSystemMenu;
// Строка состояния stb=new TStatusBar(frm); stb.OnResize=stb_Resize; stb.SimplePanel=false; for (i=w=0;i<3;i++) { stp=new TStatusPanel(stb); switch (i) { case 0: continue; case 1: stp.Text="Вставка"; break; case 2: stp.Text="Строка 000 из 000"; } stp.Alignment=taCenter; w+=(stp.numTag=stp.Width=stb.TextWidth(stp.Text)+20); } stb.Panels[0].Text=" Пример простого текстового редактора";
// ToolBar tlb=new TToolBar(frm); tlb.BorderWidth=4;
// Список шрифтов cb1=new TComboBox(tlb); cb1.Name="F"; cb1.AutoDropDown=true; for (i=max_dx=0;i<Screen.Fonts.Count;i++) { cb1.Items.Add(Lst_Str=Screen.Fonts[i]); if ((dx=cb1.TextWidth(Lst_Str))>max_dx) max_dx=dx; } cb1.DropDownCount=Math.min(i,15); cb1.ClientWidth=max_dx+cb1.TextWidth("_")+VSW; cb1.OnSelect=cmb_Select;
// Список размеров шрифта cb2=new TComboBox(tlb); cb2.Name="S"; cb2.AutoDropDown=true; cb2.Align=alNone; for (i=6,max_dx=0;i<50;i+=2) { cb2.Items.Add(Lst_Str=""+i); if ((dx=cb2.TextWidth(Lst_Str))>max_dx) max_dx=dx; } cb2.DropDownCount=cb1.DropDownCount; cb2.ClientWidth=max_dx+cb2.TextWidth("_")+VSW; cb2.OnSelect=cmb_Select;
// Кнопки for (i=0;i<7;i++) { tbt=new TToolButton(tlb); tbt.Style=tbsCheck; tbt.ShowHint=true;
switch (i) { // Разделитель case 3: tbt.Style=tbsSeparator; tbt.Width=4; continue;
// Стиль шрифта case 0: tbt_Name="B"; tbt.Hint="Полужирный"; break; case 1: tbt_Name="I"; tbt.Hint="Курсив"; break; case 2: tbt_Name="U"; tbt.Hint="Подчеркнутый"; break;
// Выравнивание текста case 4: tbt_Name="L"; tbt.Hint="Влево"; tbt.AllowAllUp=tbt.Grouped=tbt.Down=true; break; case 5: tbt_Name="C"; tbt.Hint="По центру"; tbt.AllowAllUp=tbt.Grouped=true; break; case 6: tbt_Name="R"; tbt.Hint="Вправо"; tbt.AllowAllUp=tbt.Grouped=true; } tbt.Name=tbt_Name;
tbt.LoadImage(JSPlus.HelpDir+"IMAGE\\TRichEdit\\"+tbt_Name+".ico"); tbt.OnClick=tbt_Click; }
// RichEdit rce=new TRichEdit(frm); rce.BorderStyle=bsSingle; rce.Align=alClient; rce.Font.Name="Times New Roman"; rce.Font.Size=10; rce.OnClick=rce_Click; rce.OnKeyUp=rce_KeyUp; rce_StatusLines(rce);
cb1.Text=rce.Font.Name; cb2.Text=""+rce.Font.Size;
stb_Resize(stb); rce.SetFocus(); frm.ShowModal();
function rce_StatusLines(rce) { stb.Panels[2].Text="Строка "+ (rce.CaretPos.y+1)+" из "+(rce.Text.substrings("\n")+1); }
function rce_ToolBar(rce) { var cmp,pf2,pfType=0,fsType=0,sat=rce.SelAttributes;
for (i=0;i<tlb.ButtonCount;i++) { switch ((cmp=tlb.Buttons[i]).Name) { case "L": pfType=PFA_LEFT; break; case "C": pfType=PFA_CENTER; break; case "R": pfType=PFA_RIGHT; break; case "B": fsType=fsBold; break; case "I": fsType=fsItalic; break; case "U": fsType=fsUnderline; break; default: continue; }
if ((cmp.Down) && (pfType>0)) { pf2=new TPARAFORMAT2(); pf2.Mask=PFM_ALIGNMENT; pf2.Alignment=pfType; rce.SetParaFormat2(pf2); pf2.Delete(); continue; }
if (cmp.Down) sat.Style|=fsType; else sat.Style&=~fsType; } }
// Обработчик события OnClick ToolButton function tbt_Click(tbt) { var btn,dlg;
switch (tbt.Name) { case "L": case "C": case "R": if ((!tbt.Down) && ((btn=tlb.FindChildControl("L"))!=null)) btn.Down=true; } rce_ToolBar(rce); }
// Обработчик события OnClick RichEdit function rce_Click(rce) { rce_StatusLines(rce); }
// Обработчик события OnSelect function cmb_Select(cmb) { var sat=rce.SelAttributes;
rce.SetFocus(); switch (cmb.Name) { case "F": sat.Name=cmb.Text; break; case "S": sat.Size=parseInt(cmb.Text); } }
// Обработчик события OnKeyUp function rce_KeyUp(rce,Key,Shift) { var Ovr_Str="";
rce_StatusLines(rce);
if (Key!=VK_INSERT) return;
rce.numTag=1-rce.numTag; switch (rce.numTag) { case 0: Ovr_Str="Вставка"; break; case 1: Ovr_Str="Замена"; } stb.Panels[1].Text=Ovr_Str; }
// Обработчик события OnResize function stb_Resize(stb) { var i,w;
for (i=stb.Panels.Count-1,w=0;i>0;i--) w+=(stb.Panels[i].Width=stb.Panels[i].numTag); stb.Panels[0].Width=stb.ClientWidth-w; }
|
Совместимость
C++ Builder/Delphi
|
JS+ | Руководство пользователя
|
|
|
|
|
|