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
サブルーチンは試しましたか?
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;
通りすがりさん早速ありがとうございます。
教えて頂いた方法は理解できましたのでやります。ありがとうございます。
ただ無謀なことなのかもしれませんが、新米なのでお許し下さい。
OnDropDownにもOnDblClickにも
procedure ABC(); のように一つの手続きを作成して両方に同じ手続きを記述して、その中にA処理B処理C処理を包含して処理を分けることができるでしょうか。
そうするとドロップダウンをクリックしたのか文字領域をダブルクリックしたのか中で判別する必要があるので、それが可能なのでしょうか。
馬鹿げた非常識なことを質問しているのかもしれませんがお許し下さい。
よろしくおねがいします。
> OnDropDownにもOnDblClickにも
> procedure ABC(); のように一つの手続きを作成して両方に同じ手続きを記述して、
> その中にA処理B処理C処理を包含して処理を分けることができるでしょうか。
これは、たとえできたとしても、やらない方がよいと思いますね。
ソースコードの可読性が悪くなる。
条件分岐が増えてバグの原因になりやすい。
通りすがりさん、ありがとうございます。
やはり馬鹿げたことになるわけですね。勉強になりました。
ありがとうございました。
ツイート | ![]() |