Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) SRichViewEdit - TRichView - Delphi XE


JohnPauloJones

Pergunta

Olá, pessoal! O problema é o seguinte: meu sistema abre um SRichViewEdit, e recebe através de um RichViewEdit um texto. Eu desejo abrir uma query e ponteirar o cursor do mouse para certo ponto do texto, e finalizar acrescentando mais informação exatamente no local de parada. Não estou conseguindo...

Aqui estão 2 linhas que iniciam essa rotina:

SRichViewEdit1.RichViewEdit.SetFocus;
SRichViewEdit1.RichViewEdit.InsertText(QYgrupoCodificadoDSdescri.AsString);
Agradeço qualquer ajuda.
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

exemplo

procedure TForm1.Button1Click(Sender: TObject);
var
ItemNo, Offs: Integer;
begin
SRichViewEdit.RichViewEdit.BeginUpdate;
try

ItemNo:=0;
Offs:=SRichViewEdit.RichViewEdit.GetOffsBeforeItem(ItemNo);
SRichViewEdit.RichViewEdit.SetSelectionBounds(ItemNo,Offs,ItemNo,Offs);

while SRichViewEdit.RichViewEdit.SearchText('AAA', [rvseoDown]) do
SRichViewEdit.RichViewEdit.InsertText('QQQ');
finally
SRichViewEdit.RichViewEdit.EndUpdate;
end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, surgiu um novo problema. Consigo colocar o texto que quero na linha a ser substituída. Exemplo:

procedure TbasDigitacaoLaudo.Button1Click(Sender: TObject);
var
ItemNo, Offs: Integer;
begin
SRichViewEdit1.RichViewEdit.BeginUpdate;
try
ItemNo := 0;
Offs := SRichViewEdit1.RichViewEdit.GetOffsBeforeItem(ItemNo);
SRichViewEdit1.RichViewEdit.SetSelectionBounds(ItemNo, Offs, ItemNo, Offs);
while SRichViewEdit1.RichViewEdit.SearchText('[Acrescentar aqui.]', [rvseoDown]) do
SRichViewEdit1.RichViewEdit.InsertText(QYgrupoCodificadoDSdescri.AsString);
finally
SRichViewEdit1.RichViewEdit.EndUpdate;
end;
end;
Mas não sei como fazer para o cursor descer uma linha para a inserção de outra informação, caso necessário. Poderia ajudar-me?
Link para o comentário
Compartilhar em outros sites

  • 0

Consegui. Eu utilizei o SearchText e o InsertText; sempre que o sistema encontrar "---", ele o substituirá por algo que vem da query. Exemplo: no início da aplicação há o "---", daí o sistema trará o resultado 1 da query para o lugar dos 3 tracinhos, e após isto, incluirá mais 3 tracinhos. E assim sucessivamente. Por enquanto, é isso. Até achar o writeline :)

Sabe dizer se podemos habilitar ou desabilitar a tecla Insert, no uso do RichViewEdit?

Editado por JohnPauloJones
Link para o comentário
Compartilhar em outros sites

  • 0

voce pode desabilitar o controle do componente

exemplo

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, SclRView, RichView, SRVControl, SRVCheckBox, StdCtrls, RVFuncs, SclRVRuler,
  RVStyle;

type
  TForm1 = class(TForm)
    SRichViewEdit1: TSRichViewEdit;
    Button1: TButton;
    RVStyle1: TRVStyle;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
     c : TSRVCheckBox;
begin
  c := TSRVCheckBox.Create(nil);
  c.Parent := SRichViewEdit1.RichViewEdit;
  c.Name := 'SRVCheckBox';
  c.Caption := 'SRVCheckBox';
  c.Color:=clWhite;
  SRichViewEdit1.RichViewEdit.InsertControl('teste', c, rvvaMiddle);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
   iNbItem, INbControl: Integer;
begin
   for iNbItem := 0 to RVStyle1.TextStyles.Count - 1 do
   begin
      SRichViewEdit1.RichViewEdit.Style.TextStyles.Items[iNbItem].Protection :=  [rvprStyleProtect, rvprStyleSplitProtect, rvprModifyProtect,
         rvprDeleteProtect, rvprConcateProtect, rvprRVFInsertProtect, rvprDoNotAutoSwitch, rvprParaStartProtect,
         rvprSticking, rvprSticking2, rvprSticking3, rvprStickToTop, rvprStickToBottom];
   end;

   for iNbControl := 0 to SRichViewEdit1.RichViewEdit.ControlCount - 1 do
   begin
      SRichViewEdit1.RichViewEdit.Controls[iNbControl].Enabled := False;
   end;
end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu! Mas eu utilizei outro recurso. Declarei em private as variáveis 'vIgnoreNextChar' e 'vInsertMode', ambas do tipo Boolean, e programei como segue:

procedure TbasDigitacaoLaudo.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = VK_INSERT) and (Shift = []) then vInsertMode := not vInsertMode;
end;
==
procedure TbasDigitacaoLaudo.DBSRichViewEdit1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
vIgnoreNextChar := not vInsertMode and SRichViewEdit1.RichViewEdit.SelectionExists;
end;
==
procedure TbasDigitacaoLaudo.SRichViewEdit1KeyPress(Sender: TObject;
var Key: Char);
var
ItemNo : Integer;
Offs : Integer;
rve : TCustomRichViewEdit;
begin
if vInsertMode or vIgnoreNextChar then
begin
vIgnoreNextChar := False;
Exit;
end;
vIgnoreNextChar := False;
if not ((Key = #9) or (Key >= ' ')) then Exit;
rve := SRichViewEdit1.RichViewEdit.TopLevelEditor;
if rve.SelectionExists then Exit;
ItemNo := rve.CurItemNo;
Offs := rve.OffsetInCurItem;
if (Offs >= rve.GetOffsAfterItem(ItemNo)) then
begin
if (ItemNo + 1 < rve.ItemCount) and not rve.IsFromNewLine(ItemNo + 1) then
begin
inc(ItemNo);
Offs := rve.GetOffsBeforeItem(ItemNo);
end
else Exit;
end;
rve.SetSelectionBounds(ItemNo, Offs, ItemNo, Offs + 1);
rve.Invalidate;
end;
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...