Anpassen
Es ist möglich, den Editor auf einer bestehenden Seite einzubetten oder eine Aktion hinzuzufügen, um den Editor auf einer separaten Seite zu öffnen.
Editor-Aktion
Der einfachste Weg, den Editor zu implementieren, ist, ihn über eine Aktion zu öffnen.
Hier ist ein Beispiel für das Hinzufügen der Aktionen:
action(ActionRichTextEditor)
{
ApplicationArea = CCSTMRTE;
Caption = 'Rich-Text-Editor';
Image = DocumentEdit;
Promoted = true;
PromotedCategory = Process;
PromotedOnly = true;
ToolTip = 'Öffnen Sie den Rich-Text-Editor für die ausgewählte Zeile.';
trigger OnAction()
begin
OpenRichTextEditor(false);
CurrPage.Update(false);
end;
}
action(ActionRichTextEditorLineConversion)
{
ApplicationArea = CCSTMRTE;
Caption = 'Rich-Text-Editor (Zeilenumwandlung)';
Image = DocumentEdit;
Promoted = true;
PromotedCategory = Process;
PromotedOnly = true;
ToolTip = 'Öffnen Sie den Rich-Text-Editor für die ausgewählte Zeile und wandeln Sie den Text anschließend in reine Text-Dokumentenzeilen um.';
Visible = PageEditable;
trigger OnAction()
begin
OpenRichTextEditor(true);
CurrPage.Update(false);
end;
}
Hier ist ein Beispiel für den Aufruf des Editors bei einer Aktion:
local procedure OpenRichTextEditor(LineConversion: Boolean)
var
TempRichTextLine: Record "CCS TM Line Document" temporary;
begin
TempRichTextLine.Copy(Rec, true);
OpenRichTextEditor(TempRichTextLine, LineConversion, CurrPage.Editable);
end;
procedure OpenRichTextEditor(RichTextLine: Record "CCS TM Line"; LineConversion: Boolean): Boolean
var
RichTextEditor: Page "CCS TM Rich Text Editor";
begin
RichTextEditor.SetContent(GetRichText(RichTextLine, RichTextLine.FieldNo("Rich Text")));
RichTextEditor.SetRequestPageId(Page::"CCS TM Subform");
RichTextEditor.SetEditable(true);
if RichTextEditor.RunModal() = Action::OK then begin
SetRichText(RichTextLine, RichTextEditor.GetContent());
SetLineText(RichTextLine, RichTextEditor.GetText());
RichTextLine.Modify();
DeleteChildLines(RichTextLine);
if LineConversion then
ConvertLines(RichTextLine, RichTextEditor.GetText());
exit(true);
end;
end;
Die Zeilenumwandlung wird nicht im Detail behandelt. Prüfen Sie codeunit 5060608 "CCS TM Rich Text Management"
für Details.
Integrierter Editor
Das Benutzersteuerelement CCS TM Rich Text Editor
definiert den Rich-Text-Editor. Um den Editor in eine bestehende Seite einzubetten, muss das Benutzersteuerelement hinzugefügt werden, außerdem muss das Speichern und Laden des Inhalts gehandhabt werden.
Hier ist ein Beispiel für das Hinzufügen der Benutzersteuerung:
group("CCS TM Rich Text Editor Group")
{
Caption = 'Rich-Text-Editor';
usercontrol("CCS TM Rich Text Editor"; "CCS TM Rich Text Editor")
{
ApplicationArea = CCSTMRTE;
trigger OnControlAddInReady()
var
Management: Codeunit "CCS TM Rich Text Management";
begin
CurrPage."CCS TM Rich Text Editor".InitializeEditor(Management.GetEditorToolbarString(Page::"Extended Text"));
end;
trigger OnEditorInitialized()
begin
EditorInitialized := true;
LoadContentToEditor();
end;
trigger OnEditorChange(Content: Text; Text: Text)
begin
SaveContentFromEditor(Content);
end;
}
}
Hier ist ein Beispiel für die Handhabung des Speicherns und Ladens von Inhalt:
trigger OnAfterGetCurrRecord()
begin
LoadContentToEditor();
end;
local procedure UpdateControls()
begin
if EditorInitialized then
CurrPage."CCS TM Rich Text Editor".SetReadOnly(not Editable);
end;
local procedure LoadContentToEditor()
var
Content: Text;
InStr: InStream;
begin
if not EditorInitialized then
exit;
Rec.CalcFields("CCS TM Rich Text");
Rec."CCS TM Rich Text".CreateInStream(InStr);
InStr.Read(Content);
CurrPage."CCS TM Rich Text Editor".SetContent(Content);
end;
local procedure SaveContentFromEditor(Content: Text)
var
OutStr: OutStream;
begin
if StrLen(Content) > 0 then begin
Clear(Rec."CCS TM Rich Text");
Rec."CCS TM Rich Text".CreateOutStream(OutStr);
OutStr.Write(Content);
end else
Clear(Rec."CCS TM Rich Text");
end;
Um Zeilen umzuwandeln, nutzen Sie ein Ereignis der Benutzersteuerung:
trigger OnConvertToLines(Content: Text; Text: Text)
begin
ConvertLines(Text);
end;
Die Konvertierungsimplementierung könnte wie folgt aussehen:
local procedure ConvertLines(EditorText: Text)
var
Line: Text;
LineLine: Text;
Lines: List of [Text];
LineLines: List of [Text];
Management: Codeunit "CCS TM Rich Text Management";
NextLineNo: Integer;
ExtendedTextLine: Record "Extended Text Line";
begin
DeleteChildLines();
NextLineNo := 1;
Management.ConvertTextToLines(EditorText, Lines);
foreach Line in Lines do begin
Management.SplitTextToLines(Line, MaxStrLen(ExtendedTextLine.Text), LineLines);
foreach LineLine in LineLines do begin
CreateLine(NextLineNo, LineLine);
NextLineNo += 1;
end;
end;
end;
local procedure CreateLine(LineNo: Integer; Value: Text)
var
ExtendedTextLine: Record "Extended Text Line";
begin
ExtendedTextLine."Table Name" := Rec."Table Name";
ExtendedTextLine."No." := Rec."No.";
ExtendedTextLine."Language Code" := Rec."Language Code";
ExtendedTextLine."Text No." := Rec."Text No.";
ExtendedTextLine."Line No." := LineNo;
ExtendedTextLine.Text := Value;
ExtendedTextLine.Insert();
end;
local procedure DeleteChildLines()
var
ExtendedTextLine: Record "Extended Text Line";
begin
ExtendedTextLine.SetRange("Table Name", Rec."Table Name");
ExtendedTextLine.SetRange("No.", Rec."No.");
ExtendedTextLine.SetRange("Language Code", Rec."Language Code");
ExtendedTextLine.SetRange("Text No.", Rec."Text No.");
if not ExtendedTextLine.IsEmpty then
ExtendedTextLine.DeleteAll();
end;
Feedback
Senden Sie Feedback für diese Seite. (Beachten Sie, dass diese Umfrage auf Englisch ist.)