请帮忙看看这个程序。谢了(0分)

A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
unit main;

interface

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

type
TForm1 = class(TForm)
ListView1: TListView;
ComboBox1: TComboBox;
ImageList1: TImageList;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
ListItem: TListItem;
NewColumn: TListColumn;
begin
// Create a ListView item for each image in the ImageList
with ListView1 do
begin
SmallImages := ImageList1;
LargeImages := ImageList1;
for I := 0 to ImageList1.Count - 1 do
begin
ListItem := Items.Add;
Listitem.Caption := 'Image' + IntToStr(I);

ListItem.ImageIndex := I;
end;
// Create two columns to show during viewing as vsReport
NewColumn := Columns.Add;
NewColumn.Caption := 'Column 1';
NewColumn := Columns.Add;
NewColumn.Caption := 'Column 2';
// Add View styles and constants to the Combo Box
[blue]ComboBox1.Items.AddObject('vsIcon', TObject(vsIcon));
ComboBox1.Items.AddObject('vsList', TObject(vsList));
ComboBox1.Items.AddObject('vsReport', TObject(vsReport));

ComboBox1.Items.AddObject('vsSmallIcon', TObject(vsSmallIcon));[/blue]
// Display first item in the Combo Box
ComboBox1.ItemIndex := 0;
end;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
with ComboBox1 do
[red]ListView1.ViewStyle := TViewStyle(Items.Objects[ItemIndex]);[/red]
end;
end.
1、请问为什么蓝色部分要用Addobject()这个方法?而不用Add()这个方法呢?
TObject(vsReport)是表什么呢?
2、红色部分ListView1.ViewStyle为什么不能直接等于vsIson等其他的值呢?就像
ListView1.ViewStyle:=combobox1.Items.Strings[combobox1.itemindex]这样而要用
TViewStyle(Items.Objects[ItemIndex])这种方式呢?Items.Objects[ItemIndex]这
又表示什么呢?强制转换吗?
 
1.
ADD方法只能加入字符串。而治理要加入的可以不是字符串。
TObject(vsReport)是表显示类型转换(也叫强制类型转换)。
把vsReport牵制看成是TObject。
2.TViewStyle(Items.Objects[ItemIndex]);
TViewStyle(XXX)是强制转换。
combobox1.Items.Strings中存放的是字符串。
Items.Objects中存放的是对象或其他数据的指针。
TViewStyle(Items.Objects[ItemIndex]);就是说把Items的对象集中序号是ItemIndex的
牵制转换成TViewStyle类型的。

 
1、为什么要用Tobject将vsReport进行类型强制转换?如果用Tcomponent可以吗?或其它
的类?
2、我怎么才知道有TViewStyle这个类?这里是看了帮助才知道的。
谢谢!
 
AddObject只支持TObject类型,所以只能用TObject强制转换。
TViewStyle是枚举类型,不是类;
 
为什么不用[red]ListView1.ViewStyle := TViewStyle(Items.stringss[ItemIndex]);[/red]
 
请看你的代码蓝色部分。
说老实话,我还从未这样用过哩。
 
接受答案了.
 
顶部