TListBox 的增强问题? 急!(100分)

  • 主题发起人 主题发起人 990
  • 开始时间 开始时间
9

990

Unregistered / Unconfirmed
GUEST, unregistred user!
TListBox 控件中一项内容的高度一次只能为一行,请问如何制作多行的控件???
最好能提供例题,谢谢各位!!!!!!
 
用GRID不就完了?
 
去www.vclxx.com找。
 
试试给TStrings增加TObject。
 
OK
其实这个问题很好办,还是OwnerDraw 来个实例,放一个Listbox,加点ITEMS,将例中两个
事件句柄设置好,RUN!

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;

type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure ListBox1MeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var Afont:tfont;
begin
with (Control as TListBox).Canvas do
begin
FillRect(Rect);
Brush.Style:=bsClear;
Font.Size:=10;
Font.Color:=clRed;
Font.Style:=Font.Style+[fsItalic];
TextOut(Rect.Left, Rect.Top, 'Item:'+ IntToStr(Index+1));
Font.Color:=ListBox1.font.Color;
Font.Style:=Font.Style-[fsItalic];
TextOut(Rect.Left+40, Rect.Top+16, (Control as TListBox).Items[Index]);
end;
end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
begin
Height:=-ListBox1.Font.Height;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
{初始化:设置OWNERDRAW}
ListBox1.Font.Size:=24;
ListBox1.Style:=lbOwnerDrawVariable;
end;

end.

很简单。;-)

 
我是163网,www.vclxx.com 无法连接!?

menxin, 刚刚看到,我这就去试一试!!


另:
我如何连接到 水木清华 ????????? 我是163网!
 
使用Grid算啦
 
menxin 的想法跟我的一样,这几行文字是画出来的,
哈哈。
 
:)
OWNERDRAW,当然都要画
 
多人接受答案了。
 
后退
顶部