Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.10.2011, 22:48
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию Функции и клавиши

Всем привет. Возникло небольшое затруднение при чтении справке о функциях и клавишах.
Интересуют возможности подобного плана:
Команда или группа команд выполняемых при их активации. Если к примеру мне нужно выполнять одну и туже команду при нажатии разных кнопок или еще чего-то. Я так частично понял что есть отдельные команды, функции которые записываются и потом одной командой вызываются.
Образный пример, суть мыслей:
Код:
Функция:
Строки кода...

Кнопка:
Строки кода...
Вызов функции... // Вот именно эта команда. Выполняется код, доходит до функции, выполняет её и потом продолжает дальше.
Строки кода...

Вопрос о клавишах. Хочу так же сделать что бы в моей программе при нажатии клавиши или комбинации клавиш вроде Ctrl+A выполнялось заданное действие или вызывалась та самая функция.

Если кто понял суть вопроса и может помочь исходным примером в виде кода, буду очень благодарен. Или дайте хотя бы правильную наводку в справке. Ибо я даже не знаю что и искать толком. Было нашел про клавиши, но там оказалось речь идет о глобальном изменении клавиш клавиатуры, совсем не то.
Ответить с цитированием
  #2  
Старый 31.10.2011, 23:04
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

1. Можно выставить у формы
Код:
KeyPreview:=True
затем в событии OnKeyDown проверять нажатые клавиши и их комбинации по совокупности которых выполнять необходимые действия.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 31.10.2011, 23:59
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вообще, для этого сделан TActionList и, соотв., TAction.
Там можно назначить 2 комбинации горячих клавишь на одно действие. Хотя никто не мешает создать доп. TAction для других комбинаций и для него указать тот-же обработчик, что и для основного TAction.

Код тут привести не получится, т.к. все настраивается в инспекторе объектов и непосредственного программирования не требует.
Ответить с цитированием
  #4  
Старый 01.11.2011, 00:20
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Решений вообще масса, можно зарегистрировать горячую клавишу, можно описать в ресурсе, можно грузить из файла и использовать любой из ранее предложенных вариантов. Как фантазия подскажет.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 01.11.2011, 08:52
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Большое спасибо. С клавишами немного разобрался. По крайней мере смог назначить клавиши и задать им команды.

А с функциями ни кто не знает как быть? Или же они по другому называются...
Ответить с цитированием
  #6  
Старый 01.11.2011, 21:18
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Честно говоря, я не понял:
Цитата:
Образный пример, суть мыслей:
изъясняйтесь как-нибудь без образов.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 04.11.2011, 20:08
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию Функции

Более детально уже просто некуда.

Выполняем код, и при необходимости что-то сделать ссылаемся на отдельный код. Я её назвал функцией, но возможно она не так называется. Обработав нужные данные, мы продолжаем выполнение нашего скрипта.

Я читал статью про функции, но как-то оно не совсем то что нужно. Был пример с вычислением. В функцию отправлялись параметры (числа) они там вычислялись и результат возвращался. Но это не то...
Ответить с цитированием
  #8  
Старый 04.11.2011, 21:45
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Судя по рисунку, требуется рекурсивная функция.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 04.11.2011, 23:51
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Судя по рисунку, требуется рекурсивная функция.
А подробнее?
Ответить с цитированием
  #10  
Старый 05.11.2011, 00:05
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Функция которая вызывает сама себя определённое количество раз или завершает работу по условию.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 22.11.2011, 01:44
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Попробуем по другому изъяснится.
Ответить с цитированием
  #12  
Старый 22.11.2011, 05:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
procedure TForm1.Proc(ANum : Integer);
begin
  case ANum Of
    1 : Label1.color := $00FF0000;
    2 : Label1.color := $0000FF00;
    3 : Label1.color := $000000FF;
  end;
end;

procedure TForm1.Button1Click(Sender : TObject);
begin
  Label1.Caption := 'Text';
  Proc(1);
end;


procedure TForm1.Button1Click(Sender : TObject);
begin
  Label1.Caption := 'Text';
  Proc(2);
end;
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Kaktuz (16.01.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025