こんにちは。
ComboBoxのItemsが0個の場合に▼をクリックすると、空白枠がドロップダウンされます。
これを表示させない方法があれば教えていただけないでしょうか。
開発環境はDelphi5です。
よろしくお願いいたします。
ComboBoxのDropDownイベントに
if ComboBox1.Items.Count = 0 then
Abort;
とすれば、一応空白枠はでませんが
出そうとした「気配」は残ります(^^;
やってみれば「気配」の意味がわかってもらえると思います。
Delphi6で試しました。
「気配」を消すようにしてみました。
「消した」というのが見えますが(^^;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
procedure ComboBox1DropDown(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
WM_CLOSEUP: cardinal;
public
{ Public declarations }
protected
procedure WndProc(var Msg: TMessage); override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
if ComboBox1.Items.Count = 0 then
begin
PostMessage(Handle, WM_CLOSEUP, 0, 0);
Abort;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
WM_CLOSEUP := RegisterWindowMessage('WM_CLOSEUP_TEST');
end;
procedure TForm1.WndProc(var Msg: TMessage);
begin
if Msg.Msg = WM_CLOSEUP then
ComboBox1.DroppedDown := False
else
inherited WndProc(Msg);
end;
こんな感じでDropDown自体発生させないのはどうでしょうか?
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
OriginProc: TWndMethod;
procedure SubClassProc(var msg: TMessage);
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Items.Add('test');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OriginProc :=ComboBox1.WindowProc;
ComboBox1.WindowProc :=SubClassProc;
end;
procedure TForm1.SubClassProc(var msg: TMessage);
begin
case msg.Msg of
WM_LBUTTONDBLCLK,WM_LBUTTONDOWN:begin
if ComboBox1.Items.Count=0 then
Exit;
end;
end;
OriginProc(msg);
end;
end.
ン
選択できるものがなければコンボボックスをトにするというのはナシ?
ボタンが見た目押せるようになっているのに、押しても何も起こらないというのはそれはそれでユーザが戸惑うかと。
ッッヲサコンボボックスの項目を設定した後で……
テツアョナヲサコスヲサテツアョノョテヲサヲサヲサーサ
スススススススススススススススススススススススススススススススススススススススス
ニコ
トコ イーアエッーアッイーィ月ゥ アキコウクコーク 書込者ノト:ロ 」。。「 ン
モコ
みなさんありがとうございます。
今回はさんのメッセージを捕まえる方法で回避することにしました。
ありがとうございました。
ツイート | ![]() |