-
Доброе время суток! Вопрос такой форма выдвигается, но обратно задвигается скачками. Как поправить? Вот код:
program Project1;
uses
windows,messages,
kol;
type TOnEvent = procedure( Sender: PObj )of object;
var
form,form2,Btn1,Btn2:PControl;
procedure form2Show( Dummy : Pointer; Sender: PControl );
begin
Animatewindow(form2.Handle,1000,Aw_hor_Positive or AW_SLIDE or AW_ACTIVATE)
end;
procedure clickbtn1(Dummy:Pointer;Sender:PControl; var mouse:TMouseEventData);
begin
if not Assigned( Form2 ) then
NewForm( Applet ,'Form2');
Form2.Show;
end;
procedure Close_form2(Dummy:Pointer;Sender: PControl; var Accept: Boolean);
begin
Accept := FALSE;
Animatewindow(form2.Handle,1000,AW_HOR_NEGATIVE or AW_SLIDE or AW_HIDE);
Form2.Hide;
btn1.Focused:=true;
end;
procedure clickbtn2(Dummy:Pointer;Sender:PControl; var mouse:TMouseEventData);
begin
sendmessage(form2.Handle,wm_close,0,0)
end;
Begin
form:=NewForm(Applet,'form').SetSize(611,412).setposition(336,107);
Btn1 := NewButton( form, 'Btn1' ).SetPosition( 32,112 ).SetSize( 121, 0 );
Btn2 := NewButton( form, 'Btn2' ).SetPosition( 32,160 ).SetSize( 121, 0 );
form2:=NewForm(Applet,'form2').SetSize(323,218).setposition(509,127);
form2.Color:= 16744448;
Btn1.OnClick:=TonEvent(MakeMethod(nil,@clickbtn1));
Btn2.OnClick:=TonEvent(MakeMethod(nil,@clickbtn2));
Form2.onShow := TOnEvent(MakeMethod(nil,@form2Show));
form2.OnClose:=TOnEventAccept(MakeMethod(nil,@Close_form2));
Run(form);
end.
-
//область для процедур function WINDOWPOS(Dummy:pointer;var Msg: tagMSG; var Rslt: Integer): Boolean; begin Result := FALSE; if Msg.message = WM_PAINT then begin Rslt := 0; Result := TRUE; end else if Msg.message = WM_WINDOWPOSCHANGED or WM_WINDOWPOSCHANGING then begin Rslt := 1; Result := TRUE; Form.Invalidate; form.Update; end; end;
Form2.OnMessage :=TonMessage(MakeMethod(nil,@WINDOWPOS));
только кнопка не работает:)
-
Параметров много наверное.
-
procedure clickbtn2(Dummy:Pointer;Sender:PControl; var mouse:TMouseEventData); begin sendmessage(form2.Handle,wm_close,0,0) end;
эта кнопка не работает:)
-
Нет Aplet'а.
-
Applet := NewApplet('form');
form:=NewForm(Applet,'form').SetSize(611,412).setposition(336,107);
... Run(Applet); Тогда форма появляется без нажатия на кнопку:) и при нажатии на кнопку btn2 не плавно скользит влево, а просто закрывается. Хотя обработчик form2.OnClose есть, он его не видит вовсе. И вот такой вопрос форма выдвигается и должна передать фокус кнопке, но это происходит лишь после события form2.OnClose. Ожидалось другое. Форма выдвигается.Что-то делаем на ней. Теряет форкус после определенных действии. Нажимаем вторую кнопку и задвигаем форму.
-
Вы же ее сами создали видимой до нажатия на кнопку, почему она не должна показываться.
У меня под вин7 закрывается плавно и открывается потом тоже плавно, Close_form2 отрабатывает. Правда чтобы увидеть эту плавность надо раздвинуть окна на экране, чтобы первая форма не заслоняла вторую.
-
Понял:) form2.Visible:=false;
form2.StayOnTop:=true; Спасибо:)
|