Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Комонент ведет поразному, в дезигнтайме и в рантайме 
V
    Опции темы
Dr.Wisdom
Дата 1.2.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 6.1.2005

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



Есть визуальный компонент. 
Довольно таки сложный.
Состоит из двух картинок одна над другой и обладает кучей свойств, которые этими картинками управляют.

В нем есть набор своих свойств.
Код

       __property int Type = {read = get_type, write = set_type, default=0};
       __property bool Vertical = {read = get_vertical, write = set_vertical, default=false};
      //итд

и набор свойств родителя
Код

      __property bool Broken = {read = get_broken, write = set_broken};
      __property bool Repair = {read = get_repair, write = set_repair};
      __property bool NoData = {read = get_nodata, write = set_nodata};


И еще есть функция refresh_status(), определенная в родителе, которая вызывает виртуальную refresh_view(), определенную в каждом наследнике.
Эта функция также вызываеться из каждой set_свойство после присвоения соответсствующей переменной.

Стало нужно чтобы если вдруг установилось одно из всвойств Broken Repair или NoData то в нижнюю картинку загрузился определенный файл.

До этого было так, что загрузка этого файла зависила только от NoData.

Кароче говоря, было
Код

 if(NoData){}

стало
 
Код

if(NoData||Repair||Broken){}


все по логике вещей нормально.
и в дезигн тайме все работает!!!!
я переключаю свойства и картинка меняется.
НО. в рантайме не работает!!!!!!!!!!!!!
я переключаю свойство и картинка не меняется.

У меня открыт пакет с компонентами. 
Я его перекомпиливал. 
Я его грохал и снова компилил.
Я грохал все что с ним связвно и компилил заново.

В дезигне все работает как надо!!!!
А в рантайме - нет!!!!

Что это?
Может сталкивался кто?
Может это билдер гонит?

Вот на всякий код функций обновления картинок.
Код

void __fastcall TMNSchemaElement::refresh_status()
{
   if (!Broken && !Repair) StatusPict->Image->LoadFromFile(gifEmpty);
   if (Broken) StatusPict->Image->LoadFromFile(gifBroken);
   if (Repair) StatusPict->Image->LoadFromFile(gifRepair);

   refresh_view(); // <------- вот я ее вызываю

   int dy = (this->Height - StatusPict->Height)/2;
   int dx = (this->Width - StatusPict->Width)/2;

   StatusPict->AutoSize = true;
   this->AutoSize = true;
   StatusPict->Left = this->Left + dx;
   StatusPict->Top = this->Top + dy;

   StatusPict->Hint = this->Hint;
   StatusPict->ShowHint = this->ShowHint;
}

и еще
Код


void TMNZatvor::refresh_view()
{
        int d = 0;
        if(!vertical) d = 4; 

        if(NoData||Repair||Broken) // <------------  вот последнее гонючее изменение
           Image->LoadFromFile(picts[d]);
        else
           Image->LoadFromFile(picts[this->Type+d]);       
}

--------------------
VIVA LA RESISTANCE
PM MAIL   Вверх
Anikmar
Дата 1.2.2007, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



А вот при установке одного из этих трех свойств точно в каждом вызывается refresh_status?

На ум приходит только эта причина.

А почему в дизайнтайме перерисовывается - может там какая-то другая ветка срабатывает...


PM MAIL ICQ   Вверх
Dr.Wisdom
Дата 2.2.2007, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 6.1.2005

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



Да, точно. 
Везде.
И если бы не выхывался, то и в дезигне не работало бы.

ЭЭЭЭЭЭХ! Семь бед - один ресет.
Снесу билдер и попробую снова. 
--------------------
VIVA LA RESISTANCE
PM MAIL   Вверх
Anikmar
Дата 3.2.2007, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Dr.Wisdom @  2.2.2007,  23:41 Найти цитируемый пост)
Снесу билдер и попробую снова.  

Достаточно радикально.
Надеюсь поможет.
PM MAIL ICQ   Вверх
Dr.Wisdom
Дата 5.2.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 6.1.2005

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



Вооооот
добрался до кодов
вот свойства
(чтобы не быть голословным про "да везде")
Код

void __fastcall TMNSchemaElement::set_broken(bool Value)
{
   broken = Value;
   refresh_status();
}
void __fastcall TMNSchemaElement::set_repair(bool Value)
{
   repair = Value;
   refresh_status();
}

void __fastcall TMNSchemaElement::set_nodata(bool Value)
{
   nodata = Value;
   refresh_status();
}

void __fastcall TMNSchemaElement::set_door(bool Value)
{
   door = Value;
   refresh_status();
}

--------------------
VIVA LA RESISTANCE
PM MAIL   Вверх
Dr.Wisdom
Дата 5.2.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 6.1.2005

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



Помогло!
Я в замешательстве.

Наверное у меня все таки билдер гонючий.

Притом проект который не работал продолжает не работать, только теперь ругаеться на "ненашел файл .lib". Типо там были мои старые компоненты. 

Потому что новый пакет я скомпилил под другим именем.

Выходит внутри проекта есть ссылка на пакеты? Чушь какаято.

Но в новом проекте с использованием тех же компонентов все работает как надо.
Замечательно то, что я пробывал создавать ногвые пустые проекты с нуля на прошлом, ныне снесенном билдере и они не работалт точно также как и основное проект. 

Теперь ни один из них не работает совсем, но новосозданные проекты работают.

Вот такой глюк. Толи в моем билдере, толи еще в чем.
Я все таки думаю, что в билдере.

Копиляция билдера следующая: v6.0 10.155 + Sp4 + RxLib 2.75 + DepOPCComponents2.2
--------------------
VIVA LA RESISTANCE
PM MAIL   Вверх
Vyacheslav
Дата 5.2.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(Dr.Wisdom @  5.2.2007,  13:52 Найти цитируемый пост)
Выходит внутри проекта есть ссылка на пакеты?

Почему чушь?  У Вас была подключена библиотека с одним именем, Вы подключили ешеодну библиотеку с другим именем. Линковщик доходит до первой, находит нужные ссылки и подключает. Ваша вторая, которое содержит новый вариант ему без разницы. Вохможно прада линковщик варнинги выдаст. 
А так, открываем 
Project->Edit Option Source 
и вычищаем ненужные  библиотеки


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Dr.Wisdom
Дата 5.2.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 6.1.2005

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



Ясно... с этим ясно.... Но это вторично....

До переустановки то несоответствие дезигнтайми с рантаймом было! Вот что меня убило!
И библиотека тогда одинаково называлась. 

С этими подключаемыми модулями такая чушь происходит. Жуть.

Неработает.... smile 
Неработает.... smile 
Неработает.... smile 
[сходишь кофе пропьешь]
Работает..... smile 
--------------------
VIVA LA RESISTANCE
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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