Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
동적으로 event를 실행할려면?
edit keydown 이벤트에서 버튼이라든지 그밖으 컴포너트의 event를 동적으로 실행할려면 어떻게 해야 되나요.
1
COMMENTS
김영대
•
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.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
memogi
•
1999.10.24 03:54
1
COMMENTS
/
0
LIKES
Memo컴퍼넌트 내용인쇄??
박지훈.임프
•
1999.10.24 19:00
memogi wrote: > 안녕하세요 > Memo컴퍼넌트 안에있는 내용을 인쇄할려고하는데...??? > 어떻게해야할지...
박찬훈
•
1999.10.24 00:55
1
COMMENTS
/
0
LIKES
델파이 5.0과 오라클 8.04의 연결을 하려는데요...
오승섭
•
1999.10.25 18:46
안녕하세요 .... 먼저 SQL*PLUS에서 SCOTT/TIGER@balbs로 접속을 해보십시요.... 만약 접속이 않된다면...
박현수
•
1999.10.23 21:17
1
COMMENTS
/
0
LIKES
port 의 대체 api..???
이상호
•
1999.11.02 07:24
Windows 95부터 사용되는 Win32 API에서 포트를 다루기 위해서 권장되는 방법은 CreateFile이란 API를 사...
김금남
•
1999.10.23 21:05
2
COMMENTS
/
0
LIKES
퀵리포트-Detail을 6줄만 찍으려면?
이주흥
•
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
엑셀 파일을 Import 하는 방법
권경부
•
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 05:25
0
COMMENTS
/
0
LIKES
QuickReport2.0에서 TQRExpr 재사용 문제
김진호
1999.10.23 05:11
0
COMMENTS
/
0
LIKES
한글 입력을 효과적으로...?
최종오
•
1999.10.23 04:43
1
COMMENTS
/
0
LIKES
다국언어지원 방법
권경부
•
1999.10.23 21:28
최종오님... 한델 강의실에 있는 안치봉님의 다국적언어지원 강의를 참고해보세요... 행운이 있길 빕니...
열심이
1999.10.23 04:32
0
COMMENTS
/
0
LIKES
프린터코딩시 실과별 그룹을 지어 페이지를 넘기면서.
최종오
•
1999.10.23 04:30
1
COMMENTS
/
0
LIKES
동적으로 생성된 폼이 아닌 자동으로 생성된 폼을 사용하는 방법
권경부
•
1999.10.23 05:00
최종오님.. 1. 자동으로 만든 폼을 Create해야 하나...? - Create 하지 않으셔도 됩니다. 2. 같은 폼...
산들바람
•
1999.10.23 04:13
1
COMMENTS
/
0
LIKES
마우스 위치알기엽!
박지훈.임프
•
1999.10.24 19:09
산들바람 wrote: > 아래처럼 하믄여 마우스가 라벨에 가믄 글짜색이 변하거든여 > 근데요 그 라벨을 판넬...
송정환
•
1999.10.23 03:08
1
COMMENTS
/
0
LIKES
DB에디터에 대하여
구창민
•
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
Active Server Component제작중 upload
박지훈.임프
•
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
동적으로 event를 실행할려면?
edit keydown 이벤트에서 버튼이라든지 그밖으 컴포너트의 event를 동적으로 실행할려면 어떻게 해야 되나요.
김영대
•
1999.10.23 00:26
김경율 wrote: > edit keydown 이벤트에서 버튼이라든지 그밖으 컴포너트의 event를 동적으로 실행할려면 ...
김경율
1999/10/22 22:56
Views
402
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 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.