有关单元文件访问的问题,请指教!(50分)

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

angelwork

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在unit1单元中写了一个“过程”声明在published接口!

可是我为何就不能在unit4单元中使用呢?

请高手指教一二!。。。

还有一个问题想请教一下:
在一个窗体上放了10个TEdit控件!我想达到的目的是在焦点进入其中一个Tedit控件后,背景发生变化(edit.color),当焦点离开时恢复到原来的颜色。
事件我了解,进入是(OnEnter)离开是(OnExit)可问题在于,非要每个控件都要写进代码嘛?
edit1.color:=clwindow;
edit2.color:=clwindow;
.......
没有办法写一个通用的语句嘛?请高手指教!。。。。
 
1、与published接口无关,再检查一下吧!
2、写一个通用的事件处理程序,把所有10个edit控件的onenter该过程。对onexit做同样的处理。
代码的写法
(sender as Tedit).color:=。。。。。。

TEdit(Sender).Color:=。。。。。。
 
1.该过程声明在Public里就可以在别的单元里调用了,当然首先在uses 里加入unit1这个声明过程的单元。
2。写一个过程,只要在每个Edit的OnEnter事件或OnExit事件里调用这个过程就行了。比如:
Pocedure TForm1.theOnEnterEvent(Sender: TObject);
begin //在OnEnter中调用的过程
if (Sender is TEdit) then
(Sender as Tedit).Font.Color := clRed;
end;

Pocedure TForm1.theOnExitEvent(Sender: TObject);
begin //在OnExit中调用的过程
if (Sender is TEdit) then
(Sender as Tedit).Font.Color := clBlack;
end;
 
对于单元文件!还是没办法访问,不知道为什么!

我的uses 部分都加了其他的单元文件名称。。。。基本程序如下,望高手助以分析:

unit Unit4;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DBCtrls, Mask, ExtCtrls;

type
Tjb_spxx_add = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Panel1: TPanel;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
procedure Test(Edits:TDBEdit;Labels:TLabel); //这里就是声明的新过程
end;

var
jb_spxx_add: Tjb_spxx_add;

implementation

uses Unit1, Unit2, Unit3, custom;

{$R *.dfm}


uses 1 部分的单元文件:

unit Unit1;

interface

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

type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
Edit1: TEdit;
procedure N2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public

{ Public declarations }

end;

var
MainForm: TMainForm;

implementation

uses Unit2, Unit3, custom, Unit4;

高手们看看,是否有错误呢??????

 
Uses里的单元声明不允许循环声明!你声明的过程Test在unit4里面,那么只要在调用的单元unit1中uses中加入unit4即可,不能再在unit4的uses中加入unit1.
 
Uses 是系统自动为我加的声明,不是我自己写的!利用Alt+F11

照您的方法做了,可是仍没效果!

笔者打算自己建立一个单元,在该单元中写一些常用的过程和函数!

可问题一样,都是别的单元无法访问! 至于单元关联,也都已经做了!可就是没效果!还请高手多多指教!

bjaman 象你询问一下 is 与 as 的作用!之前你回答我的问题的时候,曾经使用过。可我查阅了一下函数列表,都没有一个肯定的答案!望您指教
 
一个简单的例子:

unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
test;
end;

end.


unit Unit2;
interface
type
Angel = Class
procedure test();
private
{ Private declarations }
public
{ Public declarations }
end;



implementation

uses Unit1;



{ Angel }

procedure Angel.test;
begin
form1.color:=form1.Color;
end;

end.


就这两个单元,都无法访问!不知道究竟是为什么嘛,高手们帮忙看看,给段正确的两个unit 代码好嘛?谢谢
 
同一个问题怎么问两次?看你另一帖
 
在调用时须带上Form名前缀,比如:Form4.Test(实参);如此才可以
is和as常用于对于不确定的对象Sender:TObject的处理,如前例中所见。is一般用于判断Sender是哪一种组件的对象,as则强制Sender作为某一组件的对象。
 
谢谢bjaman! 你的讲解很透彻!
 
我只在public部分写了代码!

但仍不行!是否改写在发行成员做个接口就可以呢??
 
后退
顶部