|
Определяет информацию о свойствах абзаца, используемую элементом управления 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
| индекс абзаца содержит тоько число
|
|
Стандартные методы
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 | сплошная рамка
| 1 | 3/4 точки
| 2 | 1 и 1/2 точки
| 3 | 2 и 1/4 точки
| 4 | 3 точки
| 5 | 4 и 1/2 точки
| 6 | 6 точкек
| 7 | 3/4 двойной точки
| 8 | 1 и 1/2 двойной точки
| 9 | 2 и 1/4 двойной точки
| 10 | 3/4 точки (серая)
| 11 | 3/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+ | Руководство пользователя
|
|
|