请查错!(20分)

  • 主题发起人 主题发起人 Schiesser
  • 开始时间 开始时间
S

Schiesser

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button2Click(Sender: TObject);
begin
(Form1.Components[1] as TControl).Font.Name := 'Arial Black';
end;

end.

难道一定要 as TButton 吗?
Font 属性都是由TControl继承的,不是吗?
 
Tcontrol's Font property is Protected

and

Tbutton's font property is Published.

So ...
 
如果要修改窗口中不同类控件的字体,就没有简单的办法了?
 
TControl 是抽象类,不可见的。
 
thackcontrol=class(TControl)
(Form1.Components[1] as ThackControl).Font.Name := 'Arial Black'
will be ok
 
>>如果要修改窗口中不同类控件的字体,就没有简单的办法了?
我想,你只有同类的控件才会把click事件指向同一个onclick函数.
 
如果你一定要把不同类的控件共享一个OnClick事件,只好这样写代码:
1.首先,你自己必需清楚会有哪些类共享这些代码;
2.
procedure form1.myOnClick(sender:tobject);
begin
if sender is TButton then //如果是TButton类
TButton(sender).font.name:='宋体'
else if sender is TLabel then //如果是TLabel类
TLabel(Sender).font.name:='宋体'
......
end;
 
建议一个吻! :)
 
I mean Case (kiss)! :)
 
Charles: Case恐怕这里用不上吧?
 
cAkk:
>> Charles: Case恐怕这里用不上吧?

You Got it! :)
 
我只是想改字体,并不想共享事件。
 
我的方法不行吗?
 
谢谢cAkk, 我正在试...
 
还试什么? 8(
 
多人接受答案了。
 
后退
顶部