Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 13:49   #1
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию Enabled

помогите написать простенькую функцию Enabled типа Boolean
что то типа: if Enabled then {какие то действия} else {другие действия}
и при присвоение где то уже в другой процедуре Enabled:= True\False чтобы работало
NewLamer&Programer вне форума Ответить с цитированием
Старый 13.01.2013, 14:51   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
помогите написать простенькую функцию Enabled типа Boolean
А какова логика это функции? В общем виде это будет выглядеть так
Код:
function Enable({тут разные параметры если они есть}) : Boolean;
Begin
  result := false;
  //тут тело функции
  result := true
End.
Ну и соответственно вызов
Код:
if Enabled() then //тут что то делаем
                          else //иначе делаем что-нибудь другое
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 13.01.2013, 14:58   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,377
По умолчанию

То, что Вам надо, Вы уже написали, используя Enabled как переменную.
Имя функции или процедуры не может находиться в левой части выражения в программе.
Т.е. если Enabled функция или процедура, то пишем:
Код:
x := Enabled(y); {вызов функции}
или
Код:
Enabled(y, x); {вызов процедуры}


Возможно, что вопрос должен звучать иначе и просто не понят ...
Как-то так, ...
ViktorR на форуме Ответить с цитированием
Старый 13.01.2013, 15:07   #4
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

ну вот вспомните стандартные делфийские компоненты, ну например Button имеет свойство Enabled, при True она активна, при False нет, вот и мне надо примерное тоже самое: при True одни действия, при False другие, все эти действия должны описываться в теле самой функции Enabled (предполагаю что это будет рекурсия по всей видимости...) а присвоение Enabled:= True\False уже где то в другом месте...

например:

Код:
Function Enabled: Boolean;
begin
{вот эту часть надо реализовать}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Enabled:= True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Enabled:= False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Enabled
then Label1.Caption:= 'Enabled'
else Label1.Caption:= 'Desabled';
end;

Последний раз редактировалось NewLamer&Programer; 13.01.2013 в 15:10.
NewLamer&Programer вне форума Ответить с цитированием
Старый 13.01.2013, 15:21   #5
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

upd: экспериментальным путем до меня дошло что лучше назвать функцию PEnabled например, чтобы не путалась с Enabled той же Button

но тут мне выдает ошибку: Left side cannot be assigned to
это при вот таком коде функции:

Код:
Function PEnabled: Boolean;
begin
if PEnabled
then
      begin
      Result:= True;
      {какие то действия}
      end
else
      begin
      Result:= False;
      {какие то действия}
      end;
end;
NewLamer&Programer вне форума Ответить с цитированием
Старый 13.01.2013, 17:13   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,377
По умолчанию

Видимо у Вас не совсем правильно сложилось представление о методах и свойствах объекта.
Методы - это подпрограммы.
Свойства - значения.
Т.е., если у Вас есть объект, то у него могут быть методы - это набор функций и подпрограмм, вызов которых и определяет действия.
Свойства - это некоторые переменные (поля), значения в которых характеризую сам объект.
Например: автомобиль.
Описание процесса его движения можно сделать процедурами, в которых вычисляются, например, текущие координаты положения автомобиля.
Эти процедуры называют методами.
Для более естественного описания движения необходимо использовать такие значения, как масса автомобиля, мощность двигателя, расход топлива, емкость заправки, учитывать трение и.т.п. Эти значения - свойства объекта - автомобиль.
Т.о. существует четкое деление.
Для того же объекта Booton есть методы, которые вызываются при нажатии на кнопку, и свойства, которые характеризуют состояние кнопки. Например, прорисовывать кнопку как активную или нет зависит от значения свойства Enable - переменной, которая описана в этом обекте.
В Вашем случае:
Код:
Function PEnabled: Boolean;
begin
if PEnabled {В этот момент функция не определена.
                 А если это значение определить предварительно,
                 то будет делаться вызов функции для переопределения
                 значения - рекурсивный вызов.}
then
      begin
      Result:= True;
      {какие то действия}
      end
else
      begin
      Result:= False;
      {какие то действия}
      end;
end;
Просто опишите некоторую функцию, которая делает те или иные действия в зависимости от параметра:
Код:
function MakeMy(Enable : boolean) : boolean;
begin
   if Enable then
   begin
        ... {делаем 1}
   end
   else
   begin
    ... {делаем 2}
   end
   if (проверка результата действия) then
      MakeMy := true {Ok!}
   else 
      MakeMy := false; {Not Ok?}
end;
Как-то так ...
Как-то так, ...

Последний раз редактировалось ViktorR; 13.01.2013 в 17:21.
ViktorR на форуме Ответить с цитированием
Старый 13.01.2013, 17:58   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ViktorR +1

NewLamer&Programer, Вы не обижайтесь, но может Вам стоит какую-нибудь книжку по Паскаль/Delphi почитать?
TButton - это класс, и, чтобы понимать, что такое Enable Вам нужно знать основы ООП. Можете посмотреть исходники VCL, описание класса TButton и как описывается Enable.

честно говоря, я вообще не понимаю, что именно Вы добиваетесь своим кодом, какую конкретно задачу решаете...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.01.2013, 18:21   #8
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

ViktorR, спасибо кажется я вас понял
Serge_Bliznykov, да читаю вот, любимая настольная книжка называется Google
а добиваюсь я включения\выключения, честно говоря я тоже не понимаю - как можно не понимать этого ведь такая необходимость возникает в очень многих программах
NewLamer&Programer вне форума Ответить с цитированием
Старый 13.01.2013, 18:53   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
да читаю вот, любимая настольная книжка называется Google
Зря. Очень рекомендую прочитать хотя бы один (а лучше несколько) учебник. Дело в том, что в гугле Вы получаете ответы на свои текущие сиюминутные вопросы, но, систематизированных знаний не получаете, поэтому, боюсь, не понимаете базовых основ языка...

Цитата:
а добиваюсь я включения\выключения, честно говоря я тоже не понимаю - как можно не понимать этого
действительно, не понимаю.
начиная с
Код:
Timer1.Enable := True; // Timer1.Enable := False; или Timer1.Enable := Not Timer1.Enable;
и заканчивая:
Код:
var GameInProcess : boolean;
...
  if GameInProcess then {игра запущена}
  else {игра остановлена}
впрочем, Вы правы — главное, чтобы Вам, как программисту было понятно, какая необходимость и для чего это Вам нужно
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.01.2013, 19:38   #10
NewLamer&Programer
Форумчанин
 
Регистрация: 23.11.2012
Сообщений: 428
По умолчанию

а можно ли создать обработчик событий для переменной?
например существует процедура
Код:
Procedure Process(Enabled: Boolean);
begin
if Enabled 
then {какие то действия}
else {какие то действия};
end;
и существует переменная Enabled (не та что в процедуре, а отдельно)
Код:
Var Enabled: Boolean; //в глобальных переменных
и можно ли теперь создать что то типа
Код:
Procedure EnabledChange(Enabled: Boolean);
begin
Process(Enabled);
end;
главный вопрос: будет ли процедура EnabledChange вызываться при изменении глобальной переменной Enabled?

Последний раз редактировалось NewLamer&Programer; 13.01.2013 в 19:57.
NewLamer&Programer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключение из проверки по Enabled...? kta87 Общие вопросы Delphi 16 06.02.2012 17:49
Задержка с помощью timer.Enabled tisha077 Мультимедиа в Delphi 12 14.12.2009 02:33
Фокус и св-во enabled megachuhancer Общие вопросы Delphi 4 09.09.2009 11:59
Перехват изменения Enabled kinderproc Компоненты Delphi 4 22.06.2009 15:21
SpeedButton, glyph, enabled ScorpioN_T Общие вопросы Delphi 8 27.04.2009 19:14