Q&A

  • RichEdit에서 입력시 글자색변화???
안녕하세요

RichEdit 에서 입력할때 특정글자를 입력하면 자동으로 색을 변화시키고

싶은데....잘안되는군요...

예를 들어서...

RichEdit에 Start라고 입력하면 자동으로 빨간색으로 변화하게 하고 싶은데...

어떻게 해야할지?????

나머지 글자는 그냥 검은색으로 입력되고..Start만 빨간색으로 표시하고 싶거든요.

고수님들의 한수 가르침을 기다리겠습니다...



감사합니다...



1  COMMENTS
  • Profile
    홍세비 2000.09.27 00:32
    무지개 wrote:

    > 안녕하세요

    > RichEdit 에서 입력할때 특정글자를 입력하면 자동으로 색을 변화시키고

    > 싶은데....잘안되는군요...

    > 예를 들어서...

    > RichEdit에 Start라고 입력하면 자동으로 빨간색으로 변화하게 하고 싶은데...

    > 어떻게 해야할지?????

    > 나머지 글자는 그냥 검은색으로 입력되고..Start만 빨간색으로 표시하고 싶거든요.

    > 고수님들의 한수 가르침을 기다리겠습니다...

    >

    > 감사합니다...

    >



    안녕하세요. 홍세빕니다.

    제가 예전에 HTML편집기를 만들려고 했을때 코딩했던 내용인데 참고만 하시기 바랍니다.

    물론 변환시의 깜박임이 조금 있습니다.



    procedure TForm1.Convert;

    var

    InitPos, stinx, edinx : integer;

    FoundPos : integer;

    i, j : integer;

    str, tmpstr : string;

    begin

    InitPos := RichEdit1.SelStart + RichEdit1.SelLength;



    str := RichEdit1.Lines.Text;

    for i := 1 to Length(str) do begin

    if str[i] = '<' then begin

    stinx := i;

    RichEdit1.SelStart := i-1;

    RichEdit1.SelAttributes.Color := clRed;

    edinx := Pos(str, ' ');

    end;

    end;

    end;



    procedure TForm1.OpenBtnClick(Sender: TObject);

    begin

    if OpenD.Execute then

    RichEdit1.Lines.LoadFromFile(OpenD.Filename);

    end;



    procedure TForm1.ConvertBtnClick(Sender: TObject);

    begin

    Convert;

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    RichEdit1.SelAttributes.Color := clRed;

    end;



    procedure TForm1.Button2Click(Sender: TObject);

    begin

    RichEdit1.refresh;

    end;



    procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    if (ssShift in Shift) then

    if Key = 188 then begin

    RichEdit1.SelAttributes.Color := clRed;

    TagOut := False;

    end

    else if Key = 190 then begin

    RichEdit1.SelAttributes.Color := clRed;

    TagOut := True;

    end;



    if not TagOut then

    if Key = 32 then

    RichEdit1.SelAttributes.Color := clGreen;



    if Key = 187 then

    RichEdit1.SelAttributes.Color := clBlue;

    // MessageDlg(IntToStr(ord(Key)),mtWarning,[mbok], 0);

    end;



    procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    if Key = 190 then

    RichEdit1.SelAttributes.Color := clBlack;

    end;



    '<'와 '>'사이의 내용은 색깔을 바꾸어주구 나머지는 검정색으로 나타나게 하는 예제입니다.



    참고하시기 바랍니다. 도움이 되셨기를...