Q&A

  • richedit 에서 라인의 글자색이 잘 바뀌지 않습니다. 좀 봐주세요~~


procedure TdateForm.button1click();

var

str_color : string;

i : integer;

begin

str_color := coloredit.text;



if str_color = 'A' then RichEdit1.SelAttributes.Color := clBlack

else if str_color = 'B' then RichEdit1.SelAttributes.color := clGray

else if str_color = 'C' then RichEdit1.SelAttributes.color := clBlue

else if str_color = 'D' then RichEdit1.SelAttributes.color := clNavy

else if str_color = 'E' then RichEdit1.SelAttributes.color := clAqua

else if str_color = 'F' then RichEdit1.SelAttributes.color := clRed

else if str_color = 'G' then RichEdit1.SelAttributes.color := clFuchsia

else if str_color = 'H' then RichEdit1.SelAttributes.color := clPurple

else if str_color = 'I' then RichEdit1.SelAttributes.color := clMaroon

else if str_color = 'J' then RichEdit1.SelAttributes.color := clYellow

else if str_color = 'K' then RichEdit1.SelAttributes.color := clLime

else if str_color = 'L' then RichEdit1.SelAttributes.color := clGreen

else if str_color = 'M' then RichEdit1.SelAttributes.color := clPurple

else if str_color = 'N' then RichEdit1.SelAttributes.color := clOlive;



(1) RichEdit1.Lines.Add(colortostring(RichEdit1.SelAttributes.color));



(2) // RichEdit1.SelAttributes.Color := clBlue;



(3) RichEdit1.Lines.Add('['+str_fromip+'] '+ str_memo);



end;



위 소스 중에... (2) 주석처리를 하지 않으면... 푸른색으로 색깔이 올라가거든요..



근데, (2)를 주석처리 하고... 글자를 적고 엔터 치면...



if 문에서 처리가 안되는 것인지.. 글자색이 변경되지 않습니다.



왜 이런지 아시겠습니까????





3  COMMENTS
  • Profile
    최용일 2000.04.21 01:58
    안녕하세요. 최용일입니다.



    제가 해 보았는데 잘 바뀌는 데요. 버튼을 클릭하면 색깔있는 cl~상수가 써지고



    나머지 글짜가 푸른색으로 나오는데... 뭐가 잘못
  • Profile
    강민주 2000.04.21 01:51
    이수정 wrote:

    >

    > procedure TdateForm.button1click();

    > var

    > str_color : string;

    > i : integer;

    > begin

    > str_color := coloredit.text;

    >

    > if str_color = 'A' then RichEdit1.SelAttributes.Color := clBlack

    > else if str_color = 'B' then RichEdit1.SelAttributes.color := clGray

    > else if str_color = 'C' then RichEdit1.SelAttributes.color := clBlue

    > else if str_color = 'D' then RichEdit1.SelAttributes.color := clNavy

    > else if str_color = 'E' then RichEdit1.SelAttributes.color := clAqua

    > else if str_color = 'F' then RichEdit1.SelAttributes.color := clRed

    > else if str_color = 'G' then RichEdit1.SelAttributes.color := clFuchsia

    > else if str_color = 'H' then RichEdit1.SelAttributes.color := clPurple

    > else if str_color = 'I' then RichEdit1.SelAttributes.color := clMaroon

    > else if str_color = 'J' then RichEdit1.SelAttributes.color := clYellow

    > else if str_color = 'K' then RichEdit1.SelAttributes.color := clLime

    > else if str_color = 'L' then RichEdit1.SelAttributes.color := clGreen

    > else if str_color = 'M' then RichEdit1.SelAttributes.color := clPurple

    > else if str_color = 'N' then RichEdit1.SelAttributes.color := clOlive;

    >

    > (1) RichEdit1.Lines.Add(colortostring(RichEdit1.SelAttributes.color));

    >

    > (2) // RichEdit1.SelAttributes.Color := clBlue;

    >

    > (3) RichEdit1.Lines.Add('['+str_fromip+'] '+ str_memo);

    >

    > end;

    >

    > 위 소스 중에... (2) 주석처리를 하지 않으면... 푸른색으로 색깔이 올라가거든요..

    >

    > 근데, (2)를 주석처리 하고... 글자를 적고 엔터 치면...

    >

    > if 문에서 처리가 안되는 것인지.. 글자색이 변경되지 않습니다.

    >

    > 왜 이런지 아시겠습니까????

    >

    >





    주석 2번에서 색을 blue로 재정의 하니깐.. 버튼을 계속늘러도 같은

    blue만 나오는겁니다. 주석2번을 빼면 될것 같네요.



  • Profile
    이수정 2000.04.22 01:02
    // 150줄 넘으면 맨처음에 올라온 글을 지운다.

    if RichEdit1.Lines.Count >= 150 then

    RichEdit1.Lines.Delete(0);



    // 마지막줄 보여줌..

    RichEdit1.SelLength := 0;

    RichEdit1.SelStart := RichEdit1.GetTextLen-1;

    RichEdit1.Perform(EM_SCROLLCARET, 0, 0);







    제가 richeidt1.lines.add 되는 아래부분에 위의 소스를 추가 시켜 놓았었거든요...



    저걸 주석처리 하니까,, 잘되는군요..



    왜 이런거죠?



    순서를 바꿔줘도 안되는데.....