Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TMyCustomHotKey = class(TWinControl)
- public
- WinKey: boolean;
- procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
- constructor Create(AOwner: TComponent); override;
- end;
- TMyHotKey = class(TMyCustomHotKey)
- procedure TMyCustomHotKey.KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
- var
- a : integer;
- lbl : string;
- tmphot : tshortcut;
- begin
- a:= 0;
- if GetAsyncKeyState(VK_LWIN) <> 0 then a:= 1;
- if GetAsyncKeyState(VK_RWIN) <> 0 then a:= 1;
- if a=1 then begin
- winkey := true;
- end else
- begin
- winkey := false;
- end;
- rePaint();
- }
- procedure TMyCustomHotKey.WMPaint(var Message: TWMPaint);
- var
- PS: TPaintStruct;
- DC: HDC;
- Canvas: TCanvas;
- i: Integer;
- X, Y: Integer;
- OldColor: TColor;
- Size: TSize;
- Max: Integer;
- s, Palabra, PrevWord: string;
- OldPen, DrawPen: HPEN;
- tmphot : tshortcut;
- Key: Word;
- Shift: TShiftState;
- lbl ,res: string;
- keyboardState: TKeyboardState;
- asciiResult: Integer;
- begin
- DC := Message.DC;
- if DC = 0 then DC := BeginPaint(Handle, PS);
- Canvas := TCanvas.Create;
- try
- OldColor := Font.Color;
- Canvas.Handle := DC;
- Canvas.Font.Name := Font.Name;
- Canvas.Font.Size := Font.Size;
- with Canvas do
- begin
- Brush.Color := Self.Color;
- FillRect(Self.ClientRect);
- Font.Color := OldColor;
- tmphot := gethotkey;
- ShortCutToKey(tmphot, Key, Shift);
- res := GetCharFromVKey(key);
- if (winkey = false) and (key = 0 ) and (tmphot = 0)then
- BEGIN lbl := 'Enter hotkey [CTRL/ALT/WIN] + Key' ;
- TextOut(1 ,1,lbl) ;
- END
- else begin
- if winkey then lbl := 'Win +' else lbl := '';
- if ssAlt in Shift then lbl := lbl+ 'Alt + ';
- if ssShift in Shift then lbl := lbl+ 'Shift + ';
- if (not winkey) and (ssCtrl in Shift) then lbl := lbl+ 'Ctrl + ';
- lbl := lbl+ res;
- end;
- TextOut(1 ,1,lbl);
- end;
- finally
- if Message.DC = 0 then EndPaint(Handle, PS);
- end;
- Canvas.Free;
- SETCARETPOS(1,1);
- end;
Add Comment
Please, Sign In to add comment