Q&A

  • component 제작시 버그에 관련된 질문??
안녕하세요..

Tdbedit를 계승한 간단한 컴포넌트를 만들고 있는 중인데.. 문제가

있어서 또(!) 이렇게 글을 적습니다...



Function TDbSEdit.DataEmptyCheck: Boolean;

Begin



if field.Isnull then FU_DataIsEmpty := True

else FU_DataIsEmpty := False;



if field.datatype = ftstring then Begin

if Trim(Text) = '' then FU_DataIsEmpty := True

else FU_DataIsEmpty := False;

end;

result := FU_DataIsEmpty;

end;

이라는 펑션을 만들고

tdbedit의 OnChange Event를 Overring해서

procedure TDbSEdit.Change;

begin

inherited Change;

DataEmptyCheck;

end;

라고 코딩을 했습니다.

참고로 Function TDbSEdit.DataEmptyCheck: Boolean; 평션에서 사용하는

FU_DataIsEmpty 는

private

{ Private fields of TDbSEdit }

FU_DataEmptyErrorMessage : TStrings;

FU_DataIsEmpty:Boolean;

와 같이 정의되어 있고 다시

Published

property U_DataIsEmpty: Boolean read FU_DataIsEmpty write FU_DataIsEmpty default true;

라고 Published에 정의가 되어 있습니다...

그런데... 이 콤포넌트로 화면에 디자인을 하면 디자인 타임에

이 컴포넌트가 포함되어 있는 dclusr40.bpl에서 access violation error가

저장된 폼을 델파이 IDE로 불러오면 처음 한번만 발생을 하는데..

도우미 무엇이 잘못된건지 모르겠네요..??



저의 짧은 생각에는 Tdbsedit(제가 작성중인 컴포넌트 클래스명)가 연결되어

있는 table이나 query component가 델파이 Ide에서 열려지면서

자동으로 Ondatachange Event가 발생함과 동시에 DataEmptyCheck; 평션을

실행할려고 하면서 발생하는것 같은데... 해결방법을 모르겠네요???



전문가님의 조언을 부탁드립니다...



여기서 많은 도움을 얻고 있는 왕초보 드림.







1  COMMENTS
  • Profile
    이정욱 1999.05.14 03:27
    아래의 문을 참고해서 디자인타임일경우에는 못하게 하시고 런타임인경우에만 실행하게 해보세요.



    if csDesigning in ComponentState then

    begin

    end else

    begin

    end;





    왕초보 wrote:

    > 안녕하세요..

    > Tdbedit를 계승한 간단한 컴포넌트를 만들고 있는 중인데.. 문제가

    > 있어서 또(!) 이렇게 글을 적습니다...

    >

    > Function TDbSEdit.DataEmptyCheck: Boolean;

    > Begin

    >

    > if field.Isnull then FU_DataIsEmpty := True

    > else FU_DataIsEmpty := False;

    >

    > if field.datatype = ftstring then Begin

    > if Trim(Text) = '' then FU_DataIsEmpty := True

    > else FU_DataIsEmpty := False;

    > end;

    > result := FU_DataIsEmpty;

    > end;

    > 이라는 펑션을 만들고

    > tdbedit의 OnChange Event를 Overring해서

    > procedure TDbSEdit.Change;

    > begin

    > inherited Change;

    > DataEmptyCheck;

    > end;

    > 라고 코딩을 했습니다.

    > 참고로 Function TDbSEdit.DataEmptyCheck: Boolean; 평션에서 사용하는

    > FU_DataIsEmpty 는

    > private

    > { Private fields of TDbSEdit }

    > FU_DataEmptyErrorMessage : TStrings;

    > FU_DataIsEmpty:Boolean;

    > 와 같이 정의되어 있고 다시

    > Published

    > property U_DataIsEmpty: Boolean read FU_DataIsEmpty write FU_DataIsEmpty default true;

    > 라고 Published에 정의가 되어 있습니다...

    > 그런데... 이 콤포넌트로 화면에 디자인을 하면 디자인 타임에

    > 이 컴포넌트가 포함되어 있는 dclusr40.bpl에서 access violation error가

    > 저장된 폼을 델파이 IDE로 불러오면 처음 한번만 발생을 하는데..

    > 도우미 무엇이 잘못된건지 모르겠네요..??

    >

    > 저의 짧은 생각에는 Tdbsedit(제가 작성중인 컴포넌트 클래스명)가 연결되어

    > 있는 table이나 query component가 델파이 Ide에서 열려지면서

    > 자동으로 Ondatachange Event가 발생함과 동시에 DataEmptyCheck; 평션을

    > 실행할려고 하면서 발생하는것 같은데... 해결방법을 모르겠네요???

    >

    > 전문가님의 조언을 부탁드립니다...

    >

    > 여기서 많은 도움을 얻고 있는 왕초보 드림.

    >

    >

    >





    • 북해
    • 1999.05.14 19:15
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 무명인
      1999.05.15 05:05
      북해 wrote: > 안녕하세요. SQL문을 사용하려는데 자꾸 에러가 나네요. Edit.Text가 Change될 때마다 아래...
    • 왕초보
      1999.05.14 20:18
      with query1 do Begin sql.add('select * from 테이블'); sql.add('where 성명 like '''+edit1.Text+'%...
    • 북해
    • 1999.05.14 19:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.14 20:15
      보통 컴포넌트를 설치하는 방법은 두가지 입니다. 첫째, PAS나 .DCU파일을 가지고 하는방법. 둘째, DPK나...
    • 왕초보
      1999.05.14 20:15
      델파이 component 메뉴에서 install component를 선택하시면 컴포넌트 모듈(*.pas, *.dcu)를 선택할 수 있...
    • 김승현
    • 1999.05.14 06:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 왕초보
      1999.05.14 18:16
      저도 초보라서.. 정확한 답변이 될런지는 모르겠지만 도움일 될까해서 제가 Dll에서 db쓰는 source를 알...
    • 땡글이
    • 1999.05.14 05:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.05.14 18:08
      땡글이 wrote: > 제가 몇일전에 TreeView에 대해 질문은 올렸더니 고맙게도 답장을 써주셨더군요. > 근데...
    • 1999.05.14 02:45
      이누리 wrote: > EditBox 내의 오른쪽 정렬이 되지 않는 관계로.. > > 편법으로.. 문자열앞에 공백을 ...
    • 이영호
    • 1999.05.14 02:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.14 02:49
      이영호 wrote: > 오라클에 접속하려고 데이타베이스컴포넌트의 속성을 아래와 같이 주었는데 > db1.Pa...
    • 이정욱
      1999.05.14 03:12
      ParentComp := GetOwner as TWinControl; 로 고쳐서 해보세요... 장담은 못합니다... ^^; 왕초보 wr...
    • 강지영
    • 1999.05.14 01:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.14 01:29
      강지영 wrote: > ShellExecute 를 사용하려고 하는데 > 파라미터 전달하는 것을 모르겠습니다. > 예를 ...
    • 왕초보
      1999.05.14 01:27
      ShellExecute (Handle,'open', 'notepad','c:config.sys','',SW_SHOWNORMAL); 와 같이 파리미터...
    • 왕초보
    • 1999.05.14 00:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.14 03:27
      아래의 문을 참고해서 디자인타임일경우에는 못하게 하시고 런타임인경우에만 실행하게 해보세요. if ...
    • 건맨
    • 1999.05.13 23:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 왕초보
      1999.05.14 00:07
      Interbase 를 설치하면 자동으로 깔리는 PDF문서를 참조하세요... 영문으로 되어 있지만 모두 출력을 하면...
    • 정용철
    • 1999.05.13 23:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.14 03:34
      NMOCOD.DLL, NMORENU.DLL, NMSCKN.DLL, NMFTPSN.DLL, OLEPRO32.DLL 을 같이 배포하셔야 합니다. 복사만 ...
    • 은철수
    • 1999.05.13 22:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 은철수
      1999.05.14 02:00
      하윤철 wrote: > 같은 질문의 답을 델파이 팁페이지에서 구할수 있었습니다... > > http://board.membe...
    • 이호선
    • 1999.05.13 21:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.13 23:25
      NCHitTest 메세지가로채서 사용하는 방법과, 또 하나의 ReleaseCapture와 SendMessage를 사용하는 두가지 ...
    • 북해
    • 1999.05.13 20:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.13 21:38
      북해 wrote: > 비트맵버튼에서,혹은 그냥 버튼이라도, Caption에 들어갈 글자를 세로로 표기할 수 있나요...
    • 이정욱
      1999.05.13 21:20
      음냐.. 없습니다... 즉, 다른 컴포넌트를 사셔야 합니다. 아니면 Image를 버튼화 시켜서 그림으로 넣으...
    • 신호철
    • 1999.05.13 19:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.14 03:19
      이곳의 문제는 Close;문이 문제이군요. Close가 있지만 .. function TCSpacket.file1init : Boolean; ...
    • 북해
    • 1999.05.13 19:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.13 21:29
      포커스를 가진다는것은 제일 쉽게 말해서 현재 카렛(도스시절의 커서)이 있는 콘트롤을 지칭합니다. 카렛...
    • 신현숙
      1999.05.15 01:37
      신현숙 wrote: > 안녕하세요.. > 델파이 데리고 일하는 사람입니다. > 도움을 바랍니다. > 원하는 것이...
    • 남호열
      1999.05.15 01:07
      신현숙 wrote: > 안녕하세요.. > 델파이 데리고 일하는 사람입니다. > 도움을 바랍니다. > 원하는 것이...
    • 하윤철
      1999.05.13 22:36
      신현숙 wrote: > 안녕하세요.. > 델파이 데리고 일하는 사람입니다. > 도움을 바랍니다. > 원하는 것이...