Вопрос № 30224: Уважаемые эксперты!
Подскажите п-та как произвести обработку при нажатии вспомагательных клавиш Ctrl, Esc и др. Какая функция считывает код нажатой клавиши? Спасибо!...Вопрос № 30260: Есть один вопрос по двум направлениям.
Необходимо проверить запущены ли сервера TCP и UDP по определенным портам и по определенным IP-адрессам. Хотя вроде в протоколе UDP нет как-такового сервера. Ну вот такие вопросы....
Вопрос № 30.224
Уважаемые эксперты!
Подскажите п-та как произвести обработку при нажатии вспомагательных клавиш Ctrl, Esc и др. Какая функция считывает код нажатой клавиши? Спасибо!
Отправлен: 25.11.2005, 17:18
Вопрос задал: Ramil (статус: Посетитель)
Всего ответов: 8 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Ramil!
onKeyDown считывает код нажатой клавиши и в качестве параметра получает состояние клавиш Shift, Alt
Отвечает: Маренич Владимир
Здравствуйте, Ramil!
Обрабатывайте события OnKeyDown и OnKeyUp. Если нужно глобально для всего приложения обрабатывать, то можете это делать в обработчике Application.OnMessage.
Ответ отправил: Маренич Владимир (статус: 7-ой класс)
Отправлен: 25.11.2005, 17:26
Отвечает: Jadd
Здравствуйте, Ramil!
Очень просто. Ставишь keypreview := true;
А дальше пишешь обработчик OnKeyPress, в котором пишешь:
if (ssCtrl in State) and (Key = VK_ESCAPE) then
begin
//твой код
end
Если глобально, тогда ставишь хук на клаву и ловишь нужную комбинацию.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 25.11.2005, 17:33
Отвечает: sir henry
Здравствуйте, Ramil!
Это событие называется OnKeyDown - есть практически у любого компонента. В параметрах нас интересуют две вещи:
- Key: word - Здесь код нажатой клавиши (у клавиши ESC код называется VK_ESCAPE)
- Shift: TShiftState - указывает какая из вспомогательных клавишь (Shift, Alt, Ctrl) была нажата.
Коды клавиш можно посмотреть в файле windows.pas. Начинаются на VK_.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 25.11.2005, 17:44
Отвечает: REFERI
Здравствуйте, Ramil!
Событие FormKeyDown.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Escape then
Form1.Caption := 'Сегодня 25 ноября международный день борьбы за ликвидацию насилия в отношении женщин. Стоило бы задуматься...';
// иначе всех нас ждет не
end;
// а end.
:(
В приложении я привел вам некоторые функции. Полагаю это будет вам интересно и полезно. Да и еще такой момент в Windows.pas содержатся описания всех клавиш. Посмотреть это можно непосредственно, а можно набрав в своем приложении к-нить функцию зажать CTRL и кликнуть, например на ...VK_RIGHT...
Попробуйте это с любой другой записью.
Удачи!
Приложение:
--------- Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: 9-ый класс)
Отправлен: 25.11.2005, 21:12
Отвечает: Master135
Здравствуйте, Ramil!
Используйте программу http://www.rvsn2.narod.ru/download/code.zip весит всего 20 Кб, но свыводит много разных видов кодов клавиатуры)
--------- И пусть кто-то скажет что я не прав....
Ответ отправил: Master135 (статус: Студент)
Отправлен: 26.11.2005, 01:36
Отвечает: Vbhjndjhtw
Здравствуйте, Ramil!
Вот исходники по Вашкму вопросу:
unit Unit1;
type
TForm1 = class(TForm)
Image1: TImage;
Edit1: TEdit;
Label1: TLabel;
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_F6 then
begin
Edit1.Text := 'F6 нажата';
Image1.Stretch := True;
end
else
begin
Edit1.Text := '';
Image1.Stretch := False;
end
end;
type
TForm1 = class(TForm)
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Escape then
if MessageDlg('Желаете выйти из программы?',mtConfirmation,[mbYes,mbNo],0)=id_Yes then Close;
end;
end.
Приложение:
--------- Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 3-ий класс)
Отправлен: 26.11.2005, 09:46
Отвечает: Schmak
Здравствуйте, Ramil!
Процедуры OnKeyDown и OnKeyUp обрабатывают соответственно нажатие и отпускание клавиши. Они возвращают в параметре Key номер клавиши, а впараметре Shift состояние клавиш Shift, Ctrl, Alt. Клавиша Esc имеет key=27/ В приложении приведён пример. При нажатии клавиши в Label1 выводится информация об этой клавише. Надеюмсь разобраться с кодом Вам не составит труда.
Приложение:
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 26.11.2005, 10:47
Вопрос № 30.260
Есть один вопрос по двум направлениям.
Необходимо проверить запущены ли сервера TCP и UDP по определенным портам и по определенным IP-адрессам. Хотя вроде в протоколе UDP нет как-такового сервера. Ну вот такие вопросы.
Отправлен: 26.11.2005, 14:53
Вопрос задал: CJ (статус: Студент)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Каськов Артем Игоревич
Здравствуйте, CJ!
Можно воспользоваться компонентой TcpClient и делать проверку на возможность подключения
вот набросок
TcpClient1.RemoteHost:='ip';
TcpClient1.RemotePort:='port';
TcpClient1.Active:=True;
if TcpClient1.Connected=True then
RichEdit1.Lines.Add('connect to ip na port')
else
RichEdit1.Lines.Add('not connect to ip na port');
Отвечает: sir henry
Здравствуйте, CJ!
Используйте компонент IndyClient:
idTCPClient.Host:='www.figvam.ru';
idTCPClient.Port:=7700;
idTCPClient.Connect(2);
Клиент пытается законнектится к указаным хосту и порту в течении определенного времени.
Подобный клиент есть и для UDP.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 26.11.2005, 16:44