すみません!!フォーム右上のXボタン(close)を淡色表示ではなく、押しても
何もおこらないようにしたいのですが???いろんなサイトを見て淡色表示に
する方法はわかったんですが・・・
type
TForm1 = class(TForm)
private
{ Private 宣言 }
public
procedure WMSysCommand(var Msg:TWMSysCommand);message WM_SYSCOMMAND;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMSysCommand(var Msg:TWMSysCommand);
begin
case Msg.CmdType and $FFF0 of
SC_CLOSE: ; // なにもしない
else
inherited;
end;
end;
ありがとうございます。りおりおさん!!
上記以外のやり方でもっと簡単な方法はないのですか?
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
end;
>procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: >Boolean);
>begin
> CanClose := False;
>end;
ちょっと捕捉.このコードは確かに閉じなくなりますが,条件によっては
閉じる様にしておかないと,永久に閉じなくなりますので,利用にあたっ
ては注意が必要です.
>上記以外のやり方でもっと簡単な方法はないのですか?
結構簡単だとは思いますが... たった数行です.
>上記以外のやり方でもっと簡単な方法はないのですか?
フラグを利用するとか?
ありがとうございます。解決することが出来ました!!
>条件によっては閉じる様にしておかないと,永久に閉じなくなりますので
>利用にあたっては注意が必要です.
コマンドボタンを押した場合は終了させたい時はどうすればよいのですか???
Ctrl+Alt+Delete 以外で強制終了させたいなら、
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;
いきなりで質問なんですが
Application.Terminate;ではなく
フォーム名.Close;
で終了させるにはどうしたらよいのですか?
>コマンドボタンを押した場合は終了させたい時はどうすればよいのですか???
たまたま
CanClose := False;
というコードがでてきたので,先のレスを付けたのですが,すなおに,
りおりおさんのコードを使用した方が無難です.
もし,CanClose:=Falseのコードを使うとしても,×ボタンをクリックした
ことを検出して,フラグを使用して条件分岐をする必要があります.そこ
でまた,りおりおさんと同様のコードが必要になってしまいます.この時,
このフラグは,グローバルな変数としなければいけません.
先のりおりおさんのコードであれば,そのようなことが必要ありません.
CanClose := False;と記述して、それをすり抜けることが出来るような
ものはないのですか???
>それをすり抜けることが出来るような
意味がよくわかりませんが...
元々CanClose:=Falseは閉じないために使用すのですから.既に述べた
ように,どうしてもCanCloseを使用したいのであれば,りおりおさん
のコードを修正して,フラグを使用し,そのフラグをFormCloseQueryの
CanCloseの判断に使用すればいいでしょう.
目的が×ボタンでのことですからわざわざそんなことをする必要はないと
思いますが... どうしてもなら...
参考までに,CanCloseは例えば以下の様な使い方が考えられます.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
Flag: Integer;
begin
Flag:=Application.MessageBox('本当に終了していいですか',
'アプリの終了',
MB_OKCANCEL);
if Flag=IDCANCEL then CanClose:=False;
end;
ツイート | ![]() |