Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

"сгладить" Resize   Найти похожие ветки 

 
i-am-vladko ©   (2006-12-07 17:20) [0]

Доброго здоровья.
Есть форма с множеством компонентов на ней (где-то 400), с некими. Функция по событию FormResize имеет довольно сложный вид : компоненты переносятся на разные TabSheet`s, меняют размеры, Align и т.д. При этом получается эффект "мигания" этих самых компонентов. Как можно сгладить/убрать этот ненужный эффект? Спасибо за ответы


 
i-am-vladko ©   (2006-12-07 17:22) [1]


> Есть форма с множеством компонентов на ней (где-то 400),
>  с некими

сорри - не дописал )) но я думаю, смысл ясен


 
Jeer ©   (2006-12-07 17:43) [2]


> i-am-vladko ©   (07.12.06 17:20)
> Есть форма с множеством компонентов на ней (где-то 400)


А чего так мало-то ?
Ты уж грузи по полной - где-то на уровне десятков тысяч, тогда Resize сделаешь утром - вечером увидишь результат.


 
i-am-vladko ©   (2006-12-07 17:48) [3]


> Resize сделаешь утром - вечером увидишь результат

не хочу промежуточные результаты видеть )


 
i-am-vladko ©   (2006-12-07 17:48) [4]


> Resize сделаешь утром - вечером увидишь результат

не хочу промежуточные результаты видеть )


 
Jeer ©   (2006-12-07 17:51) [5]

Ну, кнопку я мониторе я показывать не буду - сам найдешь.


 
i-am-vladko ©   (2006-12-07 17:59) [6]

да... пасибки, Jeer...


 
Jeer ©   (2006-12-07 18:06) [7]


> i-am-vladko ©   (07.12.06 17:59) [6]


Да не за что - что сделал, то и получил.
Вот тут и выяснится, что работаешь на i386 + 1Mb video Trident


 
lookin ©   (2006-12-10 00:19) [8]

> [0] i-am-vladko ©   (07.12.06 17:20)


А почему на Resize? Что такое должно быть в форме, чтобы на Resize ПЕРЕНОСИТЬ компоненты на разные Tabsheet?


 
ors_archangel ©   (2006-12-10 11:34) [9]

В VCL реализован удобный механизм Anchors+Align (кстати, почему у Edit нет Align"а?), но перерисовка даже и с малым # компонентов (<<400), мне кажется, давольно дёрганая (Celeron2GHz + 256 MB video Intel845GL Extreme), что ли просто каждый контрол по несколько раз ресайзится даже(??)… а нет, они просто пересоздаются :)  впечатление - такое!.. Вобщем, дело не в cpf (components per form), а в принципе - они ж очень медленно ресайзятся, наверно, нужно как-то сразу всё "понять" и один раз изменить все размеры, а в VCL, как зреют мои очи, всё сделано итеративно, от parentов к childreнам(иль я не прав, киньте ж камень!!!)…
Вот код уменьшает "эффект", но это не решение проблемы, а просто отмазка с помощью таймера:


var
 doresize: boolean = true; // resize in next WM_SIZE request
 resizeMsg: TWMSize; // save WM_SIZE message
 tmr: int; // timer handle (WinAPI)

{ Delayed callback for WM_SIZE messages processing }
procedure DelayedResize(wnd,msg,id,time: dword); stdcall;
begin
 doresize := true; // do it!
 KillTimer(0, tmr); // kill self
 tmr := 0; // and zero handle
 MainForm.WmSize(resizeMsg); // resize
end;

procedure TMainForm.WmSize(var msg: TWMSize);
begin
 if doresize then begin
   doresize := false;
   inherited; // actual work
 end else begin
   resizeMsg := msg; // save for future
   if tmr = 0 then tmr := SetTimer(0, 1, 66, @DelayedResize); // set up delayed callback to be launched after time interval (66 ms used)
 end;
end;


 
GrayFace ©   (2006-12-11 10:52) [10]

У меня тоже есть такая проблема, когда компоненты лежат на TTabSheet.


 
i-am-vladko ©   (2006-12-14 17:37) [11]


> ors_archangel ©   (10.12.06 11:34) [9]

Огромное спасибо за помощь, Руслан!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
3-1163764708
DelphiLexx
2006-11-17 14:58
2007.02.11
Как определить измененные записи, FIBDataSet и CacheUpdate


4-1159525169
RoadStar
2006-09-29 14:19
2007.02.11
Получение данных об оперативной памяти


2-1169811109
Extar
2007-01-26 14:31
2007.02.11
Перемещение TABом по SpeddButtons - Как?


2-1169838260
Батя
2007-01-26 22:04
2007.02.11
Фон рабочего стола


15-1169034260
Зм1й
2007-01-17 14:44
2007.02.11
Длительность арифметических операций





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский