Q&A

  • 금액 콤포넌트 만드는데 문제점..
음..

제가 요즘 금액 콤포넌트를 하나 만들었거든요.

근데 다 잘되는데 약간의 문제점이 있어서 이렇게 글을 씁니다.

다름이 아니오라 TCustomEdit에서 상속을 받아서 금액 콤포넌트를 만드는데 금액에 콤마를 찍는 루틴을 TCustomEdit의 Change 이벤트를 상속받아서 그 이벤트 안에서 FormatFloat를 사용하여 금액에 콤마를 찍은것을 콤포넌트이 Text Prooerty 에 집어 넣었는데 이런 식으로 하니까 OnChange 이벤트를 두번 실행하게 되더라구요.



이벤트를 한번만 실행할 수 있는 방법이 없을까요?



애플리케이션 상에선 에디트의 Onchange의 함수 포인터를 잠시 nil로 만들었다 다시 연결하면 해결
2  COMMENTS
  • Profile
    이정욱 1999.05.11 22:26
    먼저 OnChange이벤트를 재정의를 하십시요.

    그리고 ChangeBySelf라는 변수를 Boolean형으로 주시구요..

    OnChange이벤트를 처리하는 부분을 보시면

    If Assigned 어쩌구 저쩌구... 모 이럴거에요.

    이곳에서 If (not ChangeBySelf) and Assigned 어쩌구...

    이런식으로 해주시구요..

    Text에 넣는 부분에서는 ChangeBySelf를 True로 주시구요..

    KeyPress나 KeyDown이벤트를 처리하는 부분에서 ChangeBySelf를 False로 주시구요...

    이렇게 하시면 OnChage이벤트를 처리하는 부분에서 ChangeBySelf가 참이면 그곳에 Assign된 함수를 호출하지 않습니다...





    최석기 wrote:

    > 음..

    > 제가 요즘 금액 콤포넌트를 하나 만들었거든요.

    > 근데 다 잘되는데 약간의 문제점이 있어서 이렇게 글을 씁니다.

    > 다름이 아니오라 TCustomEdit에서 상속을 받아서 금액 콤포넌트를 만드는데 금액에 콤마를 찍는 루틴을 TCustomEdit의 Change 이벤트를 상속받아서 그 이벤트 안에서 FormatFloat를 사용하여 금액에 콤마를 찍은것을 콤포넌트이 Text Prooerty 에 집어 넣었는데 이런 식으로 하니까 OnChange 이벤트를 두번 실행하게 되더라구요.

    >

    > 이벤트를 한번만 실행할 수 있는 방법이 없을까요?

    >

    > 애플리케이션 상에선 에디트의 Onchange의 함수 포인터를 잠시 nil로 만들었다 다시 연결하면 해결
  • Profile
    최석기 1999.05.12 02:23
    이정욱 wrote:

    > 먼저 OnChange이벤트를 재정의를 하십시요.

    > 그리고 ChangeBySelf라는 변수를 Boolean형으로 주시구요..

    > OnChange이벤트를 처리하는 부분을 보시면

    > If Assigned 어쩌구 저쩌구... 모 이럴거에요.

    > 이곳에서 If (not ChangeBySelf) and Assigned 어쩌구...

    > 이런식으로 해주시구요..

    > Text에 넣는 부분에서는 ChangeBySelf를 True로 주시구요..

    > KeyPress나 KeyDown이벤트를 처리하는 부분에서 ChangeBySelf를 False로 주시구요...

    > 이렇게 하시면 OnChage이벤트를 처리하는 부분에서 ChangeBySelf가 참이면 그곳에 Assign된 함수를 호출하지 않습니다...

    >



    먼저 정욱님께 신경 써 주신거에 대해 감사를 드립니다.

    정욱님께서 가르쳐 주신데로 하면 OnChange 이벤트는 한번만 실행되기는 하는데 제가 잘못한건지 또 다른 문제점 하나가 발생하는군요.

    정욱님이 가르쳐 주신 방법은 아래 문장을 Override 한 Change 이벤트의 제일 앞에 적어야 하는거 아닌가요?

    procedure TCustomNumEdit.Change;

    begin

    inherited Change;

    if (not ChangeBySelf) and Assigned(FOnChange) then

    .....



    이런식으로요??

    그러면 OnChange에서 Text 값을 체크하면 FormatFloat를 사용하여 콤마를 찍기 전의 값이 Text에 들어있어요.

    가령 '1,234'로 들어있는 Text에 5를 입력하면 OnChange 이벤트 시에 Text 값은 '1,2345'로 가지고 있게 되더라구요.



    그래서 좀 지저분하긴 하지만 전 Chang 이벤트가 실행되어진 횟수를 세어서 한번 이상이면 Exit를 시켰거든요..



    이런 경우는 어떻케 처리해야 하나요??



    답변에 감사드립니다.

    • 현동식
    • 1999.05.12 19:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.12 19:39
      델파이에서 ActiveX폼을 만들어서 웹페이지에 띄우세요... 델파이는 ActiveX 폼을 만들기가 쉽죠...File/N...
    • 김명호
    • 1999.05.12 18:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조준형
      1999.05.21 23:52
      김명호 wrote: > Delphi 3.0에서 Midas관련해서 Test를 하려고 간단한 Program을 만들었는데 > Client에...
    • 이정욱
      1999.05.12 20:43
      사실 아래와 같이 하여도 문제는 발생하지 않습니다. 혹시 Uses문에 어떻게 하셨는지 모르겠네요.. Form2...
    • 송수정
    • 1999.05.12 03:46
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.12 06:51
      송수정 wrote: > 폼에 Image 컴포넌트를 놓고 일반 Text File 을 출력하는것 까지는 됐는데 > 문제는 ...
    • 송수정
      1999.05.13 03:21
      안치봉 wrote: > 송수정 wrote: > > 폼에 Image 컴포넌트를 놓고 일반 Text File 을 출력하는것 까지는...
    • 김봉재
    • 1999.05.12 02:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.12 05:19
      이런 부분을 한방에 할 수 있는 방법은 없습니다. 전역변수로 Boolean값을 정의 하고 FileListBox1에 M...
    • 강신구
    • 1999.05.12 02:52
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.05.12 18:27
      강신구 wrote: > 안녕하세요.. > > 실행중인 Process의 ProcessID로 그 Process의 윈도우 핸들을 > 구...
    • 신인재
      1999.05.12 04:17
      HWND FindWindow( LPCTSTR lpClassName, // pointer to class name LPCTSTR lpWindowName // po...
    • 송재환
    • 1999.05.12 02:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.05.12 08:13
      송재환님 안녕하세요? 하루는 24시간이니 날짜연산을 하세요. 아래는 김영대님이 올리신 날짜연산 예제...
    • 이호선
    • 1999.05.12 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.12 05:10
      한델 자료실에 있는 ICS를 이용해 보시지요.... 그럼 Character Set을 정하실 수 있을 겁니다. 이호...
    • chos
    • 1999.05.12 02:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하윤철
      1999.05.12 17:20
      chos wrote: > 델파이 4로 작성한 프로그램을 인스톨쉴드로 배포했는데 인스톨되는 컴퓨터의 > > ...
    • 땡글이
    • 1999.05.12 00:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.05.12 02:01
      땡글이 wrote: > 실력은 엄꼬 궁금한것만 많은 왕초봅니다.... > 어제 올려주신 Q&A를 나름대로 봤는데요...
    • 안치봉
      1999.05.12 01:57
      땡글이 wrote: > 실력은 엄꼬 궁금한것만 많은 왕초봅니다.... > 어제 올려주신 Q&A를 나름대로 봤는데요...
    • 이호선
    • 1999.05.12 00:20
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.12 02:00
      치봉님께서 답변을 해주셨지만 조금 더 가닥을 잡기위해.. ^^; 일단 TBitmap을 생성하세요. 그리고 이미...
    • 안치봉
      1999.05.12 01:50
      이호선 wrote: > 안녕하세요. > 이미지를 이미지 콤퍼넌트를 이용하지 않고 지정된 화일만을 가지고 > ...
    • 이지훈
    • 1999.05.11 23:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.12 02:29
      오라클을 접속하기 위해서는 sql-net인가 오라클에서 배포하는 네트웍 모듈이 있습니다. 이것을 깔아 주...
    • 왕초보
    • 1999.05.11 22:02
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.12 01:46
      왕초보 wrote: > 프로젝트 내의 form1, form2, form3중 form1만 프로젝트 옵션에서 > auto creation이고 ...
    • 왕초보
      1999.05.12 02:11
      안치봉 wrote: > 왕초보 wrote: > > 프로젝트 내의 form1, form2, form3중 form1만 프로젝트 옵션에서 >...
    • 최석기
    • 1999.05.11 21:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 22:26
      먼저 OnChange이벤트를 재정의를 하십시요. 그리고 ChangeBySelf라는 변수를 Boolean형으로 주시구요.. O...
    • 최석기
      1999.05.12 02:23
      이정욱 wrote: > 먼저 OnChange이벤트를 재정의를 하십시요. > 그리고 ChangeBySelf라는 변수를 Boolean...
    • 이정욱
      1999.05.11 20:23
      RxLib의 RichEDit2 콘트롤을 사용하는 방법이 있구요.. 또하나는 상용인 InfoPower에 포함되어있는 RichEd...
    • 아무게
    • 1999.05.11 18:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:26
      공유정보를 읽어오는것입니다. 김영대님의 팁에서 가져왔습니다. // 아래 예제는 Windows NT/Windows 20...
    • 김지건
    • 1999.05.11 18:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:16
      64k 이상을 넘지 못합니다. 그럴때는 RichEdit을 사용하시는것이 좋습니다. 아니면 상용으로나온 확장 Me...
    • 김지건
      1999.05.11 20:54
      이정욱 wrote: > 64k 이상을 넘지 못합니다. > 그럴때는 RichEdit을 사용하시는것이 좋습니다. > 아니면...