Интересно, а как сделать в richEdit текст по центру абзаца?
Добавлено спустя 8 минут 42 секунды:Да и отступы хотелось бы выставлять руками.
Добавлено спустя 2 часа 1 минуту 54 секунды:Выравнивание по центру нашел.
- Код: Выделить всё
- Editors.SetParaAlignment(Editors.SelStart, Editors.SelLength, paCenter);
 
Будем искать отступ.
Добавлено спустя 23 часа 9 минут 45 секунд:Разобрался. Set/GetParaMetric. Немного смутило, что как и в первом случае идет неявное использование абзаца. И не совсем понятно зачем нужна длинна текста... для того чтобы можно было захватить несколько абзацев?
Добавлено спустя 5 часов 12 минут 41 секунду:Не могу понять почему метод не срабатывает полностью при первом нажатии. Требуется 2-3 раза, что напрягает.
определение формы
- Код: Выделить всё
-   TFStyle = class(TForm)
 BColorPicker1: TBColorPicker;
 btGrab: TButton;
 cbItalic: TCheckBox;
 cbBold: TCheckBox;
 cbUnderline: TCheckBox;
 cbStrikeOut: TCheckBox;
 GColorPicker1: TGColorPicker;
 HexaColorPicker1: THexaColorPicker;
 lbFamily: TListBox;
 mbColorPreview1: TmbColorPreview;
 mbDeskPickerButton1: TmbDeskPickerButton;
 RColorPicker1: TRColorPicker;
 SpinEdit1: TSpinEdit;
 SpinEdit2: TSpinEdit;
 Splitter1: TSplitter;
 
 procedure btGrabClick(Sender: TObject);
 procedure FormActivate(Sender: TObject);
 procedure FormShow(Sender: TObject);
 procedure HexaColorPicker1Change(Sender: TObject);
 procedure lbFamilySelectionChange(Sender: TObject );
 procedure mbDeskPickerButton1SelColorChange(Sender: TObject);
 procedure RColorPicker1Change(Sender: TObject);
 procedure SpinEdit1Change(Sender: TObject);
 procedure SpinEdit2Change(Sender: TObject);
 private
 F:TFont;
 public
 Constructor Create(TheOwner: TComponent); override;
 Destructor Destroy; override;
 end;
 
 var
 FStyle: TFStyle;
проблемный метод
- Код: Выделить всё
 procedure TFStyle.btGrabClick(Sender: TObject);
 Var
 // OnOff:Boolean;
 tmp:integer;
 FParams:TFontParams;
 begin
 if not Assigned(FEditors) then Exit;
 FStyle.BeginFormUpdate;
 FEditors.Editors.GetTextAttributes(FEditors.Editors.SelStart, FParams);
 SelectedFont(FParams, F);
 FStyle.mbColorPreview1.Color:=F.Color;
 SetColorLines;
 FStyle.cbItalic.Checked    := F.Italic;
 FStyle.cbBold.Checked      := F.Bold;
 FStyle.cbUnderline.Checked := F.Underline;
 FStyle.cbStrikeOut.Checked := F.StrikeThrough;// ?возможно неправильно
 FStyle.SpinEdit2.Value     := F.Size;
 FStyle.SpinEdit1.Value:=FEditors.FirstLine;
 FStyle.EndFormUpdate;
 tmp:= FStyle.lbFamily.Items.IndexOf(F.Name);
 if tmp<>-1 then // нет смысла продолжать, если шрифт не выбран
 FStyle.lbFamily.ItemIndex:=tmp;
 FStyle.Repaint;
 end;
 
для понимания текста, определение SelectedFont(FParams, F);
- Код: Выделить всё
- Procedure SelectedFont(const FParams: TFontParams; Var Result:TFont);
 begin
 Result.Style:=FParams.Style;
 Result.Name:=FParams.Name;
 Result.Size:=FParams.Size;
 Result.Color:=FParams.Color;
 end;
 
 
Для остальных неясных моментов можно залезть в SVN 
https://mysvn.ru/Arinelex/lexeditor/trunk/