掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
再入防止のためにイベントハンドラを別メソッドでラップするには? (ID:14464)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
(* つづき *) { TForm1 } procedure TForm1.FormCreate(Sender: TObject); var i : Integer; w : TEventWrapper; begin _Wrappers := TObjectList.Create(True); for i:=0 to ComponentCount-1 do begin //これもラップするイベントの数だけ必要 w := TEventWrapper.WrapSelectCell(Components[i]); if w <> nil then _Wrappers.Add(w); end; end; procedure TForm1.FormDestroy(Sender: TObject); begin _Wrappers.Free; end; procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Memo1.Lines.Add('KeyDown Start'); StringGrid1.Col := StringGrid1.Col + 1; Memo1.Lines.Add('KeyDown End'); end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); // testさんの関数を使わせていただきます procedure Delay(MS: DWORD); var T: DWORD; begin T := GetTickCount; while (GetTickCount - T < MS) do begin Application.ProcessMessages; Sleep(1); end; end; begin Memo1.Lines.Add('SelectCell Start'); Delay(1000); Memo1.Lines.Add('SelectCell End'); end; ラップした場合としていない場合のMemo1の内容を比べれば 再入が防止されているのがわかります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.