イベントハンドラを削除したら、再度生成されない
- エンバカデロ Code Gear C++ Builder 2009を使用しています。
- TCheckBoxのコンポーネントを追加して、チェックボタンをクリックした場合の処理のCommaCheckBoxClickイベントハンドラが自動的に作成されます。
- しかし、一度このイベントハンドラを削除してしまうと、再度生成することができません。
- ベストアンサー
イベントハンドラを削除したら、再度生成されない
エンバカデロ Code Gear C++ Builder 2009という開発ソフトを使用しています。 TCheckBoxというチェックボタンのコンポ-ネットを追加して、フォーム画面でこのチェックボタンをクリックした場合の処理のCommaCheckBoxClickイベントハンドラが自動的にUnit1.cppというファイルに void //fastcall TTestForm::CommaCheckBoxClick(TObject *Sender) { } というので自動的に作成されるのですが、一度この文字を削除してしまい、再度チェックボタンのアイコンをダブルクリックで同じコードを生成使用としたのですが、 ”メソッド CommaCheckBoxClick の実現部が見つかりません。”というエラーメッセージボックスが表示されるようになってしまい、この文を再度自動的に生成できなくなってしまったのですが、 一度消してしまうと再度作成はできないのでしょうか?
- diy_sunny
- お礼率84% (387/459)
- C・C++・C#
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Unit1.h のほうに、同じ関数のプロトタイプがあるはずです。 まず、こちらを削除します(削除するときに、それっぽい警告が出ます) その後、もう一度生成します。
関連するQ&A
- 動的に作ったリッチエディットのイベント
toshi_ynと申します。 動的に作ったRichEditのサイズを調整できるようにOnResizeRequestイベントを 設定したつもりなのですが、コンパイルでエラーがでます。 いろいろなTipsを見ながら作ったので、どこが間違っているのか 分からず困っております。 こちらの環境はWIn98, Borland C++Builder Ver.4です。 どなたか、助けをお願いします。 [C++ エラー] Calender1.cpp(1092): E2034 Cannot convert 'void (_fastcall * (_closure )(TObject *,TRect &))(TObject *,TRect &)' to 'void (_fastcall * (_closure )(TObject *,const TRect &))(TObject *,const TRect &)'. //--コード-- Unit.h private: // ユーザー宣言 void __fastcall TForm1::Redit_ResizeRequest(TObject *Sender,TRect &Rect); Unit.cpp //----------- Redit[Num] =new TRichEdit(Owner); Redit[Num]->Parent = pnl[Num]; Redit[Num]->BorderStyle=bsNone; Redit[Num]->ScrollBars=ssNone; Redit[Num]->ReadOnly=true; Redit[Num]->Tag=Num; Tag=Num; Redit[Num]->Width=10; Redit[Num]->Height=10; Redit[Num]->PlainText=false; Redit[Num]->Cursor=crArrow; Redit[Num]->OnMouseDown=Redit_MouseDown; Redit[Num]->OnDragOver=Redit_DragOver; Redit[Num]->OnResizeRequest=Redit_ResizeRequest; ←ここでエラー //------------- void __fastcall TForm1::Redit_ResizeRequest(TObject *Sender,TRect &Rect) { Redit[Tag]->BoundsRect = Rect; } //------------
- ベストアンサー
- C・C++・C#
- .NETでのイベントハンドラを自由に操作したい
.NETでコントロールのイベントハンドラを 自由に取得・設定したいのですが そのようなことはできないのでしょうか? 例えばフォーム上に通常のボタンを貼り付けたのちに 自作のボタンをソースコード内で作成し、通常のボタンにセットされているイベントハンドラを自作ボタンのイベントハンドラに追加する、というようなことが したいのですが。。。 どういうふうにやっても、 「イベント 'System.Windows.Forms.Control.Click' は += または -= の左側にのみ表示されます。」 で、できません。 何か分かる方いらっしゃいましたらお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- jQueryで設定したイベントハンドラが消える
jQueryについての質問です。 ちょっと言葉での説明が難しいので、具体的なコードを記載します。 === JavaScript === var clicked = function () { alert(1); }; var jqButton = $("<input type='button' value='test' />"); jqButton.click(clicked); $(function() { $("#showButton").click(function () { $("#test").html(jqButton); }); $("#hideButton").click(function () { $("#test").html(""); }); }); === HTML === <input type="button" id="showButton" value="show" /> <input type="button" id="hideButton" value="hide" /> <div id="test"></div> showボタンをクリックすると、testボタンが表示されます。 hideボタンをクリックすると、testボタンが消えます。 testボタンをクリックすると、alert(1) が実行されます。 という内容なのですが、一度hideしてから再度showして現れたtestボタンをクリックしても、 何も起きません。 仮に、jqButton.click(clicked); の部分を、 jqButton[0].attachEvent("onclick", clicked); などにすると、再表示させたtestボタンも動作します。 これはjQueryのイベントハンドラ設定APIを使った時特有の症状だと思うのですが、 なぜこのような結果になるのでしょうか。 てっきり、$.click()でイベントハンドラを設定すると、 内部でattachEventとかaddEventListnerとかが走るだけだと想像してましたが・・・ また、attachEventなど使わずに、jQueryの機能を使って、 再表示させてtestボタンも動作させるには、どうしたらいいでしょうか。 ご存知の方いましたら、お願い致します。
- ベストアンサー
- JavaScript
- イベントハンドラ処理が終了しているかどうかを確認するには?
イベントハンドラ処理が終了しているかどうかを確認するには? 前回以下のページにて「c#でボタンのアクションが終わった後に再度同じ動作をさせるには?」 という質問をしました所、イベントハンドラ処理が終了していないのでは?という回答を頂きました。 http://okwave.jp/qa/q5833308.html しかし、残念ながら当方初心者の為、 デバッガを利用して 「LoadData()処理」や「ボタンのClickイベントに対応付けしたイベントハンドラ処理」が ・ちゃんと最後まで終了しているか ・無限ループに陥っていないか ・IO入力待ちで止まっていないか というのをどのように確認してよいかすらわかりません。 どうすれば確認できるのでしょうか? 何か参考になるページなどでも結構ですので教えてください。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- VB.net 割り込みの禁止
Borland C-Builder++の内容をVB.net 2010に書き換えて居る者です。 TextBox等の割り込みを一時的に禁止したいのですが、良い方法はありませんでしょうか。 無ければフラグを用いて、フラグが立っている時のみ処理をバイパスさせる事を考えて居ます。 Builder では ComboBox1->OnChange = NULL ; とコーディングする事により、 void __fastcall TForm1::ComboBox1Change(TObject *Sender) { Edit1->Text = ComboBox1->Text; } への割り込みを禁止出来、 ComboBox->OnChange = ComboBox1Change; とコーディングする事により割り込みを再開出来ました。 これを void __fastcall TForm1::ComboBoxChange(TObject *Sender) { ComboBox1->OnChange = NULL ; Edit1->Text = ComboBox1->Text; ComboBox->OnChange = ComboBox1Change; } とコーディングする事により、2重割り込みを防止していました。 VBでこの様にイベント割り込みを一時的に禁止にする方法はありますでしょうか。 宜しくご回答下さい。
- ベストアンサー
- Visual Basic
- クラスのメンバ変数の宣言方法
現在、プロジェクト内に”class PACKAGE TNumberEdit : public TEdit”というクラスを持った”NumberEdit.h”、”NumberEdit.cpp”ファイルを追加して、 Unit1.hファイル内の”class TTestForm : public TForm”このクラス内のpublicにメンバ変数として ”TNumberEdit *NumberEdit1;” このように宣言しました。 そして、 __fastcall TTestForm::TTestForm(TComponent* Owner) : TForm(Owner) { NumberEdit1 = new TNumberEdit(this); } //--------------------------------------------------------------------------- このようなプログラムを書くと次のようなエラーが出てきます。 [ILINK32 エラー] Error: 未解決の外部参照 'TNumberEdit::' が C:\MYWORK\....\CPP_BUILDER_2009\TEST_NUBEREDIT\DEBUG\UNIT1.OBJ から参照されました [ILINK32 エラー] Error: 未解決の外部参照 '__fastcall TNumberEdit::TNumberEdit(Classes::TComponent *)' が C:\MYWORK\.....\CPP_BUILDER_2009\TEST_NUBEREDIT\DEBUG\UNIT1.OBJ から参照されました このようなエラーを回避する方法はありますでしょうか?どうぞ教えて頂きますよう、お願い致します。
- ベストアンサー
- C・C++・C#
- C++Builder6 での複素数計算
C++builder6 で複素数計算が出来なくて困っています、 UNIT1.CPPのヘッダー部分に #include <vcl.h> #pragma hdrstop #include <iostream> #include <complex.h> #include "Unit1.h" //----------------------------- #pragma package(smart_init) #pragma resource "*.dfm" を書いて イベントハンドラ部分に変数の宣言 complex<double> z; として緑色三角形の実行ボタンをクリックすると 「未定義のシンボル complex」 と言うエラーが発生します、 この解決方法を教えて頂ければ幸いです、宜しくお願いします。 (なお C++builder5 では何の問題もなく複素数計算のソフトが出来ていました)
- ベストアンサー
- C・C++・C#
- BCBでフォームの印刷
Borland C++ Builder 5(Pro)を使っています。 TForm上にTImageを乗せ、そこにPolyline等で図形を描いています。 それを印刷したいのですが、TImageにはPrintメソッドがないので、 TFormのPrintメソッドを呼び出していますが、印刷できません。 プリンタのジョブを監視していると、何も印刷せずに「印刷済」になっています。 印刷ボタン、印刷設定ボタンのOnClickは以下のようになっています。 間違い等ありましたらご指摘ください。 // 印刷ボタン void __fastcall TGraphForm::PrintButtonClick(TObject *Sender) { if(PrintDialog->Execute()){ GraphForm->Print(); } } // 印刷設定ボタン void __fastcall TGraphForm::PrtSetupButtonClick(TObject *Sender) { PrinterSetupDialog->Execute(); }
- 締切済み
- C・C++・C#
- Vista(日本語版)に BorlandC++6Builder(英語版
Vista(日本語版)に BorlandC++6Builder(英語版)をインストールし、かんたんなソースファイル(Unit1.cpp)を入力して Run(実行)したら、妙なエラーになりました。 1.Unit1.obj までは生成できるが、そのあとの Project1.obj 以降が生成できない。 2.ソースファイルをデフォルトのフォルダ(C:\Program Files\Borland\CBuilder6\Projects)に入れると、BorlandC++6Builder の Open(ファイルを開く)からはこれらのファイル(Unit1.cpp, Unit1.obj)が見えるのに MyComputer からは見えない。 3.ソースファイルを別のフォルダ(ユーザのドキュメントフォルダ)にセーブすると、もちろん MyComputer からも見えるようになるが、これをコンパイルするとオブジェクトファイル(Unit1.obj)がどこに生成されるのかわからなくなる。 以上が解決できなくて困っています。私現在、海外の学校でプログラミングを教えているのですが、BorlandC++6Builder を使うのは今回が初めてです。学校のXP(ロシア語版)では問題なく動作しているので(私自身がインストールしたBorlandC++6Builder プログラム+ロシア語版パッチで実行すると、Project1.exe ファイルまですべて同じフォルダ内に生成される)、なぜ私の Vista でできないのか理由がよくわかりません。パッチのせいでしょうか。C++ ぐらい教えるのはわけないと思って安請け合いをしてしまいました(スミマセン)。初歩的な質問かもしれませんが、緊急性を要するのでよろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- OutlookExpressを規定のメールハンドラにしたい
OutlookExpressで「ツール」→「オプション」→「全般」のタグにある「規定のメッセージプログラム」で「このアプリケーションは規定のメール ハンドラではありません。」となっています。 OutlookExpressを規定のメールハンドラにしたいので横にある「規定とする」のボタンをクリックして「適用」→「OK」で画面を閉じて、もう一度「規定のメッセージプログラム」を参照してみると「規定とする」にしたにも関わらず「このアプリケーションは規定のメール ハンドラではありません。」のままになっています。 どうしたら規定となるのでしょうか? ちなみにインターネットオプションの「自動的に使用するプログラム」の「電子メール」には何も表示されておらず、選択リストに何も表示されない状態になっております。
- ベストアンサー
- Windows系OS
お礼
回答頂きありがとうございます! 解決方法があって助かりました。