Главная страница
    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.035 c
9-1143546968
Yegorchic
2006-03-28 15:56
2007.02.11
Очистить FreeForm


4-1159370729
vidiv
2006-09-27 19:25
2007.02.11
Нужно ли освобождать память (GlobalFree) при копировании в Б/О


15-1168953290
iXT
2007-01-16 16:14
2007.02.11
HP Compaq nx7400


15-1169140576
$Pl@Sh
2007-01-18 20:16
2007.02.11
У кого-нить такое было?


3-1163750618
AlexSt
2006-11-17 11:03
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский