|
|
Устанавливает свойства текущего или выделенного абзаца с использованием
WinAPI-сообщения EM_SETPARAFORMAT.
Синтаксис
rchEdtObj.SetParaFormat2(
| ParaFormat2
| );
|
Параметры
|
Параметр
| Тип
| Описание
|
ParaFormat2
| TPARAFORMAT2
| дескриптор компонента TPARAFORMAT2, определяющего свойства абзаца
|
|
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+ | Руководство пользователя
|
|
|
|
|
|