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

TPARAFORMAT2

- компонент
Компонент TRichEdit
Определяет информацию о свойствах абзаца, используемую элементом управления Microsoft Rich Edit версии 2.0.

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

pf2Obj=new TPARAFORMAT2();

Собственные свойства
Свойство Тип Описание
Mask Enumset маска на активные свойства (см. ниже)
Alignment Enum выравнивание абзаца (см. ниже)
BorderSpace Number отступ между окружающей рамкой и текстом абзаца в единицах twips
BorderWidth Number толщина окружающей рамки в единицах twips
Borders Number параметры рамки (см. Примечание)
Effects Enumset расширенные свойства абзаца (см. ниже)
LineSpacing Number интервал между строками абзаца, задаваемый свойством LineSpacingRule
LineSpacingRule Enum тип интервала между строками абзаца (см. ниже)
Numbering Enum индексация абзацев (см. ниже)
NumberingStart String односимвольная строка, служащая начальным индексом для индексированных абзацев (см. свойство Numbering)
NumberingStyle Enum стиль индексации абзацев (см. ниже)
NumberingTab Number отступ в единицах twips от индекса абзаца до его текста
Offset Number левый отступ второй и последующих строк абзаца в единицах twips
RightIndent Number правый отступ абзаца в единицах twips
ShadingStyle Number стиль теневого оформления и цвета теней переднего и заднего плана (см. Примечание)
ShadingWeight Number процент цвета тени переднего плана
SpaceAfter Number отступ после абзаца в единицах twips
SpaceBefore Number отступ до абзаца в единицах twips
StartIndent Number левый отступ первой строки абзаца в единицах twips
Style Enum стиль абзаца (не используется)

Свойство Mask
Значение Описание
PFM_ALIGNMENT активно свойство Alignment
PFM_BORDER активны свойства BorderSpace, BorderWidth и Borders
PFM_LINESPACING активны свойства LineSpacing и LineSpacingRule
PFM_NUMBERING активно свойство Numbering
PFM_NUMBERINGSTART активно свойство NumberingStart
PFM_NUMBERINGSTYLE активно свойство NumberingStyle
PFM_NUMBERINGTAB активно свойство NumberingTab
PFM_OFFSET активно свойство Offset
PFM_OFFSETINDENT активно свойство StartIndent
PFM_RIGHTINDENT активно свойство RightIndent
PFM_SHADING активны свойства ShadingWeight и ShadingStyle
PFM_SPACEAFTER активно свойство SpaceAfter
PFM_SPACEBEFORE активно свойство SpaceBefore
PFM_STARTINDENT активно свойство StartIndent
PFM_STYLE активно свойство Style
PFM_DONOTHYPHEN активен атрибут PFE_DONOTHYPHEN свойства Effects
PFM_KEEP активен атрибут PFE_KEEP свойства Effects
PFM_KEEPNEXT активен атрибут PFE_KEEPNEXT свойства Effects
PFM_NOLINENUMBER активен атрибут PFE_NOLINENUMBER свойства Effects
PFM_NOWIDOWCONTROL активен атрибут PFE_NOWIDOWCONTROL свойства Effects
PFM_PAGEBREAKBEFORE активен атрибут PFE_PAGEBREAKBEFORE свойства Effects
PFM_RTLPARA активен атрибут PFE_RTLPARA свойства Effects
PFM_SIDEBYSIDE активен атрибут PFE_SIDEBYSIDE свойства Effects
PFM_TABLE активен атрибут PFE_TABLE свойства Effects

Свойство Alignment
Значение Описание
PFA_CENTER выровнять по центру
PFA_LEFT выровнять влево (по умолчанию)
PFA_RIGHT выровнять вправо

Свойство Effects
Значение Описание
PFE_DONOTHYPHEN запретить автоматический перенос слов
PFE_KEEP запретить перенос страницы в абзаце
PFE_KEEPNEXT запретить перенос страницы между текущим и следующим абзацем
PFE_NOLINENUMBER запретить нумерацию строк
PFE_NOWIDOWCONTROL запретить контроль висячих строк в выделенном абзаце
PFE_PAGEBREAKBEFORE вставить перенос страницы до выделенного абзаца
PFE_RTLPARA абзац использует порядок чтения справа налево
PFE_SIDEBYSIDE отобразить абзацы друг за другом
PFE_TABLE абзац является строкой таблицы

Свойство LineSpacingRule
Значение Описание
0 одинарный интервал, свойство LineSpacing игнорируется
1 полуторный интервал, свойство LineSpacing игнорируется
2 двойной интервал, свойство LineSpacing игнорируется
3 интервал определяется свойством LineSpacing, заданного в единицах twips; однако, если свойство LineSpacing меньше одинарного интервала, использутеся одинарный интервал
4 интервал определяется свойством LineSpacing, заданного в единицах twips
5 интервал определяется свойством LineSpacing, заданного в 1/20 величины одинарного интервала

Свойство Numbering
Значение Описание
PFN_NONE абзацы не имеют индексации
PFN_BULLET абзацы индексированы стандартным маркером
PFN_ARABIC индексированные абзацы вида: 0, 1, 2, ...
PFN_LCLETTER индексированные абзацы вида: a, b, c, ...
PFN_UCLETTER индексированные абзацы вида: A, B, C, ...
PFN_LCROMAN индексированные абзацы вида: i, ii, iii, ...
PFN_UCROMAN индексированные абзацы вида: I, II, III, ...
PFN_NUMSTART индексированные абзацы с начальным индексом, определяемым свойством NumberingStart

Свойство NumberingStyle
Значение Описание
PFNS_NONUMBER индекс абзаца отсутствует
PFNS_NEWNUMBER индекс абзаца начинается со значения, указанного в свойстве NumberingStart
PFNS_PAREN индекс абзаца отделен правой круглой скобкой
PFNS_PARENS индекс абзаца заключен в круглые скобки
PFNS_PERIOD индекс абзаца продолжает заданную индексацию
PFNS_PLAIN индекс абзаца содержит тоько число

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

Пример (JS+)
var VSW=GetSystemMetrics(SM_CXVSCROLL);

// Главная форма
frm=new TForm();
frm.Caption="JS+ - компонент TPARAFORMAT2";
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;
}
Примечание
  • Многие свойства компонента TPARAFORMAT2 имеют единицы измерения twips. Это независимая от разрешения экрана единица, определенная как 1/1440 дюйма, и гарантирующая, что пропорции заданных в ней элементов будут одинаковы на всех устройствах отображения информации.
  • Свойство Borders является числом, биты которого определяют параметры отображения рамки.

Биты 0-7 определяют отображаемые стороны рамки, а также ее вид:

ЗначениеОписание
1отображать левую сторону рамки
2отображать правую сторону рамки
4отображать верхнюю сторону рамки
8отображать нижнюю сторону рамки
16отображать внутреннюю рамку
32отображать внешнюю рамку
64использовать стандартную расцветку рамки (биты 12-15 игнорируются)

Биты 8-11 определяют стиль линии рамки:

ЗначениеОписание
0сплошная рамка
13/4 точки
21 и 1/2 точки
32 и 1/4 точки
43 точки
54 и 1/2 точки
66 точкек
73/4 двойной точки
81 и 1/2 двойной точки
92 и 1/4 двойной точки
103/4 точки (серая)
113/4 точки (серая пунктирная)

Биты 12-15 определяют цвет рамки:

ЗначениеОписание
0черный
1синий
2бирюзовый
3зеленый
4сиреневый
5красный
6желтый
7белый
8темно-синий
9темно-бирюзовый
10темно-зеленый
11фиолетовый
12темно-красный
13темно-желтый
14темно-серый
15светло-серый
  • Свойство ShadingStyle является числом, биты которого определяют стиль теневого оформления и цвета теней переднего и заднего плана.

Биты 0-3 определяют стиль теневого оформления:

ЗначениеОписание
0тень отсутствует
1темная горизонтальная тень
2темная вертикальная тень
3темная нижняя диагональная тень
4темная верхняя диагональная тень
5темная теневая сетка
6темная теневая решетка
7светлая горизонтальная тень
8светлая вертикальная тень
9светлая нижняя диагональная тень
10светлая верхняя диагональная тень
11светлая теневая сетка
12светлая теневая решетка

Биты 4-7 определяют цвет тени переднего плана, биты 8-11 определяют цвет тени заднего плана:

ЗначениеОписание
0черный
1синий
2бирюзовый
3зеленый
4сиреневый
5красный
6желтый
7белый
8темно-синий
9темно-бирюзовый
10темно-зеленый
11фиолетовый
12темно-красный
13темно-желтый
14темно-серый
15светло-серый
Совместимость
Windows API
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/Component/TRichEdit/TPARAFORMAT2.htm
© 2024,