Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнение одного кода в разных местах 
:(
    Опции темы
Chechaco
Дата 12.10.2005, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 6.10.2005
Где: из Канска

Репутация: нет
Всего: 1



Граждане, вопрос следующий:
У меня есть некое приложение, которое сворачивается в трей, и PopupMenu, которое можно вызвать на иконке в трее. Подскажите пожалуйста, как мне сделать так, чтобы какое-то действие можно было бы вызвать и нажатием на кнопку в приложении и из меню в трее, но код действия написать только один раз. Всем заранее большое спасибо.
PM MAIL   Вверх
~FoX~
Дата 12.10.2005, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



В событии объекта PopupMenu (который в трейе) onClick выбираешь обработчик другой кнопки.
Или тупо вызываешь

Код

procedure TForm1.N11Click(Sender: TObject);
begin
 Button1Click(Sender);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 //Твой код написанный один раз.
end;



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Chechaco
Дата 12.10.2005, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 6.10.2005
Где: из Канска

Репутация: нет
Всего: 1



Спасибо! А если нужно выполнить не весь код, а только часть его?
PM MAIL   Вверх
z-END
Дата 12.10.2005, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Цитата(Chechaco @ 12.10.2005, 10:04)
А если нужно выполнить не весь код, а только часть его?

дели код на отдельные функции


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
~FoX~
Дата 12.10.2005, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(Chechaco @ 12.10.2005, 10:04)
А если нужно выполнить не весь код, а только часть его?

в обработчике пишем что то вроде

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 If Sender = N11 then begin
     //......Твой код для ТПапапМеню
  end
  else begin
     //......Твой код для ТБаттон
  end; 
end;


А вообще берем книжку по делфи (или лучше по паскалю - любую) и смотрим как вызываются процедуры и функции, как им передаются параметры, какие они бывают и как с ними можно работать....


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
z-END
Дата 12.10.2005, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Цитата
If Sender = N11 then begin

а с чего ты взял что Sender будет nil?!


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Chechaco
Дата 12.10.2005, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 6.10.2005
Где: из Канска

Репутация: нет
Всего: 1



Книжку взять не могу за неимением оной в наших местах, приходится задавать вопросы.
А как передать в обработчик какую функцию ему выполнять?

Это сообщение отредактировал(а) Chechaco - 12.10.2005, 09:28
PM MAIL   Вверх
~FoX~
Дата 12.10.2005, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



z-END
Какой Nil? - n11 (одиннацать!!!) - имя итема попап менюхи....
Chechaco
См. мой пост выше.....Ты уже передаешь туду переменную Sender, дальше проверяешь если ее содержимое равно названию пункта попап меню, выполняешь код для него. Если нет, то выполняешь другой код!!!

Это сообщение отредактировал(а) ~FoX~ - 12.10.2005, 09:30


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Chechaco
Дата 12.10.2005, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 6.10.2005
Где: из Канска

Репутация: нет
Всего: 1



~FoX~
Не нужен мне другой код, у меня одна кнопка выполняет 2 разных действия в зависимости от переменной, а в ПопапМеню эти два действия должны выполняться 2-мя разными пунктами меню. Собственно я уже написал, но только код пришлось повторять для каждого обработчика, а я хочу как покрасивее.
PM MAIL   Вверх
~FoX~
Дата 12.10.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Chechaco
Так и передавай эту переменную smile
Код давай, с коментами smile

Это сообщение отредактировал(а) ~FoX~ - 12.10.2005, 10:03


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Chechaco
Дата 12.10.2005, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 6.10.2005
Где: из Канска

Репутация: нет
Всего: 1



Это как сделал я, (в каждом пункте ПопапМеню повторяется тоже что и в обработчике БуттонКлик) а хотелось бы без повторений.

Код

{Открыть/Закрыть CD-ROM}
procedure TForm1.Button1Click(Sender: TObject);
begin
if a = true then
begin
mciSendString('Set cdaudio door open wait', nil, 0, handle);
Button1.Caption := 'Закрыть лоток';
a := false;
end
else begin
mciSendString('Set cdaudio door closed wait', nil, 0, handle);
Button1.Caption := 'Открыть лоток';
a := true;
end;
end;

{Открываем лоток из PopupMenu}
procedure TForm1.N2Click(Sender: TObject);
begin
if a = true then
begin
mciSendString('Set cdaudio door open wait', nil, 0, handle);
a := false;
Button1.Caption := 'Закрыть лоток';
end;
end;

{Закрываем лоток из PopupMenu}
procedure TForm1.N3Click(Sender: TObject);
begin
if a = false then
begin
mciSendString('Set cdaudio door closed wait', nil, 0, handle);
Button1.Caption := 'Открыть лоток';
a := true;
end;
end;

PM MAIL   Вверх
~FoX~
Дата 12.10.2005, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  if a = true then begin
    mciSendString('Set cdaudio door open wait', nil, 0, handle);
    Button1.Caption := 'Закрыть лоток';
    a := false;
  end
  else begin
    mciSendString('Set cdaudio door closed wait', nil, 0, handle);
    Button1.Caption := 'Открыть лоток';
    a := true;
  end;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
      a := true;
     Button1Click(Sender)
end;
procedure TForm1.N3Click(Sender: TObject);
begin
      a := false;
     Button1Click(Sender)
end;


smile Читаем книжки по паскалю smile

З.Ы. Если в системе есть виртуальные сидюки и их буквы по первее чем реального, то не сработает нифига.

Это сообщение отредактировал(а) ~FoX~ - 12.10.2005, 10:22


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Chechaco
Дата 12.10.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 6.10.2005
Где: из Канска

Репутация: нет
Всего: 1



Мдя, я идиотъ smile
Спасибо за мысль!!!

Но тут напрашивается встречный вопрос: как узнать какой из сидюков реальный, а заодно как при запуске программы узнать открыт сидюк или нет?

Это сообщение отредактировал(а) Chechaco - 12.10.2005, 10:41
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.