Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
1

Обновления компонентов на форме

24.04.2014, 22:59. Показов 2809. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Есть написанная программа на C++ Builder 6;
При растягивании формы происходит сильное мигание и дерганье компонентов. Компонентов не так уж и много.
Протестировал другие программы. Например открыл restorator. При его растягивании - все компоненты на месте, ни одна пиктограммка не мигает.

Как исправить эту проблему для своего приложения?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2014, 22:59
Ответы с готовыми решениями:

Расположение компонентов на форме
Какие свойства компонентов использовать для нормального расположения компонентов на всех экранах?...

Расположение компонентов на форме
Всем доброго времени суток. Можно ли используя различные свойства визуальных компонентов(Align к...

Выравнивание компонентов на форме
Когда я добавляю любые компоненты в форму (кнопки Button, текст Label) я сталкиваюсь с такой...

Относительные размеры компонентов на форме
Доброго времени суток. Собственно вопрос, каким образом размеры и расположение компонентов на...

22
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
24.04.2014, 23:48 2
C++
1
DoubleBuffer=true;
0
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
25.04.2014, 08:55 3
Цитата Сообщение от no_wearines Посмотреть сообщение
При растягивании формы происходит сильное мигание и дерганье компонентов
Хотелось бы код растягивания поглядеть. Якорями скорее всего не пользовались?
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
25.04.2014, 18:37  [ТС] 4
Цитата Сообщение от gumi250 Посмотреть сообщение
DoubleBuffer=true;
Это ЧТО? (извините... (Где это свойство?))

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Хотелось бы код растягивания поглядеть. Якорями скорее всего не пользовались?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TForm4::Label2MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
x1 = X;
y1 = Y;
Label2->Tag = 1;        
}
 
 
void __fastcall TForm4::Label2MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if(Label2->Tag) {
Form4->Width = Form4->Width - x1 + X;
Form4->Height = Form4->Height - y1 + Y;
}
}
 
void __fastcall TForm4::Label2MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
Label2->Tag = 0;         
}
Что за якоря?
0
Марсианин)))
713 / 46 / 15
Регистрация: 18.07.2010
Сообщений: 634
25.04.2014, 18:49 5
Цитата Сообщение от no_wearines Посмотреть сообщение
Что за якоря?
У каждого видимого компонента есть свойство Anchors.
Он придерживает компонент там где вы выставили. Пример Выставили с левой стороны, то при уменьшение/увеличение размеров формы он будет находится в том месте где и был.
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
25.04.2014, 18:55  [ТС] 6
да в курсе я про это свойство. Просто не знал, что оно переводится как якорь!
0
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
25.04.2014, 19:14 7
Цитата Сообщение от no_wearines Посмотреть сообщение
Где это свойство?
Это свойство формы. Его нет в инспекторе объектов. Его надо устанавливать в коде:
C++
1
2
3
4
5
__fastcall TForm4::TForm1(TComponent* Owner)
    : TForm(Owner)
{
Form4->DoubleBuffered = true;
}
no_wearines, жестоко. А расскажите свою задумку. Может можно как-то по другому провернуть.
Но как припарка можно попробовать так:
Припаркакод
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
__fastcall TForm4::TForm1(TComponent* Owner)
    : TForm(Owner)
{
DoubleBuffered = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Label2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
x1 = X;
y1 = Y;
Labe2->Tag = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Label2MouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
if(Label2->Tag)
  {
  Form4->Width = Form1->Width - x1 + X;
  Form4->Height = Form1->Height - y1 + Y;
  Form4->Repaint();
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Label2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
Label2->Tag = 0;
}
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
25.04.2014, 19:24  [ТС] 8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Это свойство формы
Спасибо. Не знал про такое свойство. Да и кстати не помогло.

Цитата Сообщение от SatanaXIII Посмотреть сообщение
no_wearines, жестоко
Не понял, а что жестокого? (объясните, может я глупо этот механизм проворачиваю?)

Цитата Сообщение от SatanaXIII Посмотреть сообщение
А расскажите свою задумку
В общем есть форма. BorderStyle = bsSizeable; Установлены ограничения на размер формы.
Дело в том, что ее размер можно менять и за левую и верхнюю сторону формы. НО, когда это делаешь, начинаются "покатульки". Т. е. Когда форма при уменьшении достигает своего установленного минимума, она начинает ехать в правую сторону, то же самое с верхом.
Решил проблему, установив стиль в bsToolWindow и прописав механизм изменения размера формы. (В левом нижнем углу лежит Label, зацепив который и осуществляется ...)
0
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
25.04.2014, 19:33 9
Цитата Сообщение от no_wearines Посмотреть сообщение
она начинает ехать
Что-то у меня не начинает.
На всякий случай - что у вас за среда? Скиньте проект целиком.
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
25.04.2014, 19:43  [ТС] 10
Среда C++ Builder 6;
Проект, извините, дать не могу.

Сейчас новый проект создал. И оно действительно не дергается когда компоненты и пиктограммы лежат на форме (и двойной буфер ненужен). Однако, стоит их только положить в контейнер и начнется.

В проекте на форме лежит ScrollBox на нем Panel и только на ней набор кнопок.
0
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
25.04.2014, 20:24 11
no_wearines, вы можете минимальную композицию компонентов привести, чтобы моя фантазия не разыгрывалась? Воссоздайте проект только с вот с этим функционалом.
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
25.04.2014, 20:30  [ТС] 12
дай 10 минут
0
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
25.04.2014, 20:39 13
Хоть одиннадцать.
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
25.04.2014, 20:40  [ТС] 14
нате.
Вложения
Тип файла: rar Project1.rar (282.3 Кб, 11 просмотров)
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
26.04.2014, 17:20  [ТС] 15
Ау. Вы где?
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
26.04.2014, 19:15 16
У меня почти не моргает ничего, так, чуть-чуть. Проц вывозит, я так подозреваю.
А вообще, стоит шестого динозавра уже менять на что-то поновее, чтобы не ковыряться с такими пустяками.
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
26.04.2014, 19:19  [ТС] 17
Может вы и правы.
0
2 / 2 / 0
Регистрация: 16.12.2010
Сообщений: 25
28.04.2014, 17:32 18
как вариант прописать у всех компонентов стиль csOpaque
пример
C++
1
Label1 -> ControlStyle << csOpaque;
должно помочь.
0
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
28.04.2014, 19:27  [ТС] 19
не помогло.

Добавлено через 50 секунд
компоненты не дрыгаются, если меняешь размер только в одно сторону (вверх/вниз), но если сразу в две, то начинается...
0
2 / 2 / 0
Регистрация: 16.12.2010
Сообщений: 25
28.04.2014, 20:05 20
выстави форме это значение, дрыганье должно перестать...
это Windows обновляет форму каждый раз при изменении размеров формы..
0
28.04.2014, 20:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2014, 20:05
Помогаю со студенческими работами здесь

Перебор и сравнение позиций компонентов на форме
Рубрика моих вопросов постоянно пополняется да-да :D Всем доброго вечера.Хорошего настроения....

Размещение компонентов на динамически созданной форме
Здравствуйте! 1) Я создал форму динамическим способом TForm *Dialog=new TForm(this); , но...

Создание компонентов на форме внутри кода
Здравствуйте! У меня проблема при создании компонента на форме... Я пишу код, но компонент не...

Смена компонентов на форме при нажатии клавиши
Доброго времени суток. В процессе написания курсовой работы (цель работы - написание игры)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru