JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

TRichEdit

- визуальный компонент
Компоненты JS+
Определяет стандартный редактор текста.

Создание объекта

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 разрешить перенос слов в длинных строках на новую строку
Только чтение
CanUndo Boolean редактирование текста можно отменить методом Undo
Paragraph TParaAttributes атрибуты текущего абзаца (с выделенным текстом или с установленным курсором)

Свойство ScrollBars
Значение Описание
ssNone нет полос прокрутки
ssHorizontal горизонтальная полоса прокрутки
ssVertical вертикальная полоса прокрутки
ssBoth обе полосы прокрутки

Стандартные свойства

Собственные методы
Метод Описание
Clear удаляет весь редактируемый текст
ClearSelection удаляет выделенный фрагмент
ClearUndo очищает буфер отмены редактирования
CopyToClipboard копирует выделенный фрагмент в буфер обмена
CutToClipboard вырезает выделенный фрагмент в буфер обмена
FindText ищет в редактируемом тексте указанную строку
PasteFromClipboard вставляет текст из буфера обмена
Print распечатывает редактируемый текст на текущем принтере
SelectAll выделяет весь редактируемый текст
SetParaFormat2 устанавливает свойства текущего или выделенного абзаца
Undo отменяет последнюю операцию редактирования

Стандартные методы

Собственные события
Событие Описание
OnChange редактируемый текст изменился
OnProtectChange произошла попытка изменить текст, имеющий атрибут Protected
OnResizeRequest текст будет перерисован в связи с изменением шрифта
OnSaveClipboard запрос на сохранение информации в буфере обмена при уничтожении компонента
OnSelectionChange выделенный текст изменился

Стандартные события

Пример (JS+)
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+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/Component/TRichEdit.htm
© 2024,