Интересно, а как сделать в 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/