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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.10.2010, 12:31
BlackDizel BlackDizel вне форума
Прохожий
 
Регистрация: 18.10.2010
Сообщения: 6
Репутация: 10
По умолчанию задать соответствие переменной перечисляемого типа и переменной типа TObject

юзал поиск, но подобной темы не нашел, если уже существует, просьба кинуть ссылку, а не сапог.

Проблема в следующем:
в одну процедуру есть 9 входов с разных компонентов, соответственно с разными переменными Sender.

Необходимо в зависимости от Sender вызвать соответствующую процедуру при клике по пункту popmenu...

Цитата:
при вызове процедуры клика в popmenu переменная Sender заменяется на MenuItem, и это понятно.
условимся, что решили передать в эту процедуру переменную перечисляемого типа на основе sender'а 'материнской' процедуры

определен тип и переменная этого типа:
Код:
type
TSender=
  (
    Sformwork,
    StabArray,
    Stabmatrix,
    StabString,
    Spanel1,
    Spanel4,
    Spanel2,
    Spanel3,
    Spanel5
  );
var
popsender:TSender;

хотелось бы в процедуре, при передаче параметра Sender, скажем, равным либо formwork,TabArray и пр. задать переменной popsender соответственно значение Sformwork,STabArray и пр.

Есть ли для этого путь в обход 9 операторов if..then либо вложенных if..then..else?
Ответить с цитированием
  #2  
Старый 18.10.2010, 12:49
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Case спасет гиганта мысли.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 18.10.2010, 12:53
BlackDizel BlackDizel вне форума
Прохожий
 
Регистрация: 18.10.2010
Сообщения: 6
Репутация: 10
По умолчанию

спасет, когда я найду способ передать в его значения:
а) переменную типа Tobject
б) переменную перечисляемого типа, заданную в соответсвии с переменной типа Tobject

способы реализации пункта б и хочу узнать)
Ответить с цитированием
  #4  
Старый 18.10.2010, 13:08
BlackDizel BlackDizel вне форума
Прохожий
 
Регистрация: 18.10.2010
Сообщения: 6
Репутация: 10
По умолчанию

на данный момент реализовано следубщим образом:
Код:
if popsender=formwork
then str:='ðàáî÷àÿ ôîðìà ëàáîðàòîðíîé ðàáîòû'
else
begin
  if popsender=tabArray
  then str:='çàêëàäêà ðàáîòû ñ ìàññèâîì'
  else
  begin
    if popsender=tabmatrix
    then str:='çàêëàäêà ðàáîòû ñ ìàòðèöåé'
    else
    begin
      if popsender=tabString
      then str:='çàêëàäêà ðàáîòû ñ ñòðîêîé'
      else
      begin
        if popsender=panel1
        then str:='ïàíåëü ââîäà çíà÷åíèé ìàññèâà'
        else
        begin
          if popsender=panel4
          then str:='ïàíåëü âûáîðà çàäàíèÿ äëÿ ìàññèâà'
          else
          begin
            if popsender=panel2
            then str:='ïàíåëü ââîäà ðàçìåðîâ ìàòðèöû'
            else
            begin
              if popsender=panel3
              then str:='ïàíåëü çíà÷åíèé ìàòðèöû'
              else
              begin
                if popsender=panel5
                then str:='ïàíåëü âûáîðà çàäàíèÿ äëÿ ìàòðèöû'
                else str:='âûçîâ ýòîãî îêíà áûë íåâîçìîæåí';
              end;
            end;
          end;
        end;
      end;
    end;
  end;
end;
showmessage(str);
работает, но код неприятен глазу, ибо наличествует многократное повторение одиннаковых вложенных операций.

p.s. фиг с ней, с кодировкой
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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