Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX: TMemo 1000 Lines PasteFromClipboard Limit

  Alt 14. Okt 2017, 09:15
Hab jetzt gerade nur 10.1U2 zur Hand, da gibt es BulkThreshold = 1000 auch ... unfassbar ...
Kann jetzt nicht checken ob es geht oder nicht.

Edit
Es wird dann BulkPast aufgerufen.
Das wird wohl mit Messages verarbeitet, könnte es sein das dieses Limit von den OS kommt, und nicht von FMX ?

Delphi-Quellcode:
  procedure BulkPaste(APastingText : string; var ACaret : TCaretPosition);
  var
    LCaretPosition : Integer;
    LLengthResidue : Integer;
    LText : string;
    Insertion: string;
  begin
    LText := Model.Lines.Text;
    case Model.CharCase of
      TEditCharCase.ecNormal:
        Insertion := APastingText;
      TEditCharCase.ecUpperCase:
        Insertion := APastingText.ToUpperInvariant;
      TEditCharCase.ecLowerCase:
        Insertion := APastingText.ToLowerInvariant;
    end;

    if Model.MaxLength > 0 then
      Insertion := Insertion.Substring(0, Model.MaxLength - LText.Length);

    Model.SendMessage<TFragmentInserted>(PM_MEMO_UNDO_MANAGER_INSERT_TEXT,
      TFragmentInserted.Create(Model.PosToTextPos(ACaret), IfThen(Insertion = Model.Lines.LineBreak,
      Model.Lines.LineBreak.Length, Insertion.Length), False, False));
    LCaretPosition := Model.PosToTextPos(ACaret);
    LLengthResidue := LText.Length - LCaretPosition;

    Model.Lines.Text := LText.Substring(0, LCaretPosition) + Insertion + LText.Substring(LCaretPosition,
      LLengthResidue);
    ACaret := Model.TextPosToPos(lText.Length + Insertion.Length - LLengthResidue);
  end;
Rollo

Geändert von Rollo62 (14. Okt 2017 um 09:21 Uhr)
  Mit Zitat antworten Zitat