Dzień dobry :-) naskrobałem sobie taki mały programik
i mam w nim kontrolkę Edit i Buttona, który wykonuje to
co trzeba ale tak sobie pomyślałem że mogło by się to
wykonywać po wciśnięciu Entera.
No i właśnie nie wiem co tu zrobić, jak wciskam
enter w Edicie to Windows tylko ten ochydny
brzdęk wydaje z siebie, no a w tej Procedurze
od okna nie przychodzą komunikaty od klawiszy
z kontrolki i nie wiem co dalej począć :(
[b][dopisane][/b]
Marooned poradził mi żeby wstawił do stylu buttona
BS_DEFPUSHBUTTON, mimo tego nie działa więc ja
może kod wkleje:
program KoszNamer;
{$R *.res}
uses
Windows, Messages, Registry;
var
Handle, Lbl1, Lbl2, Edt1, Btn1, Fnt1: Hwnd;
WCls : TWndClass;
Msg: TMsg;
procedure ChangeKoszName;
var
Reg : TRegistry;
Hw : HWnd;
Buff : Array[0..255] of Char;
begin
GetWindowText(Edt1, Buff, SizeOf(Buff));
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey('\CLSID{645FF040-5081-101B-9F08-00AA002F954E}', True);
Reg.WriteString('', Buff);
Reg.CloseKey;
Reg.Free;
Hw := FindWindow('Progman', 'Program Manager');
PostMessage(Hw, WM_KEYDOWN, 116, 0);
SetWindowText(Edt1, '');
SetFocus(Edt1);
end;
function WndProc(HWnd: HWND; Msg: UINT; wParam: WPARAM;
lParam: LPARAM): LRESULT; stdcall;
begin
Result := 0;
case Msg of
WM_DESTROY:
PostQuitMessage(0);
WM_COMMAND:
if Btn1 = lParam then ChangeKoszName;
else
Result := DefWindowProc(HWnd,Msg,WParam,LParam);
end;
end;
begin
WCls.style := CS_OWNDC;
WCls.lpfnWndProc := @WndProc;
WCls.cbClsExtra := 0;
WCls.cbWndExtra := 0;
WCls.hInstance := hInstance;
WCls.hIcon := LoadIcon(hInstance, 'MAINICON');
WCls.hCursor := LoadCursor(0, IDC_ARROW);
WCls.hbrBackground := COLOR_WINDOW;
WCls.lpszMenuName := nil;
WCls.lpszClassName := 'KoszNamerClassName';
RegisterClass(WCls);
Handle := CreateWindow('KoszNamerClassName',
'KoszNamer for Windows XP',
WS_VISIBLE or WS_CAPTION or WS_SYSMENU,
(GetSystemMetrics(SM_CXSCREEN) - 220) div 2,
(GetSystemMetrics(SM_CYSCREEN) - 100) div 2,
220, 106,
0, 0, hInstance, nil);
Lbl1 := CreateWindow('STATIC',
'Podaj nową nazwę dla kosza',
WS_VISIBLE or WS_CHILD,
35, 8, 190, 13,
Handle, 0, hInstance, nil);
Edt1 := CreateWindowEx(WS_EX_CLIENTEDGE, 'EDIT',
'',
WS_VISIBLE or WS_CHILD or ES_AUTOHSCROLL,
13, 30, 135, 21,
Handle, 0, hInstance, nil);
Btn1 := CreateWindow('BUTTON',
'Zmień',
WS_VISIBLE or WS_CHILD or BS_DEFPUSHBUTTON,
154, 29, 45, 23,
Handle, 0, hInstance, nil);
Lbl2 := CreateWindow('STATIC',
'(C) 2003 by Mateusz Piechnat',
WS_VISIBLE or WS_CHILD,
33, 60, 175, 13,
Handle, 0, hInstance, nil);
Fnt1 := CreateFont(-12, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH or FF_DONTCARE,
'MS Sans Serif');
Sendmessage(Lbl1, WM_SETFONT, Fnt1, 0);
Sendmessage(Lbl2, WM_SETFONT, Fnt1, 0);
Sendmessage(Edt1, WM_SETFONT, Fnt1, 0);
Sendmessage(Btn1, WM_SETFONT, Fnt1, 0);
SetFocus(Edt1);
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end.
[b][dopisane][/b]
a może ktoś wie jak odebrać komunikat o wciśnięciu Entera w Edicie ?