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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2010, 08:05   #1
Celestia
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 68
Восклицание Проблема с классом

Здравствуйте! Разбираюсь с классами, и возник такой вопрос:

Кусок юнита класса TDX9Render

Код:
type
  TDX9Render = class(TGraphicControl)
  
  public
  constructor      Create; overload;

  private
  rSceneDone     : boolean;
  published
  property SceneDone     : boolean             read rSceneDone default True;
end;

.... 

procedure TDX9Render.DrawScene();
begin
rSceneDone:=false;
  //Здесь происходит что то
rSceneDone:=true;
end;
Кусок кода основного юнита:

Код:
procedure TMasterForm.DrawScene(Sender : TObject);
begin
if DX9Renderer.SceneDone=true then       <----- вот тут загвоздка не читает свойство SceneDone 
begin
DX9Renderer.DrawScene();
end;
end;
Помогите пожалуйста Спасибо!
Celestia вне форума Ответить с цитированием
Старый 03.12.2010, 08:31   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Код:
type
  TDX9Render = class(TGraphicControl)
  private
  FSceneDone: boolean;
  procedure SetDrawScene(AVolue: boolean);  

  public
  constructor      Create; overload;
 
  published
  property SceneDone     : boolean read FSceneDone write SetDrawScene default True;
end;

.... 

procedure TDX9Render.SetDrawScene(AVolue: boolean);
begin
  if AVolue <> FSceneDone then
     FSceneDone:= AVolue;
end;


procedure TDX9Render.DrawScene;
begin
FSceneDone:=false;
  //Здесь происходит что то
FSceneDone:=true;
p.s. код не проверял, но логика должна быть понятна.
принимаю благодарности в письменном виде( весы слева)...

Последний раз редактировалось MaxNik2009; 03.12.2010 в 08:35.
MaxNik2009 вне форума Ответить с цитированием
Старый 03.12.2010, 10:03   #3
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от MaxNik2009 Посмотреть сообщение
p.s. код не проверял, но логика должна быть понятна.
Насколько я вижу твой код отличается от первоначального только тем, что Ты сделал published property SceneDone доступным на запись, что совсем ненужно.

Я бы посоветовал написать
Код:
procedure TDX9Render.DrawScene();
begin
  if rSceneDone then
  begin
    rSceneDone:=false;
    //Здесь происходит что то
    rSceneDone:=true;
end;
end;
А причина "нечтения" вероятнее всего в том, что
default True; - только предупреждает редактор свойств, что если свойство true - то можно не сохранять его в файле dfm.
НО НЕ УСТАНАВЛИВАЕТ свойство в true.
напишите в конструкторе
Код:
rSceneDone:=true;
и скорей всего все заработает.
s.Creator вне форума Ответить с цитированием
Старый 03.12.2010, 15:40   #4
Celestia
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 68
По умолчанию

s.Creator, получилось, благодарю!
Celestia вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с классом _-Re@l-_ Общие вопросы C/C++ 3 23.09.2010 19:15
Работа с классом UnChanter Помощь студентам 2 14.03.2010 20:23
Работа с классом| C++ Konicy Общие вопросы C/C++ 15 21.12.2009 19:08
Проблема с классом list Homer_J_Simpson Общие вопросы C/C++ 4 28.11.2009 22:03
C++ работа с классом VadEr Помощь студентам 2 17.05.2009 12:33