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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.04.2009, 22:22
Norw Norw вне форума
Прохожий
 
Регистрация: 03.11.2008
Адрес: Ростов
Сообщения: 39
Репутация: 10
По умолчанию Проблема с Shift-ом

Необходимо, чтоб процедура выполнялась только при нажатой клавише Shift. Как это реализовать?
__________________
кто знает общую теорию тот БОГ
Ответить с цитированием
  #2  
Старый 01.04.2009, 23:26
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Код:
//в начале процедуры
if GetAsyncKeyState(VK_SHIFT) = 0 then Exit;

//или обратное условие
if GetAsyncKeyState(VK_SHIFT) = -32767 then begin
  ... //операторы, выполняющиеся при нажатой кл. Shift
end;
Можно так же посмотреть в сторону функции GetKeyState
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #3  
Старый 02.04.2009, 00:30
Norw Norw вне форума
Прохожий
 
Регистрация: 03.11.2008
Адрес: Ростов
Сообщения: 39
Репутация: 10
По умолчанию

Пасибо. только теперь возникает следующая проблема... у меня по нажатию мыши должны выполняться несколько однотипных процедур, а выполняеться только первая из них. как сделать чтоб они выполнялись все?
__________________
кто знает общую теорию тот БОГ
Ответить с цитированием
  #4  
Старый 02.04.2009, 01:19
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Код обработчика нажатия мыши выложите.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 02.04.2009, 10:14
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Чтобы какая-либо процедура выполнилась, необходимо ее вызвать.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #6  
Старый 03.04.2009, 01:04
Norw Norw вне форума
Прохожий
 
Регистрация: 03.11.2008
Адрес: Ростов
Сообщения: 39
Репутация: 10
По умолчанию

вот процедура:
Код:
procedure nazg(Sender: TObject);
 var
  APanel : TPanel;
begin
   if GetAsyncKeyState(VK_SHIFT) = -32767 then
  If Sender Is TPanel Then
    Begin
      APanel := Sender As TPanel;

   if APanel.Color=clBtnFace  then APanel.Color := clYellow else APanel.Color :=clBtnFace;
   if APanel.Bevelouter =bvRaised then APanel.Bevelouter:=bvLowered else APanel.Bevelouter:=bvRaised;

    End;
end;



вот обработчик клика по кнопке:
Код:
procedure TForm3.Panel1Click(Sender: TObject);
begin
 nazg(Panel1);
 nazg(Panel93);
 nazg(Panel95);
 nazg(Panel99);
 nazg(Panel98);
 nazg(Panel92);
 nazg(Panel77);

 end;


по идее нажатие кнопки должно включать еще ряд других.... кнопки на основе компонента TPanel.
__________________
кто знает общую теорию тот БОГ
Ответить с цитированием
  #7  
Старый 03.04.2009, 10:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А если так?:
Код:
procedure nazg(Sender: TObject);
 var
  APanel : TPanel;
begin
  If Sender Is TPanel 
  Then Begin
         APanel := Sender As TPanel;
         if APanel.Color=clBtnFace  
         then APanel.Color := clYellow else APanel.Color :=clBtnFace;
         if APanel.Bevelouter =bvRaised 
         then APanel.Bevelouter:=bvLowered 
         else APanel.Bevelouter:=bvRaised;
         End;
end;

procedure TForm3.Panel1Click(Sender: TObject);
begin
 if GetAsyncKeyState(VK_SHIFT) = -32767 
 then begin
        nazg(Panel1);
        nazg(Panel93);
        nazg(Panel95);
        nazg(Panel99);
        nazg(Panel98);
        nazg(Panel92);
        nazg(Panel77);
        end;
 end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 03.04.2009, 22:32
Norw Norw вне форума
Прохожий
 
Регистрация: 03.11.2008
Адрес: Ростов
Сообщения: 39
Репутация: 10
По умолчанию

там порядка 100 кнопок-панелей, и под них процедуры обработки уже написаны, так что придеться код для каждой кнопки добавлять... проще через процедуру, но все равно спасибо за вариант
__________________
кто знает общую теорию тот БОГ
Ответить с цитированием
  #9  
Старый 03.04.2009, 22:44
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Цитата:
там порядка 100 кнопок-панелей
Учитесь пользоваться Find-Replace.
Ответить с цитированием
  #10  
Старый 03.04.2009, 23:57
Norw Norw вне форума
Прохожий
 
Регистрация: 03.11.2008
Адрес: Ростов
Сообщения: 39
Репутация: 10
По умолчанию

в будущем, с превиликим удовольствием.... но пока чо я хотел бы решить описанную в теме задачу...
__________________
кто знает общую теорию тот БОГ
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter