procedure EditText(var Text: Text; MaxLineStrLen: Integer; MaxTextLen: Integer; ReadOnly: Boolean) TextModified: Boolean
...
field(10; "Text"; Text[1000])
{
DataClassification = CustomerContent;
Caption = 'Text', Comment = 'DEU="Text"';
}
field(15; "Starting Date"; Date)
{
...
Da jeder Textzeile zusätzlich zum Text noch ein Startdatum und ein Enddatum hinterlegt werden kann und das Textfeld selbst groß genug ist, wurde hier nachfolgende einfache Lösung gewählt, welche den Text nicht auf mehrere Zeilen aufgesplittet. Ein Zeilenumbruch im Text ist trotzdem möglich.
Wichtig dabei ist, dass das Textfeld in der Page auf Editable = false; gesetzt wird, da in dieser Lösung die Zeilenumbrüche (nicht sichtbar) ebenfalls im Textfeld gespeichert werden....
procedure EditText(Editable: Boolean)
var
NCEXTextEditorMgt: Codeunit "NCEX Text Editor Mgt.";
TempText: Text;
begin
TempText := Text;
if not NCEXTextEditorMgt.EditText(TempText, 0, MaxStrLen(Text), not Editable) then
exit;
Text := CopyStr(TempText, 1, MaxStrLen(Text));
end;
...
Page
...
field("Text"; Rec."Text")
{
ApplicationArea = All;
ToolTip = 'Specifies the text. Click on the field to edit the text.', Comment = 'DEU="Gibt den Text an. Klicken Sie auf das Feld, um den Text zu bearbeiten."';
Editable = false;
AssistEdit = true;
trigger OnAssistEdit()
begin
Rec.EditText(CurrPage.Editable());
CurrPage.Update();
end;
}
...
procedure EditText(RecordRef: RecordRef; TextFieldNo: Integer; var TempBlob: Codeunit "Temp Blob"; ReadOnly: Boolean) TextModified: Boolean
Wichtig
Es muss besonders darauf geachtet werden, dass die richtigen Filter am RecordRef gesetzt sind.Hinweis
Die maximale Anzahl der Zeichen pro Zeile (MaxLineStrLen) wird bei diesem Aufruf über die Länge des TextFieldNo-Feldes ermittelt. Der Text wird bei der Eingabe im Editor automatisch umgebrochen, falls die Länge überschritten wird. Der Umbruch versucht dabei Wörter ganz zu lassen.pageextension 50000 "NVX Extended Text Lines" extends "Extended Text Lines"
{
actions
{
addfirst(Processing)
{
action(NVXTextEditorAction)
{
ApplicationArea = All;
Caption = 'Text Editor', Comment = 'DEU="Texteditor"';
Image = Edit;
ToolTip = 'Edit the text in the text editor.', Comment = 'DEU="Bearbeiten Sie den Text im Texteditor."';
trigger OnAction()
var
ExtendedTextLine: Record "Extended Text Line";
NCEXTextEditorMgt: Codeunit "NCEX Text Editor Mgt.";
TempBlob: Codeunit "Temp Blob";
RecordRef: RecordRef;
InStream: InStream;
NextLineNo: Integer;
TempText: Text;
begin
Clear(ExtendedTextLine);
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.");
RecordRef.GetTable(ExtendedTextLine);
if not NCEXTextEditorMgt.EditText(RecordRef, ExtendedTextLine.FieldNo(Text), TempBlob, not CurrPage.Editable()) then
exit;
ExtendedTextLine.LockTable();
ExtendedTextLine.DeleteAll();
NextLineNo := 10000;
TempBlob.CreateInStream(InStream);
while (not InStream.EOS()) do begin
Clear(ExtendedTextLine);
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." := NextLineNo;
NextLineNo += 10000;
InStream.ReadText(TempText);
ExtendedTextLine.Text := CopyStr(TempText, 1, MaxStrLen(ExtendedTextLine.Text));
ExtendedTextLine.Insert();
end;
end;
}
}
}
}
procedure EditText(var TempBlob: Codeunit "Temp Blob"; MaxLineStrLen: Integer; MaxTextLen: Integer; ReadOnly: Boolean) TextModified: Boolean
...
field(50000; "Text Preview"; Text[250])
{
DataClassification = CustomerContent;
Caption = 'Text Preview', Comment = 'DEU="Textvorschau"';
}
field(50001; "Text Storage"; Blob)
{
DataClassification = CustomerContent;
Caption = 'Text Storage', Comment = 'DEU="Textspeicher"';
}
procedure EditText(Editable: Boolean)
var
NCEXTextEditorMgt: Codeunit "NCEX Text Editor Mgt.";
TempBlob: Codeunit "Temp Blob";
InStream: InStream;
OutStream: OutStream;
NewText: Text;
begin
CalcFields("Text Storage");
"Text Storage".CreateInStream(InStream);
TempBlob.CreateOutStream(OutStream);
CopyStream(OutStream, InStream);
if not NCEXTextEditorMgt.EditText(TempBlob, 0, 0, not Editable) then
exit;
TempBlob.CreateInStream(InStream);
InStream.Read(NewText);
SaveText(NewText);
end;
procedure SaveText(NewText: Text)
var
OutStream: OutStream;
begin
"Text Storage".CreateOutStream(OutStream);
OutStream.Write(NewText);
"Text Preview" := CopyStr(NewText, 1, MaxStrLen("Text Preview"));
end;
...
Page
...
field("Text Preview"; Rec."Text Preview")
{
ApplicationArea = All;
ToolTip = 'Specifies the text. Click on the field to edit the text.', Comment = 'DEU="Gibt den Text an. Klicken Sie auf das Feld, um den Text zu bearbeiten."';
Editable = false;
AssistEdit = true;
trigger OnAssistEdit()
begin
Rec.EditText(CurrPage.Editable());
CurrPage.Update();
end;
}
...
Finmatics Autonomous Accounting Schnittstelle für KI-gesteuerte Belegverarbeitung von Finmatics. Weitere Informationen AppSource |