Q&A

  • 초보질문 사이즈 문제
콤보박스 상하 사이즈를 줄이고 싶은데...

마우스나 키보드로 해도 어느시점에서 더 이상 안되요...

방법이 뭔지 가르쳐 주세요

2  COMMENTS
  • Profile
    구창민 2000.10.23 20:06
    궁금맨 wrote:

    > 콤보박스 상하 사이즈를 줄이고 싶은데...

    > 마우스나 키보드로 해도 어느시점에서 더 이상 안되요...

    > 방법이 뭔지 가르쳐 주세요





    궁금맨님 안녕하세요?



    말씀하신건 ComboBox는 Height 조절이 안됩답니다.



    ComboBox의 조상을 보면 TWinControl-TCustomComboBox-TComboBox



    요렇게 되죠.



    그럼 TCustomComboBox의 WndProc를 보면 알수있겠지요.



    procedure TCustomComboBox.WndProc(var Message: TMessage);

    begin

    {for auto drag mode, let listbox handle itself, instead of TControl}

    if not (csDesigning in ComponentState) and

    ((Message.Msg = WM_LBUTTONDOWN) or (Message.Msg = WM_LBUTTONDBLCLK)) and

    not Dragging then

    begin

    if DragMode = dmAutomatic then

    begin

    if IsControlMouseMsg(TWMMouse(Message)) then

    Exit;

    ControlState := ControlState + [csLButtonDown];

    Dispatch(Message); {overrides TControl's BeginDrag}

    Exit;

    end;

    end;

    with Message do

    case Msg of

    WM_SIZE:

    { Prevent TWinControl from handling WM_SIZE when adjusting drop-down

    listbox size. }

    if FDroppingDown then

    begin

    DefaultHandler(Message);

    Exit;

    end;

    WM_CTLCOLORMSGBOX..WM_CTLCOLORSTATIC:

    begin

    SetTextColor(WParam, ColorToRGB(Font.Color));

    SetBkColor(WParam, ColorToRGB(Brush.Color));

    Result := Brush.Handle;

    Exit;

    end;

    CN_CTLCOLORMSGBOX..CN_CTLCOLORSTATIC:

    if not NewStyleControls and (Style < csDropDownList) then

    begin

    Result := Parent.Brush.Handle;

    Exit;

    end;

    WM_CHAR:

    begin

    if DoKeyPress(TWMKey(Message)) then Exit;

    if ((TWMKey(Message).CharCode = VK_RETURN) or

    (TWMKey(Message).CharCode = VK_ESCAPE)) and DroppedDown then

    begin

    DroppedDown := False;

    Exit;

    end;

    end;

    end;

    inherited WndProc(Message);

    end;





    질문을 쓰실때 전자우편란에 메일주소를 정확히 기입하시면



    답변을 메일로 받아보실 수 있답니다.



    여기 게시판 CrazyWWWBoard의 기능이죠.

  • Profile
    궁금맨 2000.10.23 20:18
    구창민씨..

    전 초보거든요..

    쉽게 할수 있게 좀 설명 해주시면 안될까요?

    부탁드립니다





    구창민 wrote:

    > 궁금맨 wrote:

    > > 콤보박스 상하 사이즈를 줄이고 싶은데...

    > > 마우스나 키보드로 해도 어느시점에서 더 이상 안되요...

    > > 방법이 뭔지 가르쳐 주세요

    >

    >

    > 궁금맨님 안녕하세요?

    >

    > 말씀하신건 ComboBox는 Height 조절이 안됩답니다.

    >

    > ComboBox의 조상을 보면 TWinControl-TCustomComboBox-TComboBox

    >

    > 요렇게 되죠.

    >

    > 그럼 TCustomComboBox의 WndProc를 보면 알수있겠지요.

    >

    > procedure TCustomComboBox.WndProc(var Message: TMessage);

    > begin

    > {for auto drag mode, let listbox handle itself, instead of TControl}

    > if not (csDesigning in ComponentState) and

    > ((Message.Msg = WM_LBUTTONDOWN) or (Message.Msg = WM_LBUTTONDBLCLK)) and

    > not Dragging then

    > begin

    > if DragMode = dmAutomatic then

    > begin

    > if IsControlMouseMsg(TWMMouse(Message)) then

    > Exit;

    > ControlState := ControlState + [csLButtonDown];

    > Dispatch(Message); {overrides TControl's BeginDrag}

    > Exit;

    > end;

    > end;

    > with Message do

    > case Msg of

    > WM_SIZE:

    > { Prevent TWinControl from handling WM_SIZE when adjusting drop-down

    > listbox size. }

    > if FDroppingDown then

    > begin

    > DefaultHandler(Message);

    > Exit;

    > end;

    > WM_CTLCOLORMSGBOX..WM_CTLCOLORSTATIC:

    > begin

    > SetTextColor(WParam, ColorToRGB(Font.Color));

    > SetBkColor(WParam, ColorToRGB(Brush.Color));

    > Result := Brush.Handle;

    > Exit;

    > end;

    > CN_CTLCOLORMSGBOX..CN_CTLCOLORSTATIC:

    > if not NewStyleControls and (Style < csDropDownList) then

    > begin

    > Result := Parent.Brush.Handle;

    > Exit;

    > end;

    > WM_CHAR:

    > begin

    > if DoKeyPress(TWMKey(Message)) then Exit;

    > if ((TWMKey(Message).CharCode = VK_RETURN) or

    > (TWMKey(Message).CharCode = VK_ESCAPE)) and DroppedDown then

    > begin

    > DroppedDown := False;

    > Exit;

    > end;

    > end;

    > end;

    > inherited WndProc(Message);

    > end;

    >

    >

    > 질문을 쓰실때 전자우편란에 메일주소를 정확히 기입하시면

    >

    > 답변을 메일로 받아보실 수 있답니다.

    >

    > 여기 게시판 CrazyWWWBoard의 기능이죠.