로그인 했을 때는 폼에 배치되어있는 각각의 버튼을 눌렀을 때는 동작하지만
로그오프인 경우에는 버튼을 눌러도 동작하지 않게 만들려구 합니다.
VC에서는 PreTranslateMessage 이거였던가? 이런 기능을 넣을려구 하는데요.델파이에서는 어떻게 사용하나요? 그리고 방법도 좀 가르쳐주세요.어떤함수를 사용해야 할가요?
예)
if 로그인 했으면 then
현재의 폼에서 발생한 메시지르 application에게 전달
지나가던 얼큰입니다.
제 생각에는 델파이나 VC++ 이나 가장 좋은 것은 Update Handler 를 이용하는 것이 아닌가 합니다.
VC++ 에 보면 Update_command_ui_handler라는 것이 있죠.
델파이에 보면 TAction.OnUpdate 이벤트 헨들러가 있습니다.
가령 DB Login/LogOff 의 경우를 생각해 보면,
TForm1 = class(TForm)
...
acDBLogIn :TAction;
acDBLogOff :TAction;
Button1 :TButton; // <- action 항목을 acDBLogIn 선택
Button2 :TButton; // <- action 항목을 acDBLogOff 선택
...
procedure TForm1.acDBLogInExecute(Sender: TObject);
begin
// DB LogIn ....
end;
procedure TForm1.acDBLogInUpdate(Sender: TObject);
begin
if DB-logged-in then acDBLogIn.Enabled := FALSE
else acDBLogIn.Enabled := TRUE;
// 또는 acDBLogIn.Enabled := <DB-login 했는 지 여부를 나타내는 Boolean 변수>;
end;
procedure TForm1.acDBLogOffExecute(Sender: TObject);
begin
// DB log off
end;
procedure TForm1.acDBLogOffUpdate(Sender: TObject);
begin
if DB-logged-in then acDBLogOff.Enabled := TRUE
else acDBLogOff.Enabled := FALSE;
// 또는 acDBLogIn.Enabled := not <DB-login 했는 지 여부를 나타내는 Boolean 변수>;
end;
델파이에서 TAction을 사용하면(델파이 5에서는 TActionList만 지원되고, Delphi 6에서는 TActionManager도 지원됩니다. 하지만 실질적으로 사용되는 것은 TAction으로 동일합니다.) 약간의 오버헤드는 있지만, 그에 상응하여 장점이 훨씬 더 많기 때문에 사용을 권장하고 싶습니다. UI 변경이 자유롭고, 표준 컴포넌트이므로 유지 보수가 편리하며, 헨들러들이 많이 제공되고, 속성이 엑션 단위에서 지정할 수 있으므로 나중에 편한 업그레이드를 할 수 있습니다.
제 생각에는 델파이나 VC++ 이나 가장 좋은 것은 Update Handler 를 이용하는 것이 아닌가 합니다.
VC++ 에 보면 Update_command_ui_handler라는 것이 있죠.
델파이에 보면 TAction.OnUpdate 이벤트 헨들러가 있습니다.
가령 DB Login/LogOff 의 경우를 생각해 보면,
TForm1 = class(TForm)
...
acDBLogIn :TAction;
acDBLogOff :TAction;
Button1 :TButton; // <- action 항목을 acDBLogIn 선택
Button2 :TButton; // <- action 항목을 acDBLogOff 선택
...
procedure TForm1.acDBLogInExecute(Sender: TObject);
begin
// DB LogIn ....
end;
procedure TForm1.acDBLogInUpdate(Sender: TObject);
begin
if DB-logged-in then acDBLogIn.Enabled := FALSE
else acDBLogIn.Enabled := TRUE;
// 또는 acDBLogIn.Enabled := <DB-login 했는 지 여부를 나타내는 Boolean 변수>;
end;
procedure TForm1.acDBLogOffExecute(Sender: TObject);
begin
// DB log off
end;
procedure TForm1.acDBLogOffUpdate(Sender: TObject);
begin
if DB-logged-in then acDBLogOff.Enabled := TRUE
else acDBLogOff.Enabled := FALSE;
// 또는 acDBLogIn.Enabled := not <DB-login 했는 지 여부를 나타내는 Boolean 변수>;
end;
델파이에서 TAction을 사용하면(델파이 5에서는 TActionList만 지원되고, Delphi 6에서는 TActionManager도 지원됩니다. 하지만 실질적으로 사용되는 것은 TAction으로 동일합니다.) 약간의 오버헤드는 있지만, 그에 상응하여 장점이 훨씬 더 많기 때문에 사용을 권장하고 싶습니다. UI 변경이 자유롭고, 표준 컴포넌트이므로 유지 보수가 편리하며, 헨들러들이 많이 제공되고, 속성이 엑션 단위에서 지정할 수 있으므로 나중에 편한 업그레이드를 할 수 있습니다.
이상 얼큰이었습다.