PageControlのあるページ上に、TDBEdit等のDataControlがあり、データの変更途中(データのStateがdsInsertまたは、dsEditの間)は、別のページに移動できないようにしたいですがどうしたらいいでしょうか。
PageControl1.Enable := False では、DBEditの編集も不可能になってしまい不都合ですので他の方法でお願いします。
//例
procedure Form1.DB1StateChange(Sender: TObject);
begin
if (DB1.State = dsInsert) or (DB1.State = dsEdit)
then
begin
// ここで、PageControl1のこのページから移動できないようにしたい
end
else
begin
// ここで、PageControl1のこのページから移動を可能にしたい。
end;
end;
試してなくて申し訳ないけど、編集開始時、他のページを非表示にするのではだめ?
PageControl1 の OnChanging イベントとか。
http://docwiki.embarcadero.com/Libraries/XE3/ja/Vcl.ComCtrls.TCustomTabControl.OnChanging
あ さん、Nov さん ありがとうございました。
Novさんの OnChanging イベント で解決しました。
//例
procedure Form1.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
if (DB1.State = dsInsert) or (DB1.State = dsEdit)
then AllowChange := False
else AllowChange := True;
end;
end;
procedure Form1.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
if (DB1.State = dsInsert) or (DB1.State = dsEdit)
then AllowChange := False
else AllowChange := True;
//end; ← 不要
end;
ツイート | ![]() |