Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перемещение компонентов

18K
17 мая 2009 года
Gurt
14 / / 08.01.2007
Возникла проблема при изменении места положения визуального компонента по форме (путем смены координат).
Суть проблемы: при перемещении остаются “хвосты”. Хотелось бы как то сгладить. Но компоненты должны перемещаться мгновенно!

Заранее благодарен за ваши советы !
261
17 мая 2009 года
ahilles
1.5K / / 03.11.2005
про свойство Anchors у компонентов знаешь?
18K
17 мая 2009 года
Gurt
14 / / 08.01.2007
Цитата: ahilles
про свойство Anchors у компонентов знаешь?



Уже прочитал и все равно не вижу ответа на мой вопрос
Можно по шире изложить вашу мысль.

14
18 мая 2009 года
Phodopus
3.3K / / 19.06.2008
Цитата: Gurt

Можно по шире изложить вашу мысль.


А вашу? Какой вы компонент перемещаете и как?

303
18 мая 2009 года
makbeth
1.0K / / 25.11.2004
Цитата: Gurt
Можно по шире изложить вашу мысль.


Приведи код, который у тебя перемещает компоненты.

18K
18 мая 2009 года
Gurt
14 / / 08.01.2007
Цитата: makbeth
Приведи код, который у тебя перемещает компоненты.



Есть 8 полей Memo, которые уже както расположены на форме.
Нужно сменить ихнее место положение!


Код:
procedure TForm1.Button1Click(Sender: TObject);
begin

Memo1.Left :=472;
Memo1.Top :=216;

Memo2.Left :=376;
Memo2.Top :=8;

Memo3.Left :=62;
Memo3.Top :=421;

Memo4.Left :=67;
Memo4.Top :=434;

Memo5.Left :=272;
Memo5.Top :=42;

Memo6.Left :=63;
Memo6.Top :=333;

end;


При смене координат Мемо меняют свою позицию, но визуально видно как они это делают!
Остается ХВОСТ за ними при передвижении (видно как они передвигаются )!
Как сгладить ?

Может можно както по другому переместить???
11
18 мая 2009 года
oxotnik333
2.9K / / 03.08.2007
DoubleBuffered поставь в true
14
18 мая 2009 года
Phodopus
3.3K / / 19.06.2008
Я конечно не знаю что у вас за железо... Но на немолодом P4-1800 их передвижение совершенно незаметно на глаз...
18K
18 мая 2009 года
Gurt
14 / / 08.01.2007
Цитата: oxotnik333
DoubleBuffered поставь в true


Не помогло!
Хотя должно было!

46K
18 мая 2009 года
flame_max
23 / / 09.04.2009
всякие refresh() вы наверное использовали? может тупо пытаться накрыть старую позицию контрола прямоугольником фонового цвета... но это совсем уже по досовски будет :)
11
19 мая 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Gurt
Не помогло!
Хотя должно было!


а кому ставил, форме?

18K
19 мая 2009 года
Gurt
14 / / 08.01.2007
Цитата: oxotnik333
а кому ставил, форме?



Ставил и форме и самим Мемо...не помогло.

303
19 мая 2009 года
makbeth
1.0K / / 25.11.2004
Попробуй использовать напрямую API SetWindowPos + Invalidate.
3.2K
21 мая 2009 года
Гудвин
186 / / 22.12.2007
то есть при их перемещении происходит лишняя перерисовка формы?

Запрет перерисовки:
 
Код:
LockWindowUpdate(Form1.Handle);
... // перемещние компонентов
LockWindowUpdate(0);//снять блок

или
 
Код:
Form1.Perform(WM_SETREDRAW, 0, 0); //запретить
... // перемещние компонентов
Form1.Perform(WM_SETREDRAW, 1, 0); // разрешить
Refresh;

з.ы. если нет объясните подробней суть термина "хвосты"
18K
21 мая 2009 года
Gurt
14 / / 08.01.2007
Цитата: Гудвин
то есть при их перемещении происходит лишняя перерисовка формы?

Запрет перерисовки:
 
Код:
LockWindowUpdate(Form1.Handle);
... // перемещние компонентов
LockWindowUpdate(0);//снять блок

или
 
Код:
Form1.Perform(WM_SETREDRAW, 0, 0); //запретить
... // перемещние компонентов
Form1.Perform(WM_SETREDRAW, 1, 0); // разрешить
Refresh;

з.ы. если нет объясните подробней суть термина "хвосты"

.


Спасибо большое!!! Это именно ТО!

3.2K
22 мая 2009 года
Гудвин
186 / / 22.12.2007
спасибо Phodopus, де-то тут он мне тоже самое писал :D
14
22 мая 2009 года
Phodopus
3.3K / / 19.06.2008
И все же такого "по-дефолту" быть не должно. Подозреваю что у автора где-то какая-то фигня закралась.
18K
22 мая 2009 года
Gurt
14 / / 08.01.2007
Цитата: Phodopus
И все же такого "по-дефолту" быть не должно. Подозреваю что у автора где-то какая-то фигня закралась.



В смысле фигня?

6
22 мая 2009 года
George
4.1K / / 05.01.2007
ну в прямом. какая то написанная руками муть, которая сбила с толку дефолт, поэтому он и отказался работать. :D
14
22 мая 2009 года
Phodopus
3.3K / / 19.06.2008
Мда. Что-то вроде этого :). Какая-то фигня которой мы не знаем ибо не экстрасенсы мы. Да и не хочется ими быть как-то. Говорят они дерутся на канале из трех букв :D
6
22 мая 2009 года
George
4.1K / / 05.01.2007
да. Но навыки есть, потому что многим уже понятно что автор явно где то сломал дефолт. :D
303
22 мая 2009 года
makbeth
1.0K / / 25.11.2004
Мда, Господа! Чей то вы тут разошлись :)
Gurt, ты их не слушай, это они со скуки - тут в последнее время затишье наметилось... Хотя, странно - сессия вроде как на носу =)
276
22 мая 2009 года
Rebbit
1.1K / / 01.08.2005
Цитата: makbeth
Мда, Господа! Чей то вы тут разошлись :)
Gurt, ты их не слушай, это они со скуки - тут в последнее время затишье наметилось... Хотя, странно - сессия вроде как на носу =)


Оффтоп. А Вы капчу видели ? :)

По теме и без гонива. Я конечно давно делфи в глаза не видел но "дефолт" так просто сбить не получется. С какой стати компоненты будут плавно передвигаться если им координаты прямо задать ?? Может сие какаято новая заточка под висту ? (сам понимаю что бред говорю). Но всеже. Что мы имеем.
1. В какомто обработчике чегототам меняем координаты мемо.
2. Мемо начинает двигаться.

тоесть
2.1. мемо запоминает куда ему нужно попасть.
2.2. мемо чуток смещается.
2.3. мемо прорисовывается но при етом его контейнер нет
2.4. если не дошли то к шагу 2.2

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

1.9K
23 мая 2009 года
GreenRiver
451 / / 20.07.2008
У меня такое подозрение, что под "хвостом" топик-стартер понимает немного другое: заметно перемещение группы компонентов - т.е. сменилась координата одного - перерисовка - сменилась координата второго - перерисовка. В результате и получается иллюзия анимации :)

На счет тем винды - довольно интересная идея, чисто теоретически :) В каком-то дитрибутиве линукса видел "желейные" окошки. Так и тут, Мемо по-сути окно, а значит, теоретически, винда может управлять его перемещением/отрисовкой и т.д.. Надеюсь этого никогда не будет, иначе мы заипемся такие глюки ловить :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог