PageControlでページ移動を禁止する方法

解決


吹雪  2013-02-08 07:44:19  No: 43800

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;


  2013-02-08 08:51:03  No: 43801

試してなくて申し訳ないけど、編集開始時、他のページを非表示にするのではだめ?


Nov  2013-02-08 11:02:07  No: 43802

PageControl1 の OnChanging イベントとか。

http://docwiki.embarcadero.com/Libraries/XE3/ja/Vcl.ComCtrls.TCustomTabControl.OnChanging


吹雪  2013-02-09 00:15:56  No: 43803

あ さん、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;


吹雪  2013-02-09 00:18:00  No: 43804

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;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加