Resize
6 отговора
186 прегледа
Resize
Имам форма, чието съдържание се изчертава сравнително бавно. При Maximize/Restore няма проблеми, но при resize с мишката става грозно. Първо, реших да сложа таймер, който напр. 1 сек. след OnResize да пречертава формата, но не ме кефи. Та на въпроса - как мога да разбера кога процесът на Resize е завършил (потребителя е отпуснал бутона на мишката)? С OnMouseDown/Up не става (трябва курсора да е във формата). Мисълта ми е, че при OnResize ще сетвам някакъв флаг, който при отпускане на мишката ще се проверява и ако размера е бил променен, формата ще се пречертава. Но не знам как да прехвана мишката в процес на resize на формата. Някакви идеи?
Re: Resize
Защо не забраниш Resize-а на формата ако е толкова трудоемко прерисуването? 
Не всичко което виси е Windows, но той най-често го прави
Не всичко което виси е Windows, но той най-често го прави
Re: Resize
hmm, az dokolkoto znam kogato ima nujda ot preresuvane Windowsa pra6ta wm_paint /i o6te edno za backgorunda no tova ti var6i rabota/ na prozoreca.
Taka 4e prosto si sloji koda za resuvane v OnPaint na formata. Ako po-pro4ete6 malko 6te razbere6 4e daje nqma smisal da izrisuva6 cqlata forma pove4eto pati.
Pogledni Form1.Canvas.ClipRectangle //ili ne6to takova :)
Taka 4e prosto si sloji koda za resuvane v OnPaint na formata. Ako po-pro4ete6 malko 6te razbere6 4e daje nqma smisal da izrisuva6 cqlata forma pove4eto pati.
Pogledni Form1.Canvas.ClipRectangle //ili ne6to takova :)
Re: Resize
Първото решение е от типа "има програма - има проблем; няма програма - няма проблем" и не ме устройва.
А за второрто - въпроса е принципен. В случая формата е пълна с панели, скролбоксове и много други контроли и не се извършва рисуване в прекия смисъл. Така, че и то не помага ...
А за второрто - въпроса е принципен. В случая формата е пълна с панели, скролбоксове и много други контроли и не се извършва рисуване в прекия смисъл. Така, че и то не помага ...
Re: Resize
1.Не оставяй Windows да ти ресайзва компонентите (като ползваш Align...) ами ръчно в OnResize ще трябва да пишеш за всеки поотделно така ще стане с 60% по-бързо.
2.Използвай в TForm1.OnCreate - Form1.doublebuffered:=true;
2.Използвай в TForm1.OnCreate - Form1.doublebuffered:=true;
Re: Resize
Ами приложението, върху което работя, като му се рисайзва формата се ресайзва в уиндоус 95 стайл (със ректангъл, принципно не виждаш съдържанието на този ректангъл, ако се сещаш; само че тази част не съм я писал аз и идея нямам как става, ще го погледна като се прибера, ако такова нещо те устройва де, а може и да не съм разбрал правилно.)
Re: Resize
twa ne se li komandwa ot nastrojkite na windowsa? i loshoto e che toj dori po wreme na resize prashta wm_paint maj
------------------------------
I got a COMPILER, and I'm not afraid to use it!
------------------------------
I got a COMPILER, and I'm not afraid to use it!