J'ai une question sur Delphi et le composant RichView.

Comment puis-je vérifier si un RichView est vide?

J'ai besoin de savoir si l'utilisateur a tapé quelque chose ou inséré quelque chose dans le composant RichView.

Je vous remercie!

0
Tiago Zanarde 23 mai 2018 à 17:20

3 réponses

Meilleure réponse

Merci à tous, la réponse @BMS a fonctionné pour moi!

J'ai dû adapter votre fonction à mon programme, car la fonction ItemCount ne fonctionnait pas pour moi, alors J'ai changé la fonction et j'ai très bien fonctionné :

function MyProgram.isEmpty(RView: TbsRichView): boolean;
var AStream: TMemoryStream;
begin
  AStream:= TMemoryStream.Create;
  try
    RView.Editor.SaveTextToStream('', AStream, 0, false, true);
    AStream.Position:= 0;
    Result:= AStream.Size = 0;
  finally
    AStream.free;
  end;
end;

Dans cette fonction, je vérifie simplement si le résultat est 0. S'il est égal à 0, cela signifie que l'utilisateur n'a rien tapé, ou efface ce qui a été écrit précédemment. Donc, je peux vérifier si le RichText est vide ou non . Dans mon programme, le RichText ne peut pas être vide pour enregistrer le formulaire.

0
Tiago Zanarde 23 mai 2018 à 18:12

Vous pouvez essayer d'utiliser le GetTextLen méthode:

function IsRichViewEmpty(Control: TCustomRichView): Boolean;
begin
  Result := Control.GetTextLen = 0;
end;

C'est parce que TRichView gère le WM_GETTEXTLENGTH message à sa manière, donc je crois (je n'ai pas testé, je viens de vérifier la source), que cela suffit (il y a le drapeau rvflCanProcessGetText qui empêcherait d'obtenir la longueur du texte, mais celui-ci est inclus lorsque le TRichView est créé).

4
Victoria 23 mai 2018 à 17:38

Essayez cette fonction, j'espère que cela vous aidera:

function TRichViewEditFrame.isEmpty: boolean;
var AStream: TMemoryStream;
begin
  Result := false;
  if TRichViewEdit(RichEditEntete).ItemCount = 0 then exit;
  AStream:= TMemoryStream.Create;
  try
    TRichViewEdit(RichEditEntete).SaveTextToStream('', AStream, 0, false, true);
    AStream.Position:= 0;
    Result:= AStream.Size = 0;
  finally
    AStream.free;
  end;
end;
0
BMS 23 mai 2018 à 14:52