FireMonkey Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
FireMonkey 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

FireMonkey 팁&트릭
[7] TComboBox VCL 처럼 동작하게 하기
고재철 [feelple] 4188 읽음    2013-05-03 13:57
VCL에서는 TComboBox DropDown 후 다른 부분을 선택하면 마우스 클릭이벤트가 발생하지 않지만 FMX에서는 이벤트가 발생한다.

보통 DropDown 후 아이템을 선택하지 않고 다른 부분을 선택하는 것은 취소의 의미인데 다른게 동작하니 별로 마음에 들지 않는다.

해결 방법은 다음과 같다.

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.fmx}

function IsPopup(Control: IControl): Boolean;
begin
  Result := False;

  if (Control <> nil) then
  begin
    if Control.GetObject is TComboBox then
      Result := TComboBox(Control.GetObject).DroppedDown
    else
      Result := GetPopupCount > 0;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Items.Add('a');
  ComboBox1.Items.Add('a');
 
  ComboBox2.Items.Add('a');
  ComboBox2.Items.Add('a');
end;
 
procedure TForm1.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
  Y: Single);
begin
  if IsPopup(Focused) then
    Focused := nil
  else
    inherited;
end;
고재철 [feelple]   2013-05-03 14:14 X
아.. 블로그에 있는걸 붙여넣었더니.. 말투가. ㅡ_ㅡ;;;
김현수.Humphery [hjfactory]   2013-05-06 11:58 X
말투가 군더더기 없이 괜찮은데요^^

+ -

관련 글 리스트
7 TComboBox VCL 처럼 동작하게 하기 고재철 4188 2013/05/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.