ich habe ein Problem beim Aufruf der von RichMemo mit einem leeren Editor.
Ich möchte den Font vor einstellen (der aktuelle Font unter dem Cursor wird in einer Toolbar-Leiste angezeigt - zweiter Code).
Beim jungfräulichen Editor ist es purer Zufall, welcher Font welche Schriftfarbe oder welcher Hintergrund ausgelesen wird. Meines Erachtens liegt das an der RichMemo-Procedure:
Code: Alles auswählen
procedure InitFontParams(out p: TFontParams);
begin
FillChar(p, SizeOf(p), 0);
end;
Ich habe in meinem Programm es mit folgendem Code-Stück versucht zu lösen:
Code: Alles auswählen
procedure TForm1.EditorInit;
var fo: TFontParams;
begin
fo.Name := 'Calibri';
fo.Size := 10;
fo.Color := clBlack;
fo.BkColor := clWhite;
rmEditor.SetTextAttributes(rmEditor.SelStart, rmEditor.SelLength, fo);
end;
"in Datei: .win32\win32richmemoproc.pas Zeile 321:
Result:=EffMask[VPOS];"
Diese Procedure wird in den Editor-Ereignisse OnChange, OnClick und OnKeyUp aufgerufen um immer den aktuellen Font unter dem Cursor auf das Menü zu übertragen
Code: Alles auswählen
procedure TForm1.EditorMenuPaint;
var tp : TFontParams;
al : TParaAlignment;
pn : TParaNumbering;
i : Integer;
begin
i := rmEditor.SelStart;
if i > 0 then dec(i);
rmEditor.GetTextAttributes(i, tp);
rmEditor.GetParaAlignment(i, al);
rmEditor.GetParaNumbering(i, pn);
sbBold.Down := fsBold in tp.Style;
sbItalic.Down := fsItalic in tp.Style;
sbUnderline.Down := fsUnderline in tp.Style;
sbStrikeOut.Down := fsStrikeOut in tp.Style;
sbLeft.Down := (al = paLeft);
sbCenter.Down := al = paCenter;
sbRight.Down := al = paRight;
sbJustify.Down := al = paJustify;
sbBullet.Down := pn.Style = pnBullet;
sbNumber.Down := pn.Style = pnNumber;
edForeColor.Font.Color := tp.Color;
edBackColor.Color := tp.BkColor;
edFont.Text := tp.Name;
edSize.Text := IntToStr(tp.Size);
end;
Hat da jemand eine Lösung?
LG Ronny58