Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
Внизизменение формы Найти похожие ветки
← →
LuLu (2003-08-18 14:04) [0]Как сделать так чтоб при изменении формы все процедуры не пересчитывались?
← →
KSergey (2003-08-18 14:09) [1]А какие процедуры при этом пересчитываются?!
И что значит "изменение формы"?
← →
Семен Сорокин (2003-08-18 14:11) [2]var
NoRecalculateProcedure : boolean;
procedure TForm1.OnChange(Sender: TObject);
begin
NoRecalculateProcedure := true;
end;
← →
Digitman (2003-08-18 14:11) [3]что есть
> изменение формы
?
и какие такие процедуры "пересчитываются" ? Может все же - вызываются ? а не пересчитываются ?
← →
LuLu (2003-08-18 14:16) [4]procedure Tfrmgl.formpaint(Sender: TObject); к примеру..
изменеие: это растягивание при запуске программы...у меня все на рендоме и надо чтоб она реагировала только на кнопки...а у меня все мигает, когда растягивать начинаю...
← →
Семен Сорокин (2003-08-18 14:22) [5]2LuLu ©
значит на время растягивания убирай обработку отрисовки, но неясно зачем это, отрисовка на то и нужна, что бы переривсовать элементы на форме.
ЗЫ. Вопрос поставлен ужасно, первое впечатление - в орешник :)
← →
LuLu (2003-08-18 14:23) [6]В events нет такого обработчика, а в type он указывает на ошибку
перед скобкой...требуя =
← →
LuLu (2003-08-18 14:25) [7]Семен Сорокин © как это? сделать как убрать?
← →
Digitman (2003-08-18 14:25) [8]а что там такого сложного ты творишь в теле этого обработчика ?
← →
Skier (2003-08-18 14:25) [9]>LuLu © (18.08.03 14:23) [6]
Перекрой процедуру окна и извращайся...
← →
Семен Сорокин (2003-08-18 14:28) [10]
type
TForm1 = class(TForm)
...
private
procedure WMSize(var Msg: TMessage); message WM_SIZE;
...
public
..
end;
procedure TForm1.WMSize(var Msg: TMessage);
var
_pnt: TNotifyEvent;
begin
_pnt := OnPaint;
OnPaint := nil;
try
inherited
finally
OnPaint := _pnt
end
end;
← →
LuLu (2003-08-18 14:31) [11]Digitman © ничего просто примитивы рисую..я пока тыкаюсь разбираюсь и учусь..
Семен Сорокин © спасибо! сейчас попробую..
← →
LuLu (2003-08-18 14:39) [12]Семен Сорокин, нет картинка все равно мигает и при этом страшно тормозит..WMSize это что за процедура..опиши пожалуйста а то мне в хелпе переводить не охото...:))
← →
NAlexey (2003-08-18 14:45) [13]>Семен СорокинThe
WM_SIZE message is sent to a window after its size has changed.
Т.е после изменения размеров. А вот
WM_SIZING message is sent to a window that the user is resizing
Собственно непосредственно в сам момент изменения.
Но всеравно берут меня сомнения что с помощью этих сообщений можно решить задачку.
← →
NAlexey (2003-08-18 15:13) [14]>LuLu
Если у тебя все еще "картинка все равно мигает и при этом страшно тормозит.." Поставь Form1.DoubleBuffered := True; В обработчике создания формы. Посмотри, изменит это что?
← →
Семен Сорокин (2003-08-18 15:20) [15]2 NAlexey
согласен
2 LuLu
тогда просто сохраняй ширину и высоту формы в переменные в конце отрисовки, если они не равны - то не делай отрисовку.
TForm1 = class(TForm);
procedure OnCreate(Sender: TObject);
procedure OnPaint(Sender: TObject);
private
FOldWidth, FOldHeight: integer;
procedure Paint;
public
end;
procedure TForm1.OnCreate(Sender: TObject);
begin
FOldWidth := -1;
FOldHeight:= -1;
Paint
end;
procedure TForm1.OnPaint(Sender: TObject);
begin
if (Width = FOldWidth) and (Height = FOldHeight) then
Paint
end;
procedure Tform1.Paint;
begin
....
FOldWidth := Width;
FOldHeight := Height
end;
:))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c