Q&A

  • 콤보박스의 리스트 넓이 넓히는 방법은?
질문입니다.



콤보박스를 만들었습니다.



넓이가 50픽셀입니다.



그런데... 들어가는 내용은 300픽셀정도입니다.



그래서 ▼ 모양을 누르면 리스트에 50픽셀정도의 값만 표시됩니다.



이것을 넓힐 수 있는 방법은 없을까요?



50픽셀은 놔두고... 리스트가 300픽셀로 되게 말이죠....



고수님들 답변 부탁드립니다.

1  COMMENTS
  • Profile
    최석기 2001.02.17 21:13
    다음 예제를 참고하시지요...



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    ComboBox1: TComboBox;

    Edit1: TEdit;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    function GetTextWidth(S: String): Integer;

    procedure AdjustDropDownWidth;

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    function TForm1.GetTextWidth(S: String): Integer;

    begin

    // Form의 Canvas 로 나타낼 수 있는 S 문자열의

    // pixel 수를 구한다

    Result := Canvas.TextWidth(S);

    end;



    procedure TForm1.AdjustDropDownWidth;

    var

    i, ItemWidth: Integer;

    begin

    ItemWidth := 0;

    // 최대 pixel수를 구한다

    for i := 0 to ComboBox1.Items.Count - 1 do

    if GetTextWidth(ComboBox1.Items[i]) > ItemWidth then

    ItemWidth := GetTextWidth(ComboBox1.Items[i]) + 8;



    // TComboBox 의 drop-down list 의 width를 변경하는 것은 단지

    // pixel를 파라미터로 하여 CB_SETDROPPEDWIDTH 메시지를

    // TComboBox 보내면 된다

    ComboBox1.Perform(CB_SETDROPPEDWIDTH, ItemWidth, 0);

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    ComboBox1.Items.Add(Edit1.Text);

    AdjustDropDownWidth;

    end;





    end.



    남윤혁 wrote:

    > 질문입니다.

    >

    > 콤보박스를 만들었습니다.

    >

    > 넓이가 50픽셀입니다.

    >

    > 그런데... 들어가는 내용은 300픽셀정도입니다.

    >

    > 그래서 ▼ 모양을 누르면 리스트에 50픽셀정도의 값만 표시됩니다.

    >

    > 이것을 넓힐 수 있는 방법은 없을까요?

    >

    > 50픽셀은 놔두고... 리스트가 300픽셀로 되게 말이죠....

    >

    > 고수님들 답변 부탁드립니다.