Непослушная Форма

28.06.2012
19
0
#1
unit unit1;

Interface

Uses

windows, messages, sysutils,variants,classes, graphics, controls, forms,dialogs,stdctrls;

Type

Tform1= class (tform)
...
...
....
...
Var

Form1: tform1;
Bitmap:tbitmap;

Implementation

Uses unit2

Procedure tform1.formcreate(sender:tobject)

Begin

Bitmap:=tbitmap.create;

Bitmap.loadfromfile('......');

End;

Procedure tform1.formpaint(sender:tobject)

Begin
Canvas.draw (0,0, bitmap);
End;

Procedure tform1.button1click(sender:tobject)
Var
Newform:tform2;
Begin
Application.createform(tform2, newform);
Newform.show;
End;

Procedure tform1.button2click(sender:tobject)
Begin
Form1.clientheight:=bitmap.height•100;
End;
End.






unit unit2;

Interface

Uses

windows, messages, sysutils,variants,classes, graphics, controls, forms,dialogs,stdctrls;

Type

Tform2= class (tform)
...
...
....
...
Var
Form2: tform2;
Bitmap:tbitmap;

Implementation

Procedure tform2.formcreate(sender:tobject)

Begin
Bitmap:=tbitmap.create;
Bitmap.loadfromfile('......');
Form2.clientheight:=bitmap.height•100;
End;

Procedure tform2.formpaint(sender:tobject)
Begin
Showmessage ('paint worked')
Canvas.draw (0,0, bitmap);
End;

Procedure tform2.button1click(sender:tobject)

Begin
form2.repaint;
End;

End.


[(/quote]

Здравствуйте у меня следующая проблема с кодом дело в том что форма 2 совершенно не похожа на форму 1, если в форме 1 все работает как и должно то в форме 2 не происходит никаких изменений, т.е не происходит увлечения clientheight во время создания формы 2, после нажатия кнопки 1 не происходит repaint.
Суть кода такова после запуска программы открывается форма 1, при нажатие кнопки 2 происходит увелечение clientheight , после нажатие 2 происходит создание формы 2 на которой ничего не работает, что не так? Я текст набирал вручную на смартфоне поэтому извините за ошибки в тексте.
 

sinkopa

Well-Known Member
17.06.2009
344
9
#2
Здравствуйте у меня следующая проблема с кодом...
Перечитайте внимательно свой код...
Вы "рождаете" и показываете переменную (объект) с именем Newform
Код:
Procedure tform1.button1click(sender:tobject)
Var
Newform:tform2;
Begin
Application.createform(tform2, newform);
Newform.show;
End;
а изменяете clientheight у переменной с именем Form2
Код:
Procedure tform2.formcreate(sender:tobject)
Begin
Bitmap:=tbitmap.create;
Bitmap.loadfromfile('......');
Form2.clientheight:=bitmap.height*100;
End;
Для того чтобы изменения происходили у любого рожденного наследника (формы) tform2
надо вот так:
Код:
Procedure tform2.formcreate(sender:tobject)
Begin
Bitmap:=tbitmap.create;
Bitmap.loadfromfile('......');
Self.clientheight:=bitmap.height*100; {<== !!!!!!!!!!!!!!!!!}
End;
Переутомились просто видимо... :lol:
Кстати, а чего это у Вас Newform:tform2 локальная переменная? Вы ей дальше управлять (открывать,закрывать) не собираетесь?
А память освобождать (Newform.Free)?