Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 311
от 01.12.2005, 15:36

Администратор:Калашников О.А.
В рассылке:Подписчиков: 252, Экспертов: 48
В номере:Вопросов: 2, Ответов: 10


Вопрос № 30224: Уважаемые эксперты! Подскажите п-та как произвести обработку при нажатии вспомагательных клавиш Ctrl, Esc и др. Какая функция считывает код нажатой клавиши? Спасибо!...
Вопрос № 30260: Есть один вопрос по двум направлениям. Необходимо проверить запущены ли сервера TCP и UDP по определенным портам и по определенным IP-адрессам. Хотя вроде в протоколе UDP нет как-такового сервера. Ну вот такие вопросы....

Вопрос № 30.224
Уважаемые эксперты!
Подскажите п-та как произвести обработку при нажатии вспомагательных клавиш Ctrl, Esc и др. Какая функция считывает код нажатой клавиши? Спасибо!
Отправлен: 25.11.2005, 17:18
Вопрос задал: Ramil (статус: Посетитель)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Ramil!

onKeyDown считывает код нажатой клавиши и в качестве параметра получает состояние клавиш Shift, Alt
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 25.11.2005, 17:25

Отвечает: Маренич Владимир
Здравствуйте, 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;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

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;

end.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

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');
Ответ отправил: Каськов Артем Игоревич (статус: 2-ой класс)
Отправлен: 26.11.2005, 15:45

Отвечает: sir henry
Здравствуйте, CJ!
Используйте компонент IndyClient:
idTCPClient.Host:='www.figvam.ru';
idTCPClient.Port:=7700;
idTCPClient.Connect(2);
Клиент пытается законнектится к указаным хосту и порту в течении определенного времени.
Подобный клиент есть и для UDP.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 26.11.2005, 16:44


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное