Search Results for

    Show / Hide Table of Contents

    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.)

    In This Article
    Back to top 2025 © COSMO CONSULT - Data protection - Imprint