Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
HideCaret이라는 api함수 사용방법좀..
HideCaret이라는 api함수 사용방법좀 가르쳐주세요..
1
COMMENTS
김영대
•
1999.09.22 18:33
// 아래 HideCaret()과 ShowCaret()을 보세요
//
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
CaretBm : TBitmap;
CaretBmBk : TBitmap;
OldEditsWindowProc : Pointer;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
type
WParameter = LongInt;
LParameter = LongInt;
{New windows procedure for the edit control}
function NewWindowProc(WindowHandle : hWnd;
TheMessage : WParameter;
ParamW : WParameter;
ParamL : LParameter): LongInt stdcall;
begin
{Call the old edit controls windows procedure}
NewWindowProc := CallWindowProc(Form1.OldEditsWindowProc,
WindowHandle,
TheMessage,
ParamW,
ParamL);
if TheMessage = WM_SETFOCUS then begin
CreateCaret(WindowHandle, Form1.CaretBm.Handle, 0, 0);
ShowCaret(WindowHandle);
end;
if TheMessage = WM_KILLFOCUS then begin
HideCaret(WindowHandle);
DestroyCaret;
end;
if TheMessage = WM_KEYDOWN then begin
if ParamW = VK_BACK then
CreateCaret(WindowHandle, Form1.CaretBmBk.Handle, 0, 0) else
CreateCaret(WindowHandle, Form1.CaretBm.Handle, 0, 0);
ShowCaret(WindowHandle);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
{Create a smiling bitmap using the wingdings font}
CaretBm := TBitmap.Create;
CaretBm.Canvas.Font.Name := 'WingDings';
CaretBm.Canvas.Font.Height := Edit1.Font.Height;
CaretBm.Canvas.Font.Color := clWhite;
CaretBm.Width := CaretBm.Canvas.TextWidth('J') + 2;
CaretBm.Height := CaretBm.Canvas.TextHeight('J') + 2;
CaretBm.Canvas.Brush.Color := clBlue;
CaretBm.Canvas.FillRect(Rect(0, 0, CaretBm.Width, CaretBm.Height));
CaretBm.Canvas.TextOut(1, 1, 'J');
{Create a frowming bitmap using the wingdings font}
CaretBmBk := TBitmap.Create;
CaretBmBk.Canvas.Font.Name := 'WingDings';
CaretBmBk.Canvas.Font.Height := Edit1.Font.Height;
CaretBmBk.Canvas.Font.Color := clWhite;
CaretBmBk.Width := CaretBmBk.Canvas.TextWidth('L') + 2;
CaretBmBk.Height := CaretBmBk.Canvas.TextHeight('L') + 2;
CaretBmBk.Canvas.Brush.Color := clBlue;
CaretBmBk.Canvas.FillRect(Rect(0,
0,
CaretBmBk.Width,
CaretBmBk.Height));
CaretBmBk.Canvas.TextOut(1, 1, 'L');
{Hook the edit controls window procedure}
OldEditsWindowProc := Pointer(SetWindowLong(Edit1.Handle,
GWL_WNDPROC,
LongInt(@NewWindowProc)));
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
{Unhook the edit controls window procedure and clean up}
SetWindowLong(Edit1.Handle,
GWL_WNDPROC,
LongInt(OldEditsWindowProc));
CaretBm.Free;
CaretBmBk.Free;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
문보석
1999.09.23 02:29
0
COMMENTS
/
0
LIKES
메모리에 있는 내용을 버퍼로 옮기려면....
박성훈
•
1999.09.23 01:39
1
COMMENTS
/
0
LIKES
문자키이외의 키 입력
박지훈.임프
•
1999.10.24 20:24
박성훈 wrote: > 버튼을 만들어서 키보드가 눌린 것처럼 하려고 하는데요. > 그런데 -,:등의 문자는 화...
진희
1999.09.23 00:40
0
COMMENTS
/
0
LIKES
String을 오른쪽에서 끊어 읽기
최은석
1999.09.23 00:26
0
COMMENTS
/
0
LIKES
메모타입의 데이타를 쿼리하는 방법
이강선
•
1999.09.22 23:40
1
COMMENTS
/
0
LIKES
[급한질문] 컴파일시(후에 런타임시)에 에러메시시 해설에대해서
이진우
•
1999.09.23 00:21
이강선 wrote: > 컴파일시에 그리고 런타임시에 다음과 같은 에러메시시가 납니다. > 'cannot focus...
이주원
1999.09.22 21:45
0
COMMENTS
/
0
LIKES
델파이등 질문함.. 꼭 봐주세요.
이충권
•
1999.09.22 21:28
1
COMMENTS
/
0
LIKES
Delphi Question!
이진우
•
1999.09.22 22:44
이충권 wrote: > 아래에서 보듯이 > 1부터 20까지의 Integer 만을 받기 위해서 > Range Error를 Check...
최영국
•
1999.09.22 19:06
1
COMMENTS
/
0
LIKES
AutoCAD 와 Delphi
박종혁
•
1999.09.26 19:12
안녕하세요. 음 최영국님이 질문하신 내용의 요지를 파악하고자 무지(?) 생각했었습니다. 근데 한가지 확...
박면구
•
1999.09.22 17:57
1
COMMENTS
/
0
LIKES
프로그램이 1번만 실행되도록...
신인재
•
1999.09.22 18:26
한번만 실행시키기 기법은 ATom을 이용하는 방법이 대중적입니다....(이것은 여러 델파이 사이트를 돌...
한 재
•
1999.09.22 17:29
1
COMMENTS
/
0
LIKES
컴포넌트 등록
신인재
•
1999.09.22 18:38
.pas를 등록하는 방법은 델파이 메뉴에서 component|install component.. 를 선택하여 dcluser40.bpl...
구관중
1999.09.22 16:31
0
COMMENTS
/
0
LIKES
이미지 인쇄가 안되는 이유가 몰까요??
김성률
•
1999.09.22 11:11
1
COMMENTS
/
0
LIKES
데이타셋의 여러 필드에 대한 속성들을 공유하는 방법에 대해서
이진우
•
1999.09.22 22:47
김성률 wrote: > 한가지 물어 보겠습니다. > 데이타베이스 응용프로그램 제작시 사용하는 데이타셋의 여...
정경철
1999.09.22 05:23
0
COMMENTS
/
0
LIKES
VssComm32의 아이콘 문제
김지혜
•
1999.09.22 04:45
2
COMMENTS
/
0
LIKES
급] 제 말은 그게 아닌데..받은변수가 정수인지 아닌지 확인...
이진우
•
1999.09.22 22:51
김지혜 wrote: > 제가 질문했던 것은 어떤 변수의 값을 받았는데 그것이 문자인지 숫자인지 확인을 해 볼...
김종환
•
1999.09.27 21:09
김지혜 wrote: > 제가 질문했던 것은 어떤 변수의 값을 받았는데 그것이 문자인지 숫자인지 확인을 해 볼...
김용
1999.09.22 04:45
0
COMMENTS
/
0
LIKES
BDE에서 호스트 및 바인드 변수의 개수 제한 ?
이주흥
•
1999.09.22 03:09
1
COMMENTS
/
0
LIKES
문자열을 뒤집는 방법 혹시 아시나요?
이진우
•
1999.09.22 22:53
이주흥 wrote: > 안녕하세요...왜이리 머리가 안돌아가는지.. > 문자열을 뒤집는 소스 없습니까. > 아님...
호
•
1999.09.22 02:54
1
COMMENTS
/
0
LIKES
Query한 결과를 입력화면 없이 바로 다른 테이블에 Insert 하기 전에 Update?
이진우
•
1999.09.22 22:54
호 wrote: > 안녕하세요? > 어제 제 질문에 답해 주신 이재식님과 익명의 델피니언께 무지무지 고맙다는 ...
진현주
1999.09.22 02:18
0
COMMENTS
/
0
LIKES
AdoDataset 의 shape 에 대해 아시는분[델파이5]
조복기
1999.09.22 02:05
0
COMMENTS
/
0
LIKES
wise 인스톨프로그램에서 BDE첨부
황현동
•
1999.09.22 01:58
1
COMMENTS
/
0
LIKES
HideCaret이라는 api함수 사용방법좀..
HideCaret이라는 api함수 사용방법좀 가르쳐주세요..
김영대
•
1999.09.22 18:33
// 아래 HideCaret()과 ShowCaret()을 보세요 // unit Unit1; interface uses Windows, Message...
황현동
1999/09/22 01:58
Views
622
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
//
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
CaretBm : TBitmap;
CaretBmBk : TBitmap;
OldEditsWindowProc : Pointer;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
type
WParameter = LongInt;
LParameter = LongInt;
{New windows procedure for the edit control}
function NewWindowProc(WindowHandle : hWnd;
TheMessage : WParameter;
ParamW : WParameter;
ParamL : LParameter): LongInt stdcall;
begin
{Call the old edit controls windows procedure}
NewWindowProc := CallWindowProc(Form1.OldEditsWindowProc,
WindowHandle,
TheMessage,
ParamW,
ParamL);
if TheMessage = WM_SETFOCUS then begin
CreateCaret(WindowHandle, Form1.CaretBm.Handle, 0, 0);
ShowCaret(WindowHandle);
end;
if TheMessage = WM_KILLFOCUS then begin
HideCaret(WindowHandle);
DestroyCaret;
end;
if TheMessage = WM_KEYDOWN then begin
if ParamW = VK_BACK then
CreateCaret(WindowHandle, Form1.CaretBmBk.Handle, 0, 0) else
CreateCaret(WindowHandle, Form1.CaretBm.Handle, 0, 0);
ShowCaret(WindowHandle);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
{Create a smiling bitmap using the wingdings font}
CaretBm := TBitmap.Create;
CaretBm.Canvas.Font.Name := 'WingDings';
CaretBm.Canvas.Font.Height := Edit1.Font.Height;
CaretBm.Canvas.Font.Color := clWhite;
CaretBm.Width := CaretBm.Canvas.TextWidth('J') + 2;
CaretBm.Height := CaretBm.Canvas.TextHeight('J') + 2;
CaretBm.Canvas.Brush.Color := clBlue;
CaretBm.Canvas.FillRect(Rect(0, 0, CaretBm.Width, CaretBm.Height));
CaretBm.Canvas.TextOut(1, 1, 'J');
{Create a frowming bitmap using the wingdings font}
CaretBmBk := TBitmap.Create;
CaretBmBk.Canvas.Font.Name := 'WingDings';
CaretBmBk.Canvas.Font.Height := Edit1.Font.Height;
CaretBmBk.Canvas.Font.Color := clWhite;
CaretBmBk.Width := CaretBmBk.Canvas.TextWidth('L') + 2;
CaretBmBk.Height := CaretBmBk.Canvas.TextHeight('L') + 2;
CaretBmBk.Canvas.Brush.Color := clBlue;
CaretBmBk.Canvas.FillRect(Rect(0,
0,
CaretBmBk.Width,
CaretBmBk.Height));
CaretBmBk.Canvas.TextOut(1, 1, 'L');
{Hook the edit controls window procedure}
OldEditsWindowProc := Pointer(SetWindowLong(Edit1.Handle,
GWL_WNDPROC,
LongInt(@NewWindowProc)));
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
{Unhook the edit controls window procedure and clean up}
SetWindowLong(Edit1.Handle,
GWL_WNDPROC,
LongInt(OldEditsWindowProc));
CaretBm.Free;
CaretBmBk.Free;
end;
end.