以下代码,我原先是用预编译来实现,可否不使用"预编译",而在程序运行时动态改变?(200)

  • 主题发起人 主题发起人 aKnightChen
  • 开始时间 开始时间
A

aKnightChen

Unregistered / Unconfirmed
GUEST, unregistred user!
由于使用预编译,我必须编译两个版本的程序.我想只用一个程序来实现.(即:程序运行时动态改变),如何能做到....以下是控件单元的简码:unit kEdtinterfaceuses...type {$IFDEF IS_Combox} TkEdt = class(TComboBox) {$ELSE} TkEdt = class(TEdit) {$ENDIF} private ... published { Published declarations } function myText:string; end;procedure Register;implementationfunction TkEdt.myText:string;begin {$IFDEF IS_Combox} Result:=.... {$ELSE} Result:=..... {$ENDIF}end;end.
 
没办法。
 
TkEdt1 = class(TComboBox)TkEdt2 = class(TEdit)//运行时代码TkEdt = TkEdt1.Create;orTkEdt = TkEdt2.Create;
 
to xusong168: 如果我在程序中,还要访问kEdt.Tag kEdt.Text...好多属性, 用你这种方法,只能是:aEdt:TComponent;aEdt:=TkEdt1.Create; or TkEdt2.Create;用得时候就麻烦,要 if aEdt is TkEdt1 then TkEdt1(aEdt).... else if aEdt is TkEdt2 then TkEdt2(aEdt)...但我希望用得时候,直接达到 aEdt.Tag:= .... aEdt.Text:=...(注: 不用预编译,只用变量控制的方法)
 
此方法一点也不麻烦 比这更简的方法没有
 
多人接受答案了。
 
后退
顶部