关于改变对象属性的问题?

haozi 2002-03-22 09:33:48
procedure TForm1.MarkColumnClick(Sender: TObject);
var
Column: TColumn;
begin
MarkColumn.Checked := not(MarkColumn.Checked);
Column := DBGrid1.Columns.Items[DBGrid1.SelectedIndex];
请问这里 Column 对象获得的是原值的拷贝还是原值的地址。
为什么在下面的语句中可以直接的改变原对象的属性。
请高手解答。
我从C++转过来的,不能理解。
if (MarkColumn.Checked) then begin
Column.Font.Color := NEWCOLOR;
Column.Font.Style := [fsBold];
FTaggedColumns.Add(Column);
end else begin
Column.Font.Color := FDefaultColor;
Column.Font.Style := [];
FTaggedColumns.Remove(Column);
end;
HandleCaption;
end;
...全文
69 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
haozi 2002-03-22
  • 打赏
  • 举报
回复
一定给分
haozi 2002-03-22
  • 打赏
  • 举报
回复
我记得在C++里,对象给对象赋值是赋值的拷贝呀,(对象指针除外)DELPHI里不一样吗?

对象类型怎么讲呀, 请教!
eightlin 2002-03-22
  • 打赏
  • 举报
回复
是原值的地址,因为Column是TColumn类型,TColumn是对象类型。
taber 2002-03-22
  • 打赏
  • 举报
回复
只能说Column是一个对象类型的变量,在给这个变量赋值后,当然可以操作它代表的对象啦。 delphi里对象也是一种数据类型,类似record,可以将这种类型与C中的struct类比。你使用struct不就是这样用的吗?
hch_d 2002-03-22
  • 打赏
  • 举报
回复
同意楼上的意见!!!
eulb 2002-03-22
  • 打赏
  • 举报
回复
应该是地址,
你看Column并没有被创建,所以它获得的应该是对象的地址

我想这与拷贝函数好像不大一样,而是类似于传地址,而不是传值

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧