最基本的:
if sender is Tedit then Tedit(sender).color:=??? else
if sender is Tcombobox then tcombobox(sender).color:=??? else
;
以后有什么加什么
也有不去群举的方法那就复杂多了。
if sender is Tedit then Tedit(sender).color:=??? else
if sender is Tcombobox then tcombobox(sender).color:=??? else
;
以后有什么加什么
也有不去群举的方法那就复杂多了。
请继续评论!我会再加分的。
i: integer;
PropInfo: PPropInfo;
begin
for i := 0 to ComponentCount - 1 do
begin
PropInfo := GetPropInfo(Components[i].ClassInfo, 'Color');
if PropInfo <> nil then
SetOrdProp(Components[i], PropInfo, clRed);
end;
end;
All is TEdit(Sender).Color := clRed; 可我还得让TComboBox们也用的上啊!
建议用szchengyu(cy)的方法合理
不过我的方法比较简单TWinControl派生类都没有问题procedure TFormDdiamond.EditEnter(Sender: TObject);
begin
FOldColor := TEdit(Sender).Color;
if TEdit(Sender).Color = FReadOnlyColor then
TEdit(Sender).Color := TEdit(Sender).Color xor FFocusColor
else TEdit(Sender).Color := FFocusColor;
end;procedure TFormDdiamond.EditExit(Sender: TObject);
begin
TEdit(Sender).Color := FOldColor;
end;
我就是这样做的
没有碰到过bug!
//pas
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
ComboBox1: TComboBox;
Memo1: TMemo;
procedure Edit1Enter(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}uses
TypInfo;procedure TForm1.Edit1Enter(Sender: TObject);
begin
SetOrdProp(TComponent(Sender), 'Color', clRed); //这样也可以
end;procedure TForm1.Edit1Exit(Sender: TObject);
begin
SetOrdProp(TComponent(Sender), 'Color', clWindow);
end;end.//dfm
object Form1: TForm1
Left = 192
Top = 103
Width = 544
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Edit1: TEdit
Left = 144
Top = 32
Width = 121
Height = 21
TabOrder = 0
Text = 'Edit1'
OnEnter = Edit1Enter
OnExit = Edit1Exit
end
object ComboBox1: TComboBox
Left = 280
Top = 32
Width = 145
Height = 21
ItemHeight = 13
TabOrder = 1
Text = 'ComboBox1'
OnEnter = Edit1Enter
OnExit = Edit1Exit
end
object Memo1: TMemo
Left = 144
Top = 56
Width = 185
Height = 89
Lines.Strings = (
'Memo1')
TabOrder = 2
OnEnter = Edit1Enter
OnExit = Edit1Exit
end
end
//不需要吗?
刚才szchengyu(cy)的方法把界面整个的弄红了,不是我所期望的。我想请你们能够指出我的方法有何不妥!
你怎么能对他这样
我已经提供给你代码
你没有测试一下吗?
tedit(sender).color:=???
肯定可以呀
但是,我需要一个语句就可以搞定(TEdit && TComboBox)的,你的代码只能解决TEdit的, scripting(scripting) 的又是IF 判断的变体,很遗憾,但仍要谢谢你们!
伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心
伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心
伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心伤心 object ComboBox1: TComboBox
Left = 280
Top = 32
Width = 145
Height = 21
ItemHeight = 13
TabOrder = 1
Text = 'ComboBox1'
OnEnter = Edit1Enter
// ~~~~~~~~~~
OnExit = Edit1Exit
// ~~~~~~~~~~
end
ComboBox2.OnEnter := Edit1Enter;
ComboBox3.OnEnter := Edit1Enter;
ComboBox4.OnEnter := Edit1Enter;
ComboBox5.OnEnter := Edit1Enter;
ComboBox6.OnEnter := Edit1Enter;
ComboBox7.OnEnter := Edit1Enter;
ComboBox8.OnEnter := Edit1Enter;
ComboBox9.OnEnter := Edit1Enter;
ComboBox10.OnEnter := Edit1Enter;
ComboBox11.OnEnter := Edit1Enter;
ComboBox12.OnEnter := Edit1Enter;
ComboBox13.OnEnter := Edit1Enter;
ComboBox14.OnEnter := Edit1Enter;
ComboBox15.OnEnter := Edit1Enter;
ComboBox16.OnEnter := Edit1Enter;
ComboBox17.OnEnter := Edit1Enter;
ComboBox18.OnEnter := Edit1Enter;
ComboBox19.OnEnter := Edit1Enter;
ComboBox20.OnEnter := Edit1Enter;
//....
// ~~~
还是"TEdit或TComboBox"
// ~~~
再次感谢!交个朋友,Mail: [email protected]