ComboBoxのイベントハンドラの内容を兼用するには?

解決


武田  2005-04-03 11:15:20  No: 14100

Win XP  Delphi 6 personalです。
ComboBoxのOnDropDownイベントで下記のような処理をするようにしています。

procedure TForm1.ComboBox3DropDown(Sender: TObject);
begin
{A処理}
{B処理}      //下の{B処理}と同じ
{C処理}
end;

さらに、同じComboBoxの  OnDblClickイベントで下記のような処理をしています。

procedure TForm1.ComboBox3DblClick(Sender: TObject);
begin
{B処理}          //上の{B処理}と同じ
end;

{B処理}は両方とも同じ処理です。一部をダブって書いているわけですが
なんとか一つにまとめる方法があるのでしょうか?
たとえば概念としては条件分岐して
if DropDowm then{A処理}
{B処理}              //DropDown  も  だプルクリックも処理する
if DropDown then {C処理}
ありましたらよろしくお願いします。m(__)m


通りすがり  2005-04-03 11:40:29  No: 14101

サブルーチンは試しましたか?

type
  TForm1 = class(TForm)
    ・・・
    procedure ComboBox3DropDown(Sender: TObject);
    procedure ComboBox3DblClick(Sender: TObject);
  private
    { Private 宣言 }
    procedure ProcB;
  public
    { Public 宣言 }
  end;

procedure TForm1.ProcB;
begin
  { B処理 }
end;

procedure TForm1.ComboBox3DropDown(Sender: TObject);
begin
  {A処理}
  ProcB;
  {C処理}
end;

procedure TForm1.ComboBox3DblClick(Sender: TObject);
begin
  ProcB;
end;


武田  2005-04-03 23:19:11  No: 14102

通りすがりさん早速ありがとうございます。
教えて頂いた方法は理解できましたのでやります。ありがとうございます。
ただ無謀なことなのかもしれませんが、新米なのでお許し下さい。
OnDropDownにもOnDblClickにも  
procedure ABC(); のように一つの手続きを作成して両方に同じ手続きを記述して、その中にA処理B処理C処理を包含して処理を分けることができるでしょうか。
そうするとドロップダウンをクリックしたのか文字領域をダブルクリックしたのか中で判別する必要があるので、それが可能なのでしょうか。
馬鹿げた非常識なことを質問しているのかもしれませんがお許し下さい。
よろしくおねがいします。


通りすがり  2005-04-03 23:49:56  No: 14103

> OnDropDownにもOnDblClickにも
> procedure ABC(); のように一つの手続きを作成して両方に同じ手続きを記述して、
> その中にA処理B処理C処理を包含して処理を分けることができるでしょうか。
これは、たとえできたとしても、やらない方がよいと思いますね。
  ソースコードの可読性が悪くなる。
  条件分岐が増えてバグの原因になりやすい。


武田  2005-04-04 02:32:09  No: 14104

通りすがりさん、ありがとうございます。
やはり馬鹿げたことになるわけですね。勉強になりました。
ありがとうございました。


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

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






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