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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прорисовка формы 
V
    Опции темы
кмс
Дата 19.3.2012, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте.
Есть главное окно, на котором расположен PageControl и на нем уже разные элементы - Image,  кнопки, мемо итд.
При клике по Image появляется вторая форма на котором тоже на всю форму расположен Image. Проблема в том, когда закрываю вторую форму, то на первой форме какое то время остаются фрагменты от второй формы. 
Конечно не смертельно, но неприятно. Как можно избавиться от этого?
Наверно не совсем понятно что я имел ввиду, поэтому выкладываю видео(6мб) и скрин.

Видео - http://zalil.ru/32905098





Это сообщение отредактировал(а) кмс - 30.1.2014, 10:25
PM MAIL   Вверх
Snowy
Дата 19.3.2012, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Закрываешь как? Form2.Close? Попробуй сделать.
Код

  Form2.Hide;
  Application.ProcessMessages;
  Form2.Close;
Больше похоже на какой-то анимационный эффект, чем на глюк.
PM MAIL   Вверх
кмс
Дата 19.3.2012, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Snowy, не помогло.
Закрываю просто Close;
Не знаю, у меня там с анимацией ни чего не связано, да и вообще никаких визуальных эффектов не делал.

Это сообщение отредактировал(а) кмс - 19.3.2012, 14:36
PM MAIL   Вверх
LegionnaireFH
Дата 20.3.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. 
Попробуйте добавить в Events второй формы  событие OnClose с кодом:
Код

Form1.Repaint;

Так же этот код можно добавить в событие OnActivate первой формы.
PM   Вверх
кмс
Дата 20.3.2012, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



LegionnaireFH, тоже не помогло. Я все варианты с обновлением формы перепробовал.

PM MAIL   Вверх
LegionnaireFH
Дата 20.3.2012, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А если сместить расположение первой формы, то содержимое перерисовывается? Функцию WinAPI  InvalidateRect тоже пытались использовать?
PM   Вверх
Frees
Дата 20.3.2012, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 16
Всего: 54



Драйвера на видяху нормально установлены?

Добавлено через 1 минуту и 21 секунду
покажи код как окно с картинкой создаешь и показываешь. 


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
кмс
Дата 20.3.2012, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



LegionnaireFH, если перемещаю первую форму то нормально, если перемешаю вторую, то такая же проблема. 
InvalidateRect не пробовал, завтра проверю.
На счет видяхи, я проверял прогу на другом компе(ноуте) та же проблема, да и сын на компе в игры играет, вроде не жаловался.
Вот полностью код вызова второго окна:
Код

procedure TForm1.Image1Click(Sender: TObject);
var
  RS: TResourceStream;
begin
  if (ComboBox1.ItemIndex = 0) and (ComboBox2.ItemIndex = 0) then
  begin
    Exit;
  end;
  Form2.Caption := 'Picture View  ' + ComboBox1.text;

    if (Modul = 30) or (Modul = 31) then
    begin
      RS := TResourceStream.Create(H2, '30_31_', RT_RCDATA);
      GIF := TImagingGIF.Create;
      GIF.LoadFromStream(RS);
      Form2.Image1.Picture.Graphic := GIF;
    end
    else
    begin
      RS := TResourceStream.Create(H2, IntToStr(Modul) + '_', RT_RCDATA);
      GIF := TImagingGIF.Create;
      GIF.LoadFromStream(RS);
      Form2.Image1.Picture.Graphic := GIF;
    end;
    Form2.Show;

  RS.Free;
  GIF.Free;
end;

Забыл указать версию дельфи - XE

Это сообщение отредактировал(а) кмс - 20.3.2012, 22:30
PM MAIL   Вверх
northener
Дата 21.3.2012, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 12
Всего: 20



Цитата(кмс @  19.3.2012,  13:02 Найти цитируемый пост)
Наверно не совсем понятно что я имел ввиду, поэтому выкладываю видео

На видео никаких артефактов не смог увидеть.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
кмс
Дата 21.3.2012, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



northener, скрин выхоложенный выше из этого видео, на нем вроде все видать что я имею ввиду.
Создал пустой проект, накидал элементов, добавил вторую форму, такой эффект присутствует, но еле заметный, все происходит быстро.
Бросил на первую форму PageControl и все стало так же как в моей проге smile


Это сообщение отредактировал(а) кмс - 21.3.2012, 09:04
PM MAIL   Вверх
LegionnaireFH
Дата 21.3.2012, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не пробовали выполнять следующий код после закрытия второй формы? 
Код

  RS.Free;
  GIF.Free;

PM   Вверх
кмс
Дата 21.3.2012, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообщем удалось полностью избавиться от проблемы, перед закрытием второй формы, свойство(второй формы) AlphaBlend выставляю в true, а перед открытием выставляю в false.
Можно и сразу в настройках выставить в true, но тогда при первом показе второй формы, весь Image1 залит черным цветом.

Это сообщение отредактировал(а) кмс - 21.3.2012, 09:51
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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