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

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


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

RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 379
от 04.09.2004, 15:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1782
Отправлено ответов: 4067
Активность: 228.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Slider
Статус: Опытный
Общий рейтинг: 141.77
[Подробней >>]
Харланов Сергей
Статус: Начальный
Общий рейтинг: 122.22
[Подробней >>]
CJ
Статус: Опытный
Общий рейтинг: 118.42
URL: Персональный сайт Каратецкого Кирилла.
Телефон: +375297353706
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1773. Доброго времени суток, господа эксперты Необходимо чтобы по нажатию кнопки Delete на выбранной ячейк... (ответов: 2)
Вопрос № 1774. Здравствуйте! Скажите, как найти хэндл главного окна (созданного в визуальной среде) и хэндл любого ... (ответов: 2)
Вопрос № 1775. Здравствуйте, уважаемые эксперты! Приведите пожалуйста пример создания простейшего окна средствами A... (ответов: 1)
Вопрос № 1776. Как сделать чтоб при щелчке правой кнопкой мыши по listbox выделялся пункт по которому щёлкнули(как ... (ответов: 3)

Вопросов: 4, ответов: 8


 Вопрос № 1773

Доброго времени суток, господа эксперты
Необходимо чтобы по нажатию кнопки Delete на выбранной ячейки Stringgrid появлялось сообщение. Пишу следующее:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=chr(vk_delete)
then showmessage('Delete');
end;
запускаю программу, нажимаю Delete, ничего не происходит.
Если записать ..if key<>chr(vk_delete).. или ..if key=chr(vk_return)..
то все работает как и должно работать.
Вопрос:
Почему не работает с кнопкой Delete и что нужно сделать чтобы заработало?
thnx



Вопрос отправлен: 30.08.2004, 20:01
Отправитель: Fenix

[Следующий вопрос >>] [Список вопросов]

Отвечает Slider

Доброе время суток, Fenix!
Создаешь HandleMessages как метод формы и затем назначаешь его Application.HandleMessages.
procedure TForm1.HandleMessages(var Msg: tMsg; var Handled: Boolean);
begin
if (Msg.Message = WM_KeyDown) and
(Msg.wParam in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_DELETE]) then
begin
case Msg.wParam of
VK_UP: ShowMessage('ВВЕРХ');
VK_DOWN: ShowMessage('ВНИЗ');
VK_LEFT: ShowMessage('ВЛЕВО');
VK_RIGHT: ShowMessage('ВПРАВО');
VK_DELETE: ShowMessage('ДЕЛЕТ');
end;
Handled := True;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := HandleMessages;
end;
не забуть в тип формы добавить процедуру HandleMessages(var Msg: tMsg; var Handled: Boolean);

Ответ отправлен: 31.08.2004, 10:42
Отправитель: Slider


Отвечает Харланов Сергей

Здравствуйте, Fenix!
Нужно поменять событие: вместо OnKeyPress надо использовать OnKeyUp или OnKeyDown:

procedure TForm1.StringGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=46
then showmessage('Delete')
else if key=13
then showmessage('Enter')
else if key=27
then showmessage('Esc')
else showmessage(Код нажатой клавиши='+IntToStr(Key))
end;


Ответ отправлен: 31.08.2004, 13:09
Отправитель: Харланов Сергей


 Вопрос № 1774

Здравствуйте!
Скажите, как найти хэндл главного окна (созданного в визуальной среде) и хэндл любого контрола (например Edit1, Label1, Button1 и т.д.)
Спасибо.



Вопрос отправлен: 30.08.2004, 22:08
Отправитель: pv

[Следующий вопрос >>] [Список вопросов]

Отвечает Slider

Приветствую Вас, pv!
Edit1.Handle

Ответ отправлен: 31.08.2004, 10:44
Отправитель: Slider


Отвечает Харланов Сергей

Добрый день, pv!
Form1.Handle
Edit1.Handle
Button1.Handle
Компонент Label не является контролом а потому handle не имеет

Ответ отправлен: 31.08.2004, 11:55
Отправитель: Харланов Сергей


 Вопрос № 1775

Здравствуйте, уважаемые эксперты!
Приведите пожалуйста пример создания простейшего окна средствами API на Delphi (без визуальных компонентов).



Вопрос отправлен: 30.08.2004, 22:11
Отправитель: k.o.

[Следующий вопрос >>] [Список вопросов]

Отвечает Slider

Доброе время суток, k.o.!
потратил на это 40 минут, потомучто когда сам начинал, тоже было очень интересно =))
program WinMin;
uses
windows,
messages;
var
wc: TWndClassEx;
MainWnd: HWND;
Mesg: TMsg;
function WindowProc(wnd: HWND; Msg: Integer; Wparam: wparam; Lparam: lparam): Lresult;
stdcall;
begin
case msg of
wm_destroy:
begin
postquitmessage(0);exit;
result := 0;
end;
else Result := DefWindowProc(wnd,msg,wparam,lparam);
end;
End;

var
xPos,yPos,nWidth,nHeight: Integer;
begin
wc.cbSize := sizeof(wc);
wc.style := cs_hredraw or cs_vredraw;
wc.lpfnWndProc := @WindowProc;
wc.cbClsExtra := 0;
wc.cbWndExtra := 0;
wc.hInstance := Hinstance;
wc.hIcon := LoadIcon(0,idi_application);
wc.hCursor := LoadCursor(0,idc_arrow);
wc.hbrBackground := Color_BTNFACE + 1;
wc.lpszMenuName := nil;
wc.lp szClassName := 'WinMin: Main';
registerclassEx(wc);
xPos := 100;
yPos := 100;
nWidth := 400;
nHeight := 250;
MainWnd := CreateWindowEx(0,'WinMin: Main','Win Min',ws_overlappedwindow,xPos,yPos,nWidth,nHeight,0,0,hInstance,nil);
ShowWindow(MainWnd,CmdShow);
while GetMessage(Mesg,0,0,0) do
begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;
end.


Ответ отправлен: 31.08.2004, 11:02
Отправитель: Slider


 Вопрос № 1776

Как сделать чтоб при щелчке правой кнопкой мыши по listbox выделялся пункт по которому щёлкнули(как при щелчке левой кнопкой) а потом вылезало попап меню. Причём если щёлкнули не по пункту то выделялся ближайший(нижний_последний)



Вопрос отправлен: 31.08.2004, 11:07
Отправитель: menand

[Следующий вопрос >>] [Список вопросов]

Отвечает CJ

Доброе время суток, menand!
А ты в обработчик нажатия правой кнопки добавь код, который посылает сообщение контролу о нажатии левой кнопки.

Ответ отправлен: 01.09.2004, 14:24
Отправитель: CJ


Отвечает Харланов Сергей

Доброе время суток, menand!
У компонента ListBox есть событие OnMouseDown которому необходимо присвоить следующую процедуру:
procedure TfrmAdmin.ListBox1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
APoint: TPoint;
begin
APoint.X := X;
APoint.Y := Y;
ListBox1.ItemIndex:=ListBox1.ItemAtPos(APoint, true);
if ListBox1.ItemIndex=-1 then
begin
ListBox1.ItemIndex:=ListBox1.Count-1;
end;
end;
Далее в свойстве PopupMenu компонента ListBox указываешь нужное тебе PopupMenu.
Для того чтобы получить индекс элемента отмеченного в ListBox обращаешься к свойству ListBox.ItemIndex
procedure TfrmAdmin.PopupMenuItemClick(Sender: TObject);
begin
ShowMessage(ListBox1.Items[ListBox1.ItemIndex])
end;

Ответ отправлен: 31.08.2004, 11:52
Отправитель: Харланов Сергей


Отвечает Slider

Здравствуйте, menand!
чуть не удобно, но если поковырять, то оч даже ничего, можно еще клас дочерний создать и там процедуры переписать
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SwapMouseButton(true);
Popupmenu1.Popup(mouse.CursorPos.X,mouse.CursorPos.Y);
SwapMouseButton(false);
end;

Ответ отправлен: 31.08.2004, 12:13
Отправитель: Slider



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (26)
C / C++ (14)
Perl (6)
Builder / Delphi (13)
Pascal (23)
Basic / VBA (4)
Java / JavaScript (4)
PHP (13)
Криптография (7)
WinAPI (11)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (62)
"Железо" (41)
Поиск информации (19)
Администратору
Windows NT/2000/XP (37)
Linux / Unix (14)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (7)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Дизайн, программирование: Калашников О.А.

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться

В избранное