Q&A

  • 동적으로 event를 실행할려면?
edit keydown 이벤트에서 버튼이라든지 그밖으 컴포너트의 event를 동적으로 실행할려면 어떻게 해야 되나요.

1  COMMENTS
  • Profile
    김영대 1999.10.23 00:26
    김경율 wrote:

    > edit keydown 이벤트에서 버튼이라든지 그밖으 컴포너트의 event를 동적으로 실행할려면 어떻게 해야 되나요.



    WM_KEYDOWN 윈도우 메시지를 보내거나

    keybd_event() 를 사용할 수 있습니다



    아래는 keybd_event() 을 가지고 작성된 예제입니다

    WM_KEYDOWN 은 제 홈페이지(http://myhome.shinbiro.com/~cozykyd/index.htm)의

    "Delphi Tip" 에서 WM_KEYDOWN 키워드로 검색해 보세요



    // 아래 예제는 Memo1의 내용을 전체 선택하여 맨 마지막행에서

    // 붙여넣기하는 일련의 키보드 이벤트를 발생하여 보여주는 예제입니다



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    Memo1: TMemo;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure PostKeyEx32(key: Word; const shift: TShiftState;

    specialkey: Boolean);

    type

    TShiftKeyInfo = record

    shift: Byte;

    vkey : Byte;

    end;

    ByteSet = set of 0..7;

    const

    shiftkeys: array [1..3] of TShiftKeyInfo =

    ((shift: Ord(ssCtrl); vkey: VK_CONTROL),

    (shift: Ord(ssShift); vkey: VK_SHIFT),

    (shift: Ord(ssAlt); vkey: VK_MENU));

    var

    flag: DWORD;

    bShift: ByteSet absolute shift;

    i: Integer;

    begin

    // VirtualKey key down 발생

    for i := 1 to 3 do

    begin

    if shiftkeys[i].shift in bShift then

    keybd_event(shiftkeys[i].vkey,

    MapVirtualKey(shiftkeys[i].vkey, 0),

    0, 0);

    end;

    if specialkey then

    flag := KEYEVENTF_EXTENDEDKEY

    else

    flag := 0;



    // 일반문자 key down 발생

    keybd_event(key, MapvirtualKey(key, 0), flag, 0);

    flag := flag or KEYEVENTF_KEYUP;

    // 일반문자 key up 발생

    keybd_event(key, MapvirtualKey(key, 0), flag, 0);



    // VirtualKey key up 발생

    for i := 3 downto 1 do

    begin

    if shiftkeys[i].shift in bShift then

    keybd_event(shiftkeys[i].vkey,

    MapVirtualKey(shiftkeys[i].vkey, 0),

    KEYEVENTF_KEYUP, 0);

    end;

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    Memo1.Setfocus;

    PostKeyEx32(VK_HOME, [ssCtrl], False); {맨 처음으로 이동}

    PostKeyEx32(VK_END, [ssCtrl, ssShift], False); {전체 선택}

    PostKeyEx32(Ord('C'), [ssCtrl], False); {클립보드로 복사}



    PostKeyEx32(VK_END, [ssCtrl], False); {맨 마지막으로 이동}

    PostKeyEx32(VK_RETURN, [], False); {CR}

    PostKeyEx32(Ord('V'), [ssCtrl], False); {붙여넣기}

    end;



    end.





    • memogi
    • 1999.10.24 03:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박지훈.임프
      1999.10.24 19:00
      memogi wrote: > 안녕하세요 > Memo컴퍼넌트 안에있는 내용을 인쇄할려고하는데...??? > 어떻게해야할지...
    • 오승섭
      1999.10.25 18:46
      안녕하세요 .... 먼저 SQL*PLUS에서 SCOTT/TIGER@balbs로 접속을 해보십시요.... 만약 접속이 않된다면...
    • 박현수
    • 1999.10.23 21:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이상호
      1999.11.02 07:24
      Windows 95부터 사용되는 Win32 API에서 포트를 다루기 위해서 권장되는 방법은 CreateFile이란 API를 사...
    • 김금남
    • 1999.10.23 21:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이주흥
      1999.10.24 02:30
      김금남 wrote: > 자재관리 프로그램입니다. > 출고번호에 딸린 출고물품들이 여러건 되는데, > 양식지에...
    • 유도삼
      1999.10.25 22:46
      이주흥 wrote: > 김금남 wrote: > > 자재관리 프로그램입니다. > > 출고번호에 딸린 출고물품들이 여러...
    • 초보
    • 1999.10.23 20:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조복기
      1999.10.24 04:51
      안녕하세요.. 어떤 용도로 일본어를 써야되는지는 알수가 없지만 한글윈도우에는 자체적으로 일본어를 ...
    • 최종오
    • 1999.10.23 18:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권경부
      1999.10.23 20:38
      최종오 wrote: > 인터넷에서 엑셀 파일을 다운로드 받아서 > 프로그램에 데이터를 읽어 들여야 하는데요....
    • 열심이
    • 1999.10.23 06:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유도삼
      1999.10.24 09:10
      열심이 wrote: > 퀵리포트에서 qrgroup으로 그룹을 지정한 후 footband를 qrband로 지정하였습니다. footb...
    • 최종오
    • 1999.10.23 04:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권경부
      1999.10.23 21:28
      최종오님... 한델 강의실에 있는 안치봉님의 다국적언어지원 강의를 참고해보세요... 행운이 있길 빕니...
    • 권경부
      1999.10.23 05:00
      최종오님.. 1. 자동으로 만든 폼을 Create해야 하나...? - Create 하지 않으셔도 됩니다. 2. 같은 폼...
    • 박지훈.임프
      1999.10.24 19:09
      산들바람 wrote: > 아래처럼 하믄여 마우스가 라벨에 가믄 글짜색이 변하거든여 > 근데요 그 라벨을 판넬...
    • 송정환
    • 1999.10.23 03:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.10.23 03:38
      송정환 wrote: > TQuery컴포넌트를 이용해서 커리해온 데이타를 DB에디터을 이용해서 쓰는과 동시에 데이...
    • 델초보
    • 1999.10.23 03:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권경부
      1999.10.23 03:16
      이렇게 해보세요.... procedure TForm1.Button2Click(Sender: TObject);//최소화된 폼을 활성화 시키는 ...
    • 조형석
    • 1999.10.23 02:39
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.10.23 03:33
      조형석 wrote: > DB에서 field를 추가하면 Edit 박스와 라벨 을 다른 폼에 생성 하려구 합니다. > > 만...
    • 권경부
      1999.10.23 02:51
      조형석님.. 이렇게 해보세요... procedure TForm1.FormCreate(Sender: TObject); var MyLabel : TLabe...
    • 얼라
    • 1999.10.23 01:48
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.10.23 03:29
      얼라 wrote: > 음... 마우스가 폰트위로 가게 되면 색을 바꾸는 소스에서염... > label이 Form위에 있으...
    • 권경부
      1999.10.23 02:35
      이렇게 해보세요....(패널위에서 입니다.)... (현재 폼 위에 레이블이 하나 있고요.. 글구 패널위에 또 레...
    • 화랑
    • 1999.10.23 00:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박지훈.임프
      1999.10.24 19:15
      화랑 wrote: > 안녕하세요.. > > 누가 아는 사람없어요.. > > 저는 ASP용 Active Server Component...
    • 화랑
      1999.10.25 02:55
      답변 정말 감사합니다. 그럼 델파이에서 유니코드와 String사이에는 어떻게 변환을 하면 되는 지요.. ...
    • 델초보
    • 1999.10.22 23:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.10.23 00:19
      델초보 wrote: > SendMessage(CboZip.Handle,WM_KEYDOWN,VK_F4,0); > 문을 써서 자동으로 디비콤보 박스...
    • 김경율
    • 1999.10.22 22:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.10.23 00:26
      김경율 wrote: > edit keydown 이벤트에서 버튼이라든지 그밖으 컴포너트의 event를 동적으로 실행할려면 ...