Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.08.24;
Скачать: CL | DM;

Вниз

Вопрос по case of   Найти похожие ветки 

 
Энтони   (2013-09-29 02:14) [0]

Всем привет. Есть вопрос, постараюсь его описать:

допустим есть код

case (HK1.HotKey) of
//если нажата клавиша такая то, то выполняем процедуру
1: какая то процедура
.....
end;

допустим мне нужно описать 100 условий (а может и больше, если пользователь создаст больше динамических объектов), можно ли это как то сделать, что бы не писать построчно от 1..N


 
Туповатый ©   (2013-09-29 06:12) [1]


> мне нужно описать 100 условий

точно условий? или 100 вариантов ОДНОГО условия?

вообще ТЗ неполное. множество вариантов. можно создать массив процедур. можно создать обработчик объекта при создании объекта и обращаться по имени объекта.
Более точно ответить возможно при более точной формулировки задачи. Вполне возможно, что все выйдет одной строкой, типа: (Sender as TComponent) или FindComponent()


 
Павел   (2013-09-29 07:01) [2]

Создаются динамические THotKey и заносятся в TList

.........
SWHotKey.Add(THotkey.Create(Form1.SWScrollBox));
SWHotKey[NumberWindow].Tag:=10+NumberWindow;
SWHotKey[NumberWindow].OnChange:=Form1.SWHotKeyOnChange;

Регистрируем глобальный хоткей с индефикатором клавиши "к"

procedure TForm1.SWHotKeyOnChange(Sender: TObject);
var k:integer;
begin
  k:=THotKey(Sender).Tag;
  RegHotKey(SWHotKey[k-10].HotKey, k);
end;

Если нажата клавиша с идентификатором к то

procedure TForm1.WMHotKey(var Msg:TWMHotKey);
begin
 Beep;

 case Msg.HotKey of
   1: MouseClick();
    .....
//С 10+ идут динамически созданные хоткеи
   10:ShowWindow1(SWEdit[0].Text);
 end;

end;


 
Leonid Troyanovsky ©   (2013-09-29 10:39) [3]


> Энтони   (29.09.13 02:14)

>  можно ли это как то сделать, что бы не писать построчно

RTFM: TActionList.

--
Regards, LVT.


 
Павел   (2013-09-30 14:59) [4]

TActionList
не понял) если только это намёк на создании действий в компоненте ActionList
, но они будут действительны без приставок cntrl shift, т.е. при нажатии комбинации cntrl + клавиша в другой проге, наша прога этого не увидит, поэтому я через RegisterHotkey регаю эти комбинации


 
Rouse_ ©   (2013-09-30 15:36) [5]

т.е. ты хочешь забрать зарегистрированные другими программами штатные HotKey-и на себя? А пользователь это хочет? :)


 
Павел   (2013-09-30 15:49) [6]

у пользователя нет выбора) я на самом деле не знаю, задача в идеале такая, что допустим пример при нажатии cntrl+R моя и вторая (чужая) прога это видела (а так да, моя прога отбирает этот хоткей)
а чтобы через THotkey видеть в чужых окнах нажатие комбинаций cntrl+клавиша, я другого выхода не увидел и сделал так


 
Inovet ©   (2013-09-30 16:13) [7]

> [6] Павел   (30.09.13 15:49)
> у пользователя нет выбора

Ненавижу такие программы. Даже в которых отключить можно, но по умолчанию включено, падают низко в рейтинге, а где отклучить нельзя - падают в корзину


 
Туповатый ©   (2013-09-30 16:18) [8]

а мне нравится. без всяких там соплей, как сказано, так и будет. И это есть стиль - ОС тоже особо не повыбирать.


 
Rouse_ ©   (2013-09-30 22:36) [9]

Посмотри Мюнгхаузена. Там есть здравая мысль: "все глупости совершаются с умным выражением лица"


 
Туповатый ©   (2013-09-30 22:47) [10]

не люблю крылатые выражения. я лично неоднократно совершал глупости с тупым выражением лица, да и с прочими выражениями тоже. проще говоря: я совершал некоторые действия с различным выражением лица, некоторые из которых (действий) в последствии определялись как глупость.
И вообще, определение "глупости" как некоего неумного действия не перманентно и может в дальнейшем перейти в "он знал!"



Страницы: 1 вся ветка

Текущий архив: 2014.08.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.004 c
11-1205861966
Vinum
2008-03-18 20:39
2014.08.24
Сделать кучу форм


15-1390592076
Дмитрий СС
2014-01-24 23:34
2014.08.24
Выдача сдачи наличными.


11-1252421746
varag
2009-09-08 18:55
2014.08.24
Работа с ListView


15-1390669236
antonn
2014-01-25 21:00
2014.08.24
немного кривой order by в mssql


2-1380528742
12345
2013-09-30 12:12
2014.08.24
не вызывается событие OnBeforePost