delphi7 自动调整combobox下拉列表宽度
现有一个Form1和一个ComboBox1,列表中有中文和数字,希望能使ComboBox下拉列表自动调整宽度,让它适应列表中最长的条目,希望是完整的程序代码和使用方法,就...
现有一个Form1和一个ComboBox1,列表中有中文和数字,希望能使ComboBox下拉列表自动调整宽度,让它适应列表中最长的条目,希望是完整的程序代码和使用方法,就是希望直接复制上去可以用的那种,本人新手,望多关照。
有点急 ,我自己也有一个代码,但是只能准确算出英文的长度,如果列表中有中文往往算不准确,致使最大宽度比准确的要小,也就是不能完整显示,还有部分显示不出来。
忘了说了,还要保持原来的列表长度不变,只是选择时列表自动调整 展开
有点急 ,我自己也有一个代码,但是只能准确算出英文的长度,如果列表中有中文往往算不准确,致使最大宽度比准确的要小,也就是不能完整显示,还有部分显示不出来。
忘了说了,还要保持原来的列表长度不变,只是选择时列表自动调整 展开
1个回答
展开全部
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var strlen:integer;
i:integer;
begin
strlen:=length(combobox1.Items[0]);
for i:=1 to combobox1.Items.Count-1 do//计算最大长度
begin
if length(combobox1.Items[i])>strlen then
strlen:=length(combobox1.Items[i]);
end;
combobox1.Width:=strlen*9;//控制width属性
end;
end.
我把代码写在窗体的鼠标移动事件中了,你也可以写在其他过程中。主要是控制组合框的width属性,通过列表框中的每个items的长度来改变。倒数第三行的strlen*9是可以改变的,乘以几都可以,自己试试乘几合适。
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var strlen:integer;
i:integer;
begin
strlen:=length(combobox1.Items[0]);
for i:=1 to combobox1.Items.Count-1 do//计算最大长度
begin
if length(combobox1.Items[i])>strlen then
strlen:=length(combobox1.Items[i]);
end;
combobox1.Width:=strlen*9;//控制width属性
end;
end.
我把代码写在窗体的鼠标移动事件中了,你也可以写在其他过程中。主要是控制组合框的width属性,通过列表框中的每个items的长度来改变。倒数第三行的strlen*9是可以改变的,乘以几都可以,自己试试乘几合适。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询