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

SetParaFormat2

- метод компонента TRichEdit
Компонент TRichEdit
Устанавливает свойства текущего или выделенного абзаца с использованием WinAPI-сообщения EM_SETPARAFORMAT.
Синтаксис
rchEdtObj.SetParaFormat2(
  ParaFormat2
);

Параметры
Параметр Тип Описание
ParaFormat2 TPARAFORMAT2 дескриптор компонента TPARAFORMAT2, определяющего свойства абзаца
Пример (JS+)
var VSW=GetSystemMetrics(SM_CXVSCROLL);

// Главная форма
frm=new TForm();
frm.Caption="JS+ - метод компонента TRichEdit SetParaFormat2";
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/Method/SetParaFormat2.htm
© 2024,