Q&A

  • 두 컴포넌트에 동시에 클릭 이벤트를 넣어주고 싶습니다.
현재 mssql7.0서버에 mcodes라고 하는 테이블이 있습니다. 이 테이블의 내용중 접수번호 코드가 있는데 프로그램에서의 내용은 이 레코드를 읽어와서 1 증가한후 아시 이 레코드에 저장하는 내용 입니다. 그런데 이렇게 하기 위해서 이 레코드를 한 프로그램이 읽어오고 저장이 되기 까지는 다른 프로그램은 접근을 하지 말아야 합니다. 그래서 이것을 실험해 보기 위해 두개의 버튼 콤포넌트를 만들고 어느 한쪽이는 클릭 이벤트가 발생 됐을때 다른 한쪽에도 동시에 클릭 이벤트가 발생되서 mcodes table의 접수번호 레코드를 동시에 읽어오는 시험을 하려고 합니다. 여기에 쓰인 코딩 내용은

1. sql 써버가 in transaciton 상태이면 모든것을 roll back 시킨다.

2. transaction을 start시킨다.

3. 두개의 버튼 콤포넌트중 하나의 버튼을 클릭

4. 이때 다른 버튼에도 클릭이벤트가 동시에 발생하게 한다.

5. 양쪽 버튼의 click event 발생시 동시에 select codename from dbo.mcode where

codecondition = '70' 으로 접수번호 레코드를 읽어온다.

6. 래코드를 읽어오는 것이 성공 했으면 commit을 시킨다.

와 같은 내용으로 하려고 합니다. 목적은 하나의 컴포넌트에서 transction 이 진행되고 있는 상태에서 동시에 다른 컴포넌트의 프로쎄스에서 동일한 레코드를 불러올수 있는가 하는것을 알아 보고자 하는 것입니다.

그런데 이렇게 하려고 동시에 다른 컴포넌트에도 이벤트를 발생시키려고 하다 보니까 어
2  COMMENTS
  • Profile
    구창민 2001.08.02 23:25
    본래 컴퓨터라는 넘이 동시라고 말하는 건 있을 수가 없습니다.



    아무리 동시에 일어나는 듯 보여도 그건 순차적이지요.



    PostMessage(Button1.Handle, cn_Command, bn_Clicked, 0);

    PostMessage(Button2.Handle, cn_Command, bn_Clicked, 0);



    이렇게 해 보세요.



    ^_^



    그럼 즐거운 프로그래밍 하시길~



    from 변태왕자..









    강창모 wrote:

    > 현재 mssql7.0서버에 mcodes라고 하는 테이블이 있습니다. 이 테이블의 내용중 접수번호 코드가 있는데 프로그램에서의 내용은 이 레코드를 읽어와서 1 증가한후 아시 이 레코드에 저장하는 내용 입니다. 그런데 이렇게 하기 위해서 이 레코드를 한 프로그램이 읽어오고 저장이 되기 까지는 다른 프로그램은 접근을 하지 말아야 합니다. 그래서 이것을 실험해 보기 위해 두개의 버튼 콤포넌트를 만들고 어느 한쪽이는 클릭 이벤트가 발생 됐을때 다른 한쪽에도 동시에 클릭 이벤트가 발생되서 mcodes table의 접수번호 레코드를 동시에 읽어오는 시험을 하려고 합니다. 여기에 쓰인 코딩 내용은

    > 1. sql 써버가 in transaciton 상태이면 모든것을 roll back 시킨다.

    > 2. transaction을 start시킨다.

    > 3. 두개의 버튼 콤포넌트중 하나의 버튼을 클릭

    > 4. 이때 다른 버튼에도 클릭이벤트가 동시에 발생하게 한다.

    > 5. 양쪽 버튼의 click event 발생시 동시에 select codename from dbo.mcode where

    > codecondition = '70' 으로 접수번호 레코드를 읽어온다.

    > 6. 래코드를 읽어오는 것이 성공 했으면 commit을 시킨다.

    > 와 같은 내용으로 하려고 합니다. 목적은 하나의 컴포넌트에서 transction 이 진행되고 있는 상태에서 동시에 다른 컴포넌트의 프로쎄스에서 동일한 레코드를 불러올수 있는가 하는것을 알아 보고자 하는 것입니다.

    > 그런데 이렇게 하려고 동시에 다른 컴포넌트에도 이벤트를 발생시키려고 하다 보니까 어
  • Profile
    강창모 2001.08.03 01:06
    sendmessage로 버튼 A 와 버튼 B 에 다음과 같이 구현했습니다.



    A button --



    sendmessage(McodesB.handle, wm_lbuttondown, 0, 0);

    sendmessage(McodesB.handle, wm_lbuttonup, 0, 0);



    label1.caption := 'McodesA Pressed'





    B button --



    sendmessage(McodesA.handle, wm_lbuttondown, 0, 0);

    sendmessage(McodesA.handle, wm_lbuttonup, 0, 0);



    label2.caption := 'McodesA Pressed'



    그런데 이렇게 하니까 A button 이 눌렸을때 sendmessage로 B button

    이 눌리고 또 B button의 sendmessage로 A button이 눌리는 것이 반복

    되다가 실행에러가 발생 했습니다.



    그래서 이것을 TnotifyEvent를 사용해 한번만 눌려지게 작업을 하려고

    하는데 잘 모르겠군요



    다음과 같이 하는 것이 맞는지 봐주세요



    procedure McodesAOnClick(Sender . . . . )



    var

    MouseClick : TnotifyEvent



    bdgin



    MouseClick := McodesA.OnClick ;

    McodesA.OnClick := nil ;



    sendmessage(McodesB.handle, wm_lbuttondown, 0, 0);

    sendmessage(McodesB.handle, wm_lbuttonup, 0, 0);



    label1.caption := 'McodesA Pressed'



    McodesA.OnClick := MouseClick ;



    end;



    어쨌든 제가 하려는 것는 두개의 버튼중 하나만 눌렸을때 양쪽이 동시에(사용자 입장에서)

    한번만 눌려지는 효과를 발생하려고 하는 것입니다.



    위의 내용이 맞는지 봐 주시고 정확한 해결 도움 부탁 드리겠습니다.





    구창민 wrote:

    > 본래 컴퓨터라는 넘이 동시라고 말하는 건 있을 수가 없습니다.

    >

    > 아무리 동시에 일어나는 듯 보여도 그건 순차적이지요.

    >

    > PostMessage(Button1.Handle, cn_Command, bn_Clicked, 0);

    > PostMessage(Button2.Handle, cn_Command, bn_Clicked, 0);

    >

    > 이렇게 해 보세요.

    >

    > ^_^

    >

    > 그럼 즐거운 프로그래밍 하시길~

    >

    > from 변태왕자..

    >

    >

    >

    >

    > 강창모 wrote:

    > > 현재 mssql7.0서버에 mcodes라고 하는 테이블이 있습니다. 이 테이블의 내용중 접수번호 코드가 있는데 프로그램에서의 내용은 이 레코드를 읽어와서 1 증가한후 아시 이 레코드에 저장하는 내용 입니다. 그런데 이렇게 하기 위해서 이 레코드를 한 프로그램이 읽어오고 저장이 되기 까지는 다른 프로그램은 접근을 하지 말아야 합니다. 그래서 이것을 실험해 보기 위해 두개의 버튼 콤포넌트를 만들고 어느 한쪽이는 클릭 이벤트가 발생 됐을때 다른 한쪽에도 동시에 클릭 이벤트가 발생되서 mcodes table의 접수번호 레코드를 동시에 읽어오는 시험을 하려고 합니다. 여기에 쓰인 코딩 내용은

    > > 1. sql 써버가 in transaciton 상태이면 모든것을 roll back 시킨다.

    > > 2. transaction을 start시킨다.

    > > 3. 두개의 버튼 콤포넌트중 하나의 버튼을 클릭

    > > 4. 이때 다른 버튼에도 클릭이벤트가 동시에 발생하게 한다.

    > > 5. 양쪽 버튼의 click event 발생시 동시에 select codename from dbo.mcode where

    > > codecondition = '70' 으로 접수번호 레코드를 읽어온다.

    > > 6. 래코드를 읽어오는 것이 성공 했으면 commit을 시킨다.

    > > 와 같은 내용으로 하려고 합니다. 목적은 하나의 컴포넌트에서 transction 이 진행되고 있는 상태에서 동시에 다른 컴포넌트의 프로쎄스에서 동일한 레코드를 불러올수 있는가 하는것을 알아 보고자 하는 것입니다.

    > > 그런데 이렇게 하려고 동시에 다른 컴포넌트에도 이벤트를 발생시키려고 하다 보니까 어