文档库 最新最全的文档下载
当前位置:文档库 › TreeView的用法基本用法

TreeView的用法基本用法

TreeView的用法基本用法
TreeView的用法基本用法

TreeView 的用法开始(挺全的)

//************* TreeView 的用法开始******************//

一:TreeView.Items[0].Expanded := True; // 展开第一个节点

二:TreeView.Items[0].Item[0].Selected := True; // 移动到第一个节点的第一个子节点找当前节点的下一个节点,按序号找如下:

if treeview1.Selected.GetNext<>nil then

treeview1.Selected.GetNext.Selected:=true;

TreeView1.SetFocus;

找当前节点的下一个同层兄弟如下:

if treeview1.Selected.getNextSibling<>nil then

treeview1.Selected.getNextSibling.Selected:=true;

TreeView1.SetFocus;

TreeView.Selected.getPrevSibling //当前选中节点的上一个兄弟节点

TreeView.Selected.Parent // 当前选中节点的父节点

getfirstchild是跳到该节点子结点中的第一个

getlastchild是跳到该节点子结点中的最后一个

如果你是想跳到同层兄弟结点的第一个

if treeview1.selected.parent<>nil then

treeview1.selected.parent.getfirstchild.selected:=true

else

treeview1.items.item[0].selected:=true;

如果你是想跳到同层兄弟结点的最后一个

if treeview1.selected.parent<>nil then

treeview1.selected.parent.getlastchild.selected:=true

else

treeview1.Items.Item[treeview1.Items.Count-1].Selected:=true;

TreeView的使用方法

基本信息:

TreeView 是一个显示树型结构的控件,每一个节点都是一个新类,

使用具有代表性每个节点都有四个值:

TEXT:显示文字 Image Index:显示图形序号

Selected Index:

State Index:

(1)建立目录项(本例中使用的TREEVIEW名称为:TvwTips)

增加根目录下的节点:(节点)

var

CatNode : TTreeNode; //先建立一个TREEVIEW使用的子对象begin

TvwTips.SetFocus; //将焦点置到这个TREEVIEW控件上

{ 在根标题下建立一个新的子标题 }

CatNode := TvwTips.Items.AddChild(

TvwTips.Items.GetFirstNode,'New Category' );

CatNode.ImageIndex := 1;

CatNode.SelectedIndex := 2;

CatNode.EditText; { 允许用户改变这个标题 }

end; 增加下一级目录(内容):

var

ParentNode, TipNode : TTreeNode; //先建立TREEVIEW使用

的子对象

VersionNum : Integer;

begin

TvwTips.SetFocus; //将焦点置到这个TREEVIEW控件上VersionNum := TMenuItem( Sender ).Tag; { Ver num of new tip } ParentNode := TvwTips.Selected; { 取出当前的选中节点 }

if ParentNode.Level = nlTip then{ Parent cannot be a tip node } ParentNode := TvwTips.Selected.Parent;

TipNode := TvwTips.Items.AddChildObject( ParentNode,'New Subject',Pointer( VersionNum ) );

TipNode.ImageIndex := 3; { Normal tip bitmap }

TipNode.SelectedIndex := 4; { Highlighted tip bitmap } TipNode.MakeVisible; { Move new tip node into view }

TipNode.EditText; { Immediately allow user to edit subject } EnableTreeViewFunctions( TipNode.Level );

RtfTip.Clear;

RtfTip.Modified := False;

end;

(2)说明 TvwTips.Items.GetFirstNode 返回TREEVIEW的第一个节点,函数类型为:TTreeNode

TvwTips.Items.Count 返回当前TreeView的全部节点数,整数

TvwTips.Selected.Level 返回当前选中节点的在目录树中的级别,

根目录为0

TvwTips.Selected.Parent 返回当前选中节点上级节点,函数类型为

:TTreeNode

三、下面这段程序是用TREEVIEW连数据库及一些操作:

unit bmzd;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Db, DBTables, ImgList, Buttons, ExtCtrls, Grids,

DBGrids;

type

Tfrmbmzd = class(TForm)

Panel1: TPanel;

cmd_new: TBitBtn;

cmd_delete: TBitBtn;

cmd_exit: TBitBtn;

tvwcode: TTreeView;

ScrollBox1: TScrollBox;

GroupBox2: TGroupBox;

Label3: TLabel; Label2: TLabel; Label1: TLabel; Label4: TLabel

Label5: TLabel; Edit2: TEdit; Edit3:TEdit; Edit4: TEdit; Edit5: TEdit;

ImageList1: TImageList;Edit1: TEdit;

cmd_save: TBitBtn; cmd_update: TBitBtn;

procedure FormShow(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure cmd_newClick(Sender: TObject);

procedure cmd_deleteClick(Sender: TObject);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure tvwcodeChange(Sender: TObject; Node: TTreeNode); procedure cmd_updateClick(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure tvwcodeClick(Sender: TObject);

private

{ Private declarations }

function LoadCode(crTbl:TDBDataSet):Integer;

function GetLevel(sFormat,sCode:String):Integer;

public

{ Public declarations }

end;

var

frmbmzd: Tfrmbmzd;

ii:integer;

tv:ttreenode;

const

SCodeFormat = '222222'; //科目代码结构

SFirstNodeTxt = '部门分类';

implementation

uses dm;

{$R *.DFM}

function tfrmbmzd.LoadCode(crTbl:TDBDataSet):Integer;

var NowID,sName,ShowTxt:String;

i,Level:Integer;

MyNode:array[0..6]of TTreeNode;

//保存各级节点,最长支持6级(重点)

begin

Screen.Cursor:=crHourGlass;

Level:=0;

With frmdm.tabbm do

begin

try

if not Active then Open;

First;

tvwCode.Items.Clear;

//以下是增加第一项

MyNode[Level]:=tvwCode.Items.Add (tvwCode.TopItem,SFirstNodeTxt);

MyNode[Level].ImageIndex:=0;

MyNode[Level].SelectedIndex:=0;

//以上是增加第一项

While Not Eof do

begin

NowID:=Trim(FieldByName('bumeng_id').AsString); ShowTxt:=FieldByName('bumeng_name').AsString; Level:=GetLevel(SCodeFormat,NowID);

//返回代码的级数

//以下是增加子项

//以下用上一级节点为父节点添加子节点

if Level>0 then//确保代码符合标准

begin

MyNode[Level]:=tvwCode.Items.AddChild (MyNode[Level-1],NowID+' '+ShowTxt);

MyNode[Level].ImageIndex:=1;

MyNode[Level].SelectedIndex:=2;

end; //以上是增加子项

Next;

end;

finally

Close;

end;

end;

MyNode[0].Expand(False);//将首节点展开

Screen.Cursor:=crDefault;

end;

//以上函数将Code.db表中的科目代码和科目代码名称显示出来//下面函数的功能是返回一代码的级数,

//参数sFormat传递科目代码结构;

//参数sCode传递某一科目代码

function tfrmbmzd.GetLevel

(sFormat,sCode:String):Integer;

var i,Level,iLen:Integer;

begin

Level:=-1;//如果代码不符合标准,则返回-1

iLen:=0;

if (sFormat<>'')and(sCode<>'')then

for i:=1 to Length(sFormat) do

begin

iLen:=iLen+StrToInt(sFormat[i]);

if Length(sCode)=iLen then

begin

Level:=i;

Break;

end;

end;

Result:=Level;

end;

procedure Tfrmbmzd.FormShow(Sender: TObject);

begin

if not frmdm.tabbm.active then frmdm.tabbm.Open;

frmdm.tabbm.IndexFieldNames:='BUMENG_ID';

//按字段aCode排序(不要漏掉)

LoadCode(frmdm.tabbm);

end;

procedure Tfrmbmzd.FormClose(Sender: TObject; var Action: TCloseAction); begin

Action := caFree;

end;

procedure Tfrmbmzd.cmd_newClick(Sender: TObject);

begin

tvwcode.SetFocus ;

if tvwcode.selected.AbsoluteIndex<>0 then

begin

cmd_delete.Enabled:=true;

cmd_update.Enabled:=true;

cmd_save.Enabled :=true;

if not frmdm.tabbm.Active then frmdm.tabbm.Open;

edit1.text:=frmdm.tabbm.Fields[0].asstring;

end;

tvwcode.SetFocus ;

tvwcode.Items.AddChild(tvwcode.selected,'新建部门');

if tvwcode.Selected.HasChildren then

begin

if tvwcode.Selected.GetLastChild.index+1>9 then

edit2.text:=inttostr(tvwcode.Selected.GetLastChild.index+1)

else

edit2.text:='0'+inttostr(tvwcode.Selected.GetLastChild.index+1);

edit3.text:='新建部门';

edit2.Enabled:=true;

edit3.Enabled:=true;

end

else

begin

edit2.text:='01';

edit3.text:='新建部门';

edit2.Enabled:=true;

edit3.Enabled:=true;

end;

if not frmdm.tabbm.Active then frmdm.tabbm.Open; frmdm.tabbm.edit;

frmdm.tabbm.Append;

cmd_new.Enabled :=false;

cmd_delete.Enabled :=false;

cmd_update.Enabled :=false;

cmd_save.Enabled :=true; //新建下级部门

tvwcode.Selected.GetLastChild.Selected:=true;//设选择tv:=tvwcode.Selected ;

tvwcode.autoExpand:=true;

tvwcode.SetFocus ;

end;

procedure Tfrmbmzd.cmd_deleteClick(Sender: TObject); var

I:integer;

seno,setext:string;

begin

if tvwcode.Selected.HasChildren=true then

begin

application.messagebox('该部门包含下级,不能删除','提示',MB_OKCANCEL+mb_iconquestion ) ;

end

else

begin

if application.messagebox('你确实要删除当前部门吗','提示

',MB_OKCANCEL+mb_iconquestion )

=IDOK then

begin

setext:=tvwcode.selected.text;

i:=0;

while setext[i] <> ' ' do

begin

I := I + 1;

seno:=seno+setext[i];

end;

if not frmdm.tabbm.Active then frmdm.tabbm.Open;

frmdm.tabbm.setkey;

frmdm.tabbm.Fields[0].asstring:=seno;

if frmdm.tabbm.GotoKey then

begin

frmdm.tabbm.edit;

frmdm.tabbm.Delete;

end;

tvwcode.Selected.Delete ;

cmd_new.Enabled :=true;

tvwcode.autoExpand:=true;

tvwcode.SetFocus ;

end;

end;

end;

procedure Tfrmbmzd.Edit2KeyPress(Sender: TObject; var Key: Char); begin

if key in ['0'..'9',Chr(vk_Back)] then

else

begin

key:=#0;

application.messagebox('','',mb_ok);

end;

end;

procedure https://www.wendangku.net/doc/8713405445.html,wcodeChange(Sender: TObject; Node: TTreeNode);

var

i,lev:integer ;

strr,seno,setext:string;

begin

if cmd_new.Enabled =true then

begin

if tvwcode.selected.AbsoluteIndex<>0 then

begin

cmd_delete.Enabled:=true;

cmd_update.Enabled:=true;

cmd_save.Enabled :=true;

setext:=tvwcode.selected.text;

i:=0;

while setext[i] <> ' ' do

begin

I := I + 1;

seno:=seno+setext[i];

end;

if not frmdm.tabbm.Active then frmdm.tabbm.Open;

frmdm.tabbm.setkey;

frmdm.tabbm.Fields[0].asstring:=seno;

frmdm.tabbm.GotoKey;

strr:='';

case tvwcode.Selected.Level of

2: strr:=copy(frmdm.tabbm.fields[0].asstring,1,2);

3: strr:=copy(frmdm.tabbm.fields[0].asstring,1,4);

end;

edit1.text:=strr;

//加上级编码

edit3.text:=frmdm.tabbm.Fields[1].asstring;

//本级编码

edit2.text:=copy(frmdm.tabbm.fields[0].asstring,length(frmdm.tabbm.fields[0].asstring)-1,2 );

end

begin

edit1.text :='';

edit2.text :='';

edit3.text :='部门分类';

cmd_delete.Enabled :=false;

cmd_update.Enabled :=false;

end;

end;

end;

procedure Tfrmbmzd.cmd_updateClick(Sender: TObject); var

i:integer;

begin

for i:=0 to ComponentCount-1 do

begin

if (Components[I] is tedit ) then

(Components[I] as tedit).enabled:=false;

end;

for i:=0 to ComponentCount-1 do

begin

if (Components[I] is tbitbtn ) then

(Components[I] as tbitbtn).enabled:=true;

end;

if tvwcode.Selected.AbsoluteIndex<>0 then

begin

if not frmdm.tabbm.Active then frmdm.tabbm.Open; frmdm.tabbm.Edit;

frmdm.tabbm.Fields[0].asstring:=edit1.text+edit2.text; frmdm.tabbm.Fields[1].asstring:=edit3.text;

try

frmdm.tabbm.Post;

//表的保存

except

on edbengineerror do

edit2.Enabled :=true;

application.messagebox('编号不能重复,请重新输入','提示',MB_OK+mb_iconquestion ) ; exit;

end;

end;

tvwcode.Selected.Text:=edit1.text+edit2.text+' '+edit3.text;

tvwcode.SetFocus ; //修改树

end;

cmd_new.Enabled :=true;

edit2.Enabled :=false;

end;

procedure Tfrmbmzd.BitBtn2Click(Sender: TObject);

begin

cmd_new.Enabled :=false;

cmd_delete.Enabled :=false;

edit2.enabled:=true;

edit3.Enabled :=true;

end;

procedure https://www.wendangku.net/doc/8713405445.html,wcodeClick(Sender: TObject);

var

i:integer;

begin

if cmd_new.Enabled =false then

begin

application.MessageBox('当前是修改状态,请单击保存按钮','提示',mb_ok);

tv.Selected :=true;

end;

if tvwcode.selected.AbsoluteIndex=0 then

begin

for i:=0 to ComponentCount-1 do

begin

if (Components[I] is tedit ) then

(Components[I] as tedit).enabled:=false;

end;

for i:=0 to ComponentCount-1 do

begin

if (Components[I] is tbitbtn ) then

(Components[I] as tbitbtn).enabled:=false;

cmd_new.Enabled :=true;

cmd_exit.Enabled :=true;

end;

end;

end;

end

四、使用概述

树形图(Treeview)是Win95下新增加的通用显示部件(Common Control,在

COMCTL32.DLL中)之一,从

Delphi2.0开始也增加了相应的控件Treeview,用于取代原Outline控件。由于树形图结构较复杂,使用起

来常不知如何下手。这里就使用中的一些问题作些介绍。

Treeview用于显示按照树形结构进行组织的数据,这在实际当中用途还是比较广泛的,如计算机中的

文件系统(Windows95中的资源管理器)、企业或公司的组成结构等等。Treeview控件中一个树形图由节点

(TreeNode)和连接线组成。TtreeNode是TTreeview的基本组成单元。一个树的节点又包含文本(Text)和数

据(Data)。Text为String类,Data则为无定形指针(Untyped Pointer),可以指向一个与节点相联系的数

据结构。

每一个节点下子节点形成这一节点的Items属性,当前节点有一个唯一的

Index(TreeNode的Index属性

),用于说明子节点在Items中的位置,每一个节点下的子节点是顺序编号的,第一个是0,第二个是1,依

次类推。用IndexOf方法获得子节点的顺序,绝对顺序(AbsoluteIndex)则是指从Treeview 第一个项开始的

顺序值,第一个是0,如此推下去。Item属性则根据Index的值返回当前节点的第Index个子节点。Count则

表明属于此项的所有子节点的数量。用MoveTo方法将Item由一个位置移到另一个位置。

Expanded属性表明是否所有的子项都全部展开(包括子项的子项),为True表示全部展开。IsVisible

属性表明一个项是否在树中能被看到,如果树全部展开那么这个Item是肯定可以被看到。HasChildren属

性表明一个项是否有子项。 GetFirstChild, GetLastChild, GetPrevChild, and GetNextChild 分别返回

当前项子项的第一个、最后一个和前一个、后一个项。GetNextSibling and GetPrevSibling 则返回在同

一Level下的下一个和上一个项。GetNextVisible and GetPrevVisible则返回能看得到的下一个和上一个

项。如果一个节点有Parent,则HasAsParent方法返回True. Parent为当前项的父项。Focused属性确定焦

点是否落在此节点上,被Focus时会一个标准的方框围住。很显然,只有一个节点会被聚焦。 Selected属

性表明一个节点是否被选中,同样只有一个节点会被选中。DropTarget属性表明节点在拖动操作中是源还

是目标。

1.添加、删除、修改节点:

静态的方法可以在设计时通过Items的编辑器设置各节点的内容。

在添加和删除前必须保证有节点被选中(Treeview.Selected = nil)

用AddFirst, AddFirstChild, AddChild等先添加根节点,如

Treeview.Items.AddFirst( nil, 'Root');

然后以此为基础,添加此项的子节点。

删除节点Treeview.Selected.Delete

编辑节点内容Treeview.Selected.EditText

注意:由于根节点没有父节点 (TTreeNode.Parent= nil)

此外,在大批量添加数据到Treeview中时最好使用

TreeView.Items.BeginUpdate;

添加节点

TreeView.Items.EndUpdate

这样能加快显示速度。

2.在节点上添加图象

Treeview中几个与图象相关的属性:

SelectedIndex:当节点被选中时在TimageList 中选什么样的图象

OverlayIndex:选那副图象作为掩图(一幅图象透明地显示在另一幅图象的前面),比如一个节点不可用

时加一副X图象在其前面。

ImageIndex:在常态时选用的图的序号

StateIndex:在StateImages这个ImageList中对应的序号,-1时不显示图象

比较典型的,象在文件管理器中的所显示的一样,Treeview控件在节点之前也可以显示图象。在Form中放

置一ImageList控件,加入几个图片,分别被Index为0,1,…在Treeview的Image属性项填入你所加入的

ImageList的控件名称。TreeNode的ImageIndex表示节点未被选中时(Selected=nil)的图片序号,

SelectedIndex表示节点被选中时图片序号。

3.关于Level

Level的概念可以用下图表示:Level0 Level1 Level2

4.排序 SortType决定什么时候进行排序;

TreeView.AlphaSort对节点进行排序,如果不能满足要求,你可以定义自己的CustomSort 方法。

5.Drag&Drop操作,与标准的拖放操作使用方法一样。

五、一个例子:首先,在库的构建上要有一定策略以下几个字段非常重要:'codeID' 代码集名称

(例如:'AB')

'code' 节点代码(例如:'新疆'节点的代码为'65','乌鲁木齐'的节点代码为'6501'等)

'description' 节点描述(例如:如上面的'新疆'、'乌鲁木齐'等)

'pptr'父节点代码(例如:'乌鲁木齐'节点的父代码为'65',最高层节点的父节点代码可同其代码集,

例如:'新疆'的父节点为 'AB')'cptr'子节点标识(例如:该节点是否有下级节点,有则取值'1',没

有则取值'0')建立树由两部分构成:

procedure TForm1.FormActivate(Sender: TObject);

var

code_ID,new_sql,node_text,table_name:string;

new_node:Ttreenode;

begin

//要传递的参数

code_ID:='AB';

table_name:='sr_codeitem';

//********

treeview1.Items.BeginUpdate;

//清空所有项目

treeview1.Items.Clear;

new_sql:='select * from '+ table_name + ' where codeID='+''''+code_ID+''''

+ ' and '+'pptr='+''''+code_ID+'''';

//数据集中先筛选出所有要增加节点

with dm1.Query1 do

begin

close;

sql.Clear;

sql.Add(new_sql);

open;

//增加第一层节点

while not eof do

begin

node_text:=fieldbyname('code').asstring;

node_text:=node_text+' '+fieldbyname('description').asstring;

new_node:=treeview1.Items.add(nil,node_text);

new_node.HasChildren:=true;

next;

end;//end while

end;//end with

treeview1.Items.EndUpdate;

end;

procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;

var AllowExpansion: Boolean);

var

new_sql,node_text,child_text,code_ID,table_ID:string;

child_node:Ttreenode;

begin

//获取参数

code_ID:='AB';

table_ID:='sr_codeitem';

treeview1.Items.BeginUpdate;

node_text:=node.Text;

//截取所点击节点的code

node_text:=copy(node_text,1,pos(' ',node_text)-1);

with dm1.Query1 do

begin

close;

sql.Clear;

new_sql:='select * from '+table_ID+' where pptr='+''''+node_text+'''' + ' and codeID=' +''''+code_ID+'''';

sql.Add(new_sql);

open;//定位所点的项

//清除原来的下级节点

node.DeleteChildren;

while not eof do

begin//增加下级节点

child_text:=fieldbyname('code').asstring+' '+fieldbyname('description').asstring; child_node:=treeview1.Items.AddChild(node,child_text);

if fieldbyname('cptr').asstring='1' then

next;

end;//end while

end;//end with

treeview1.Items.EndUpdate;

end;

第二部分:在 treeview 的onExpanding 事件中添加如下代码

procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;

var AllowExpansion: Boolean);

var

new_sql,node_text,child_text,code_ID,table_ID:string;

child_node:Ttreenode;

begin

//获取参数

code_ID:='AB';

table_ID:='sr_codeitem';

treeview1.Items.BeginUpdate;

node_text:=node.Text;

//截取所点击节点的code

node_text:=copy(node_text,1,pos(' ',node_text)-1);

with dm1.Query1 do

begin

close;

sql.Clear;

new_sql:='select * from '+table_ID+' where pptr='+''''+node_text+'''' + ' and codeID=' +''''+code_ID+'''';

sql.Add(new_sql);

open;//定位所点的项

//清除原来的下级节点

node.DeleteChildren;

while not eof do

begin//增加下级节点

child_text:=fieldbyname('code').asstring+' '+fieldbyname('description').asstring; child_node:=treeview1.Items.AddChild(node,child_text);

if fieldbyname('cptr').asstring='1' then

next;

end;//end while

end;//end with

treeview1.Items.EndUpdate;

end;

六、让我们一个一个来回答:

第一个:取出节点的text属性值,赋给Richedit的Lines.text即可;

例如: self.RichEdit1.Lines.text:= self.Treeview1.selected.text;

第二个:TtreeView控件有函数保存和载入树的结构到文件

例如:self.Treeview1.SaveToFile('文件名');//保存结构

self.TreeView1.LoadFromFile('文件名');//载入结构

第三个:TreeView的每个节点都有ItemID(句柄),AbsoluteIndex(相对于树头节点的索引位置),

Index(在当前层的位置),Level(本节点的层数)通过访问这些可以知道其位置;

例如:self.TtreeView1.selected.ItemID;//返回句柄

self.TreeView1.selected.Level;//返回层数

self.TreeView1.Items.count//返回所有节点的个数;

**寻找某一个节点的话,就只有写一个循环来遍历整个树,直到找到符合条件的节点为止,关于查找节点

的代码我也在想,先参考上面同志们的回答吧;??**为某个节点加上子节点,例如:

var NewNode:TTreeNode;

begin

NewNode:=self.Treeview1.Items.addChild(self.Treeview1.Items[3],'新的字节点');

//为self.Treeview1.Items[3]加上一个字节点,标签是'新的字节点',

//还有其他的ADD方法,可以查找Delphi帮助

//然后可以给刚加上去的子节点赋值;

NewNode.ImageIndex:=n;

NewNode.SelectedIndex:=M;

NewNode.Data:=X;//注意X是一个指针类型;关于这方面的帮助

//可以找一下TTreeNode.Data 属性例子

end;

??**想选中某个节点:self.TreeView1.Items[n].selected:=true;//这样就选中了

??**展开某节点就容易了:self.TreeView1.Items[n].Expand;//展开啦!

//想合上就用Collapse(Recurse: Boolean)函数,

总之呢,去查一下TtreeNode的帮助吧!

??**清除某节点下的所有子节点,用DeleteChildren是没错的,例如:

self.Treeview1.Items[n].DeleteChildren;//OK,下面都没了!

七、query1.close;

query1.sql.clear;

query1.sql.add('select * from t08 order by t0801');

try

query1.open;

except

on e:exception do

begin

application.MessageBox(pchar('打开数据库文件失败!'+#13+#13+e.Message),'错误信息',16);

close;

exit;

end;

end;

//创建结构树

while not query1.eof do

begin

s:=trim(query1.fields[0].asstring);

case length(s) of

2:begin

tv1.Selected:=tv1.items.add(nil,trim(query1.fields[1].asstring));

tv2.Selected:=tv2.items.add(nil,trim(query1.fields[0].asstring));

end;

4:begin

p1:=tv1.items.addchild(tv1.Selected,trim(query1.fields[1].asstring));

p2:=tv2.items.addchild(tv2.Selected,trim(query1.fields[0].asstring));

end;

6:begin

tv1.Items.addchild(p1,trim(query1.fields[1].asstring));

tv2.Items.addchild(p2,trim(query1.fields[0].asstring));

end;

end;

现在进行时的基本用法及练习题

{ 现在进行时的基本用法 一.定义:(1)现在进行时表示此时此刻正在发生的动作。 如:we are having English now. 我们正在上英语课。 (2)现在进行时表示现阶段正在发生的动作。 如:we are studying for a test these days. 这些天来我们一直在复习备考。 (3)现在进行时与always,forever(永远),constantly(不断地)continually(频繁地)等连用,表示赞赏或厌恶等感情色彩。 如: I’m always losing my books.我总丢书。(生气)He is always helping others. We all love him.他总是乐于助人,我们大家都喜欢他。(赞赏) ( He is constantly talking to me.他不停地跟我讲话。(厌烦)二.谓语构成及变化规则(观察例子进行总结) 如:I am running with my parents now. Look! Bob is swimming in the river. It’s 9:00. They are having

(1).结合以上例子分析:现在进行时谓语部分为:be(am/is/are)+现在分词(动词-ing) (2)动词有原形变为现在分词的基本规则: A.一般情况,在动词原形后直接加-ing. 如:watch---- watching, $ go--- going, walk--- walking, do--- doing, fly--- flying. B.以不发音的字母e结尾的动词,去掉e,再加-ing.如:take--- taking. make--- making,drive--- driving, leave---leaving C.以“辅音字母+元音字母+辅音字母”的结构且中间的元音字母发的不是字母表上的音时即重读闭音节结构,双写最后一个辅音字母,再加-ing。如:run---running, plan---planning,set---setting,put--- putting, cut---cutting,shop---shopping,swim---swimming,stop---stoppi ng, sit---siting. 例外情况:visit---visiting, follow---following,slow(延缓)---

人教版英语英语现在完成时的用法大全含解析

人教版英语英语现在完成时的用法大全含解析 一、初中英语现在完成时 1.—They say there is a new restaurant near here. —Yes, and it ______ for more than a week. A. has been open B. open C. is opening D. opens 【答案】 A 【解析】【分析】句意:——他们说在这附近有一个新的餐馆。——是的,它已经开了一个多星期了。根据 for more than a week ,可知用现在完成时,have/has been done,故选A。 【点评】考查现在完成时,注意识记其标志词。 2.Mike used to be a top student, but he behind since he lost himself in computer games. A. fell B. has fallen C. was D. has been 【答案】 D 【解析】【分析】句意为“Mike过去是尖子生,但自从迷上电子游戏以来成绩落后了”。由since可知but后的主句用现在完成时,瞬间动词fall不能和since引导的时间状语从句连用,故用延续性动词be。故选D。 【点评】本题考查现在完成时中非延续性动词和延续性动词的转换。 3.—Hi, Tom! you ever the Bird's Nest? —Yes, I have. It's fantastic. A. Have, been to B. Have, gone to C. Did, go to 【答案】 A 【解析】【分析】句意:——你好,Tom!你曾经去过鸟巢吗?——是的,我去过。它是极好的。根据答语—Yes, I have.可知是以have开头的现在完成时的一般疑问句,排除C。have been to+地点名词,去过某地,去了并且回来了;have gone to+地点名词,去了某地,去了还没有回来,在去或者回来的路上。根据It's fantastic.可知去了并且回来了,故选A。 【点评】考查短语辨析,注意平时识记其区别,理解句意。 4.——Where is Mr. Wang? ——He together with his students ________ Zhuyuwan Park. A. has gone to B. have gone to C. has been to D. have been to 【答案】 A

过去完成时态用法小结

过去完成时态的用法小结 默认分类2009-12-27 12:54:52 阅读281 评论0 字号:大中小订阅 一、过去完成时适用场合 1. 过去完成时表示在过去某一时间或动作以前已经完成了的动作。这个过去的时间常用by,before等介词短语或一个时间状语从句表示,也可以暗含在上下文中。 I had finished my homework before supper.我在晚饭前就把作业做完了。 The play had already started when we got to the theatre. 我们到剧场时戏已经开始了。 By the end of June they had treated over 10,000 patients. 到六月底他们已经治疗了一万多病人。 2. 过去完成时还可表示过去某一时刻之前发生的动作或状态持续到过去某个时间或还要持续下去,常与for,since等词连用。如: He had served in the army for ten years before he retired last year. 他在部队干了十年,去年退役了。 He told me that he had known her since he was a child. 他告诉我他从小就认识她。 He had learned English for eight years before he went to England for further study. 他在去英国深造前,已学了八年英语。 3. 在一段情景连贯的文字中,先发生的事放在后面叙述时,要用过去完成时。如: Tom flew home, but his father had already died. 汤姆乘飞机回家,他的父亲却已经去世了。4. 过去完成时也用于hardly...when..., no sooner...than..., It was the first time + that分句等一些固定句型中。 He had no sooner left the room than they began to talk about him. 他刚离开房间,他们就议论起他来。 We had hardly begun when we were told to stop. 我们刚开始就被叫停。 It was the first time that he had ever spoken to me in such a tune.他用这样的语调跟我讲话,这是第一次。 二、过去完成时与一般过去时的比较 1. 当一个由before, after, as soon as 等连词引导的从句所表示的动作和主句的动作紧接着发生时,两个动作均可用一般过去时来表示。 We had breakfast after we did morning exercises. 做完早操后,我们吃早饭。 The train started to move just before he reached the platform. 他到月台时火车刚开走。 They started ploughing as soon as they got to the fields. 他们一到地里就开始耕地。 2. 按时间顺序叙述两个或两个以上接连发生的动作时,用一般过去时。 He entered the room, turned on the light and sat down at the table. 他走进屋子,打开灯,坐在桌子旁。 3. 在表示某人过去未曾完成的“心愿”、“打算”、“计划”、“想法”、“许诺”等时,hope, mean, plan, think, intend等谓语动词常用过去完成时。 I had hoped to be back last night, but I didn’t catch the train. 我本来希望昨晚回来的,但没搭上火车。 We had thought to return early but they wouldn’t let us go. 我们本想早回来的,但他们不让我们走。 4. 在表示过去的句子中出现常与完成时态连用的词,如:already,yet,since,for,ever,never及次数名词等时,常用过去完成时来表示。

最新现在进行时 的两种用法

现在进行时的两种用法 1.(1)当句子表示动作正在进行,这时要用现在进行时。如: They are playing basketball now.现在他们正在打篮球。 (2)以look, listen开头的句子,提示我们动作正进行,这时要用现在进行时。如: Listen!She is singing an English song.听,她正在唱英语歌。 (3)表示当前一段时间或现阶段正在进行的动作,且此时有this week, these days等时间状语,这时常用现在进行时。如: We are making model planes these days.这些天我们在做飞机模型。 (4)描述图片中的人物的动作,也为了表达更生动。此时也常用现在进行时。如: Look at the picture. The children are flying kites in the park.看这幅图,那些孩子正在公园放风筝。 2.现在进行时表达按计划安排近期内即将发生的动作[进行时表将来] 有这种用法的动词或短语有:come, go, start, leave, take off, fly, see off, meet, get(to), arrive, stay, return, take 等。 例1 Mr. Ma is coming. 马老师要来了。 例2 I am leaving Washington for New York. 我马上要离开华盛顿到纽约去了。 你仔细体会一下,这些动词都是表示“来,去”之类的瞬时动词。 所以不能说I'm being a teacher 现在进行时的基本用法: a. 表示现在(指说话人说话时)正在发生的事情。例如: We are waiting for you. 我们正在等你。 b. 习惯进行:表示长期的或重复性的动作,说话时动作未必正在进行。例如: Mr. Green is writing another novel. 他在写另一部小说。(说话时并未在写,只处于写作的状态。) c. 表示渐变,这样的动词有:get, grow, become, turn, run, go, begin 等。例如:

现在完成时的基本用法

现在完成时讲解与练习 (一)现在完成时的基本用法 (1)强调动作是从过去持续到现在,并有可能继续持续下去。 (2)强调对现在的影响或结果,此用法容易和一般过去时混淆。两者的区别是:一般过去时有动作发生的时间点,即过去某一时间发生某一动作;现在完成时则没有,即不强调是哪个时间点发生的动作,而强调过去的动作对现在造成的影响和结果。 (3)在过去不确定的时间里发生的动作,但是结果对现在有影响。一、现在完成时的构成 (一)肯定式 主语+助动词have /has +过去分词+其它 说明:这里的have /has是助动词,没有什么具体意义。当主语是第三人称单数时助动词用has,其余人称一律用have。has,have的缩略式分别为's或've。规则动词过去分词的构成与过去式的构成方式一样,不规则动词可参看不规则动词表。实例: 1)I've just copied all the new words .我刚抄写了所有的生词。(表示不要再抄了) 2)She has lost her books .她丢失了她的书。(表示到目前为止还没有找到) (如果用过去时:She lost her books . 则强调书是过去丢的这一动作,而不知现在有没有找到) 3)We've just cleaned the classroom .我们刚好打扫了教室。(表明现在教室是干净的) (二)否定式 主语+助动词have /has+not+过去分词+其它 说明:现在完成时构成否定句时,只需在助动词have /has后面加not就行。have not,has not的缩略式分别为haven't ,hasn't。另外,肯定句中有some,already时,改为否定时要分别改成any,yet。实例: 1)I haven't finished my homework yet.我还没有完成我的作业。 2)She hasn't travelled on a train .她没有坐火车旅行过。 3)We have never spoken to a foreigner.我们从来没有和外国人说过话。注:有时not可以用never代替,表示“从来没有”的意思。又如:

过去完成时知识点总结和题型总结(word)

过去完成时知识点总结和题型总结(word) 一、初中英语过去完成时 1.—We all went to the park except you last weekend. Why didn't you come? —Because I the park twice. A. have gone to B. had gone to C. had been to D. have been to 【答案】 C 【解析】【分析】have gone to去了(尚未回).have been to去过(已回),根据句意在last weekend之前去过,所以用过去完成时,故选C。 【点评】本题考查过去完成时的用法,表示在过去某一时间前已经发生的动作。 2.Sue didn't go to see the film with us last week because she ________________ it with her mother. A. has seen B. had seen C. will see D. saw 【答案】 B 【解析】【分析】句意:苏上星期没和我们一起去看电影,因为她和她妈妈一起看过了。 A.已经看了,现在完成时; B.已经看了,过去完成时; C.将看,一般将来时; D.看了,一般过去时。Sue和妈妈看了电影的影响是上周Sue没有和我们看电影,所以用完成时,根据didn't可知是与过去有关,所以用过去完成时,结构是had+动词过去分词,see的过去分词是seen,故选B。 【点评】考查过去完成时,注意平时识记其结构,理解句意。 3.Jake _____his key in the office so he had to wait until his wife _______ home. A. has forgotten … comes B. forgot… come C. had left… came D. had left…would come 【答案】 C 【解析】【分析】句意:杰克把他的钥匙丢在办公室了,因此他不得不等到他的妻子回家。结合语境可知前文描述的是过去某时前已经完成的动作,故用过去完成时态。下文指的是过去某时的动作,故用一般过去时态。选C。 【点评】英语中的时态主要是借助于时间状语与上下文语境来进行判断。解答此类题型,首先要注意句子中的时间状语,如果没有则要通过分析上下文,结合语境来判断句子的时态。 4.When I ______ the cinema, the film _______for ten minutes A. got to; has begun B. arrived at; has been on C. reached; had begun D. hurried to; had been on

英语过去完成时的用法总结

英语过去完成时的用法总结 它表示句子中描述的动作发生在“过去的过去”。 基本结构 主语+had+过去分词vpp、(done) ①肯定句:主语+had+过去分词、 ②否定句:主语+had+not+过去分词、 ③一般疑问句:Had+主语+过去分词? 肯定回答:Yes,主语+had、 否定回答:No,主语+had not 、 ④特殊疑问句:特殊疑问词或词组+一般疑问句(Had+主语+过去分词)? 基本用法表示在过去某一时刻或动作以前完成了的动作,也可以说过去的时间关于过去的动作。即“过去的过去”。可以用by, before等介词短语或一个时间状语从句来表示,也可以用一个表示过去的动作来表示,还可能通过上下文来表示。 例如: By nine o’clock last night, we had got200 pictures from the spaceship、到昨晚9点钟,我们已经收到200 张飞船发来的图片。 过去完成时-语法判定 1、由时间状语来判定

一般说来,各种时态都有特定的时间状语。与过去完成时连用的时间状语有: (1 ) by + 过去的时间点。如: I had finished reading the novel by nine oclock last night、 (2 ) by the end of + 过去的时间点。如: We had learned over two thousand English words by the end of last term、 (3 ) before + 过去的时间点。如: They had planted six hundred trees before last Wednesday、 2、由“过去的过去”来判定。 过去完成时表示“过去的过去”,是指过去某一动作之前已经发生或完成的动作,即动作有先后关系,动作在前的用过去完成时,在后的用一般过去时。这种用法常出现在: (1 )宾语从句中 当宾语从句的主句为一般过去时,且从句的动作先于主句的动作时,从句要用过去完成时。在told, said, knew, heard, thought等动词后的宾语从句。如: She said that she had seen the film before、 (2 )状语从句中

现在进行时用法归纳

现在进行时用法归纳 基本用法: 1. 表示说话时正在进行的动作,强调“此时此刻”,常和now, look, listen连用。 Look! A train is coming. 看,火车来了。 Listen! He is playing the piano. 听,他在弹琴。 2. 表示现阶段正在进行的事情,不一定说话时正在进行。常和at present ,this week ,these days…等时间状语连用。 What lesson are you studying this week? 你们本周学哪一课了?(说话时并不在学) 3. 现在进行时有时可用来表示一个最近按计划或安排要进行的动作,即用现在进行时代替一般将来时, 动词一般多为表示位置移动的动词。如:go, come, leave等。 Where are you going? 你去哪? I am coming. 我来了。 Are you going to Tianjin tomorrow? 你明天去天津吗? How many of you are coming to the party next week? 你们有多少人下周要来参加晚会? 4. wear用现在进行时表示一种状态。如: He is wearing a blue coat. 他穿着一件蓝外套。 5. 有些动词意思只是表示一种状态,不能用于现在进行时。如:have(有),like等。 Now each of us has a dictionary. 现在我们每一个人都有一本词典。 6. 现在进行时与always, often, forever等连用表示赞扬、厌烦等语气。该知识点仅作了解之用, 不作为中考考查内容。如: You’re always interrupting me! 你老打断我的话!(抱怨) My father is always losing his car keys. 我爸老丢车钥匙。(不满) She’s always helping people. 她老是帮助别人。(赞扬)

现在完成时的基本用法

现在完成时的基本用法 1、现在完成时表示影响 Hehasleftthecity.他已离开这个城市。(结果:他不在这个城市。) Someonehasbrokenthewindow.有人把窗户打破了。(结果:窗户 仍破着。) Ihavelostmypen.我把钢笔丢了。(结果:我现在无钢笔用。) Hehasfinishedhiswork.他把工作做完了。(结果:他现在可以做其他的事了。) 2、现在完成时表示持续 该用法的现在完成时表示一个过去发生的动作或开始的状语在过去并未完成或结束,而是一直持续到现在,并且有可能继续下去(也 可能到此结束),如汉语说“他在我们学校教书已有30年了”,显 然“他在我们学校教书”是从30年前开始,并且一直教到现在,已 经持续了30年;又如汉语说“自上个星期以来他一直很忙”,显然“忙”是从上个星期开始的,并且这一“忙”就一直忙到现在。如: Hehastaughtinourschoolfor30years.他在我们学校教书已有30 年了。 Hehasbeenbusysincelastweek.自上个星期以来他一直很忙。 Hehasworkedforuseversinceheleftschool.他离开学校以后就一直为我们工作。 3、现在完成时表示重复

即表示从过去某个时间直到现在的这个时间范围内不断重复发生的动作或情况,并且这个不断重复的动作有可能继续下去,也有可能到现在就结束。如: Howoftenhaveyouseenher?你隔多少见她一次? Myfatherhasalwaysgonetoworkbybike.我父亲一向骑车上班。 4、现在完成时表示将来 同一般现在时可以表示将来一样,现在完成时也可以在时间状语从句里表示将来。如: I’llwaituntilhehaswrittenhisletter.我愿等到他把信写完。 Whenyouhaverested,I’llshowyouthegarden.等你休息好之后,我领你看我们的花园。 二、现在完成时的基本定义和句型构成 基本定义 现在完成时有两种用法 1.过去发生的某一动作对现在造成的影响或结果。到现在为止已经发生或完成的动作。 2.表示过去发生的、持续到现在的动作或状态。 句型构成 基本结构:主语+have/has+动词的过去分词(p.p) 现在完成时用法 现在完成时用法 ①肯定句:主语+have/has+动词的过去分词(p.p)(V-ed)+宾语(或者其他). ②否定句:主语+havenot/hasnot+动词的过去分词(p.p)(V-ed)+宾语.

人教版英语过去完成时的用法大全附答案

人教版英语过去完成时的用法大全附答案 一、初中英语过去完成时 1.By the time I got to school, I realized that I ________ my backpack at home. A. have forgotten B. had forgotten C. have left D. had left 【答案】 D 【解析】【分析】句意:我到学校的时候,我意识到我把书包忘在家里。考查过去完成时。by the time:到…时候为止;通常引导一个时间状语从句,表示“到……的时候为止”主句则表示在此时间之前某个事件已完成。值得注意的是,当从句用过去时时,主句通常用过去完成时。Leave sth. Sp.:把…落在某地。结合句意和语境可知选D。 【点评】此题考查过去完成时的用法。 2.Mary thought of the party which she___________ for this day. A. plan B. planned C. had planned D. would plan 【答案】 C 【解析】【分析】句意:玛丽想起了她今天计划的聚会。plan的动作发生在thought of的动作之前,表示过去的过去,要用过去完成时had+过去分词。故选C。 【点评】考查过去完成时的构成和用法。注意过去完成时表示过去的过去含义。 3.The bus ______ for five minutes when Tim arrived at the station. A. went B. has left C. had left D. had been away 【答案】D 【解析】【分析】句意:当迪姆到达车站时,公交离开了五分钟了。表示到达车站前已经发生或完成的动作,句子用过去完成时态;leave是一个非延续性的动词,不能与表示一段时间的状语for…连用,可以表达成be away,形容词表示状态,可以与表示一段时间的状语连用。故选D。 【点评】本题考查过去完成时以及延续性动词的用法。 4.The girl sitting next to me on the plane was very nervous, for she before. A. didn't fly B. hasn't flown C. hadn't flown D. wasn't flying 【答案】C 【解析】【分析】句意:飞机上坐在我旁边的女孩很紧张,因为她以前没有坐过飞机。根据上文的句子The girl sitting next to me on the plane was very nervous的一般过去时态可知,这里空白处所表示的是过去的过去,谓语应该用过去完成时态:had+动词的过去分词。根据句意,故答案为C。 【点评】考查过去完成时态。掌握过去完成的意义和用法:表示过去的过去的动作或状

英语现在进行时用法总结(完整)

英语现在进行时用法总结(完整) 一、单项选择现在进行时 1.Why are you here? You are supposed to ______ the experiment in the lab. A.perform B.be performing C.have performed D.be performed 【答案】B 【解析】 试题分析:考查被动语态。句意:你为什么在这里?你应该在实验室里做实验。(是别人让他在实验室做实验)故选B项。 考点:考查被动语态 【名师点睛】 被动语态由“助动词be+及物动词的过去分词”构成。人称、数和时态的变化是通过be的变化表现出来的。把主动语态的宾语变为被动语态的主语。把谓语变成被动结构(be+过去分词),根据被动语态句子里的主语的人称和数,以及原来主动语态句子中动词的时态来决定be的形式。把主动语态中的主语放在介词by之后作宾语,将主格改为宾格。 2.—I some courses at university,so I can’t work full time at the moment. A.take B.am taking C.took D.have taken 【答案】B 【解析】 试题分析:考查动词的时态。句意:因为我正在上学,所以不能在这时候做全职的工作。根据下方提到so I can’t work full time at the moment 可知我正在上学,故选B 项。 考点 : 考查动词的时态 3.The young parents _________ too much a pet of their son, which is bound to destroy him in the end. A.have made B.are making C.made D.will be making 【答案】B 【解析】 试题分析:句意:这对年轻的父母太宠爱他们的儿子,这一定会最后毁了他。词组:make a pet of sb 宠爱某人宠爱某人,因为指现阶段一直的行为,用现在进行时,所以选B。 考点:考查动词时态 4.—Have you seen recently? —No, but I _______ dinner with him on Friday. A.had B.have had C.am having D.was having 【答案】C 【解析】 试题分析:句意:---你最近见过Sean吗? ---不,但是我周五要和他一起吃饭。A.had一般过去时;B.have had现在完成时;C.am having是现在进行时表将来;D.was having

现在完成时延续性与暂短性动词用法

现在完成时(短暂性动词与延续性动词)的用法 基本结构:主语+have/has+过去分词(done) ①肯定句:主语+have/has+过去分词+其他 ②否定句:主语+have/has+not+过去分词+其他 ③一般疑问句:Have/Has+主语+过去分词+其他 ④特殊疑问句:特殊疑问词+一般疑问句(have/has+主语+过去分词+其他)(1)现在完成时用来表示现在之前已发生过或完成的动作或状态,但其结果却和现在有联系,也就是说,动作或状态发生在过去但它的影响现在还存在. I have spent all of my money.(含义是:现在我没有钱花了.) Jane has laid the table.(含义是:现在桌子已经摆好了.) Michael has been ill.(含义是:现在仍然很虚弱) He has returned from abroad. (含义是:现在已在此地) (2)现在完成时可以用来表示发生在过去某一时刻的,持续到现在的动作(用行为动词表示)或状态(be动词表示)常与for(+时间段),since(+时间点或过去时的句子)连用. Mary has been ill for three days. I have lived here since 1998. 注(超重要):瞬间动词(buy,die,join,lose……)不能直接与for since 连用。要改变动词 come-be go out-be out finish-be over open-be open die-be dead 1.have代替buy My brother has had(不能用has bought) this bike for almost four years. 2、用keep或have代替borrow I have kept(不能用have borrowed) the book for quite a few days. 3、用be替代become How long has your sister been a teacher? 4、用have a cold代替catch a cold Tom has had a cold since the day before yesterday. 5、用wear代替put on b)用“be+形容词”代终止性动词 1、be+married代marry 2、be+ill代fall (get) ill 3、be+dead代die 4、be+asleep代fall (get) asleep 5、be+awake代wake/wake up 6、be+gone代lose,die,sell,leave 7、be+open代open 8、be closed代close/shut 9、be+missing(gone,lost)代lose c)用“be+副词”代终止性动词 1“be+on”代start,begin 2“be+up”代get up 3“be+back(to)”代return to,come back to,go back to 4“be here (there)”代come(arrive,reach,get) here或go (arrive,reach,get) there等等

过去完成时用法小结

过去完成时用法小结 一、过去完成时适用场合 1. 过去完成时表示在过去某一时间或动作以前已经完成了的动作。这个过去的时间常用by,before等介词短语或一个时间状语从句表示,也可以暗含在上下文中。 I had finished my homework before supper.我在晚饭前就把作业做完了。 The play had already started when we got to the theatre. 我们到剧场时戏已经开始了。 By the end of June they had treated over 10,000 patients. 到六月底他们已经治疗了一万多病人。 2. 过去完成时还可表示过去某一时刻之前发生的动作或状态持续到过去某个时间或还要持续下去,常与for,since等词连用。如: He had served in the army for ten years before he retired last year. 他在部队干了十年,去年退役了。 He told me that he had known her since he was a child. 他告诉我他从小就认识她。 He had learned English for eight years before he went to England for further study. 他在去英国深造前,已学了八年英语。 3. 在一段情景连贯的文字中,先发生的事放在后面叙述时,要用过去完成时。如: Tom flew home, but his father had already died. 汤姆乘飞机回家,他的父亲却已经去世了。4. 过去完成时也用于hardly...when...(刚…就…), no sooner...than... (刚…就…), It was the first time + that分句等一些固定句型中。 He had no sooner left the room than they began to talk about him. 他刚离开房间,他们就议论起他来。 We had hardly begun when we were told to stop. 我们刚开始就被叫停。 It was the first time that he had ever spoken to me in such a tune.他用这样的语调跟我讲话,这是第一次。 二、过去完成时与一般过去时的比较 1. 当一个由before, after, as soon as 等连词引导的从句所表示的动作和主句的动作紧接着发生时,两个动作均可用一般过去时来表示。 We had breakfast after we did morning exercises. 做完早操后,我们吃早饭。 The train started to move just before he reached the platform. 他到月台时火车刚开走。 They started ploughing as soon as they got to the fields. 他们一到地里就开始耕地。 2. 按时间顺序叙述两个或两个以上接连发生的动作时,用一般过去时。 He entered the room, turned on the light and sat down at the table. 他走进屋子,打开灯,坐在桌子旁。 3. 在表示某人过去未曾完成的“心愿”、“打算”、“计划”、“想法”、“许诺”等时,hope, mean, plan, think, intend等谓语动词常用过去完成时。 I had hoped to be back last night, but I didn’t catch the train. 我本来希望昨晚回来的,但没搭上火车。 We had thought to return early but they wouldn’t let us go. 我们本想早回来的,但他们不让我们走。 4. 在表示过去的句子中出现常与完成时态连用的词,如:already,yet,since,for,ever,

英语现在进行时用法详解

英语现在进行时用法详解 一、单项选择现在进行时 1.Justin a book about his adventures in Tibet.I hope he can find a good publisher when it is finished. A.was writing B.is currently writing C.has already written D.wrote 【答案】B 【解析】 这题考查时态,从后面的I hope he can find a good publisher when it is finished. 我希望他好后可以找个出版商,说明是现在正在写。选B。 2.—Do you have any plan for this Sunday? —Yes, I ______ shopping with my friends. A.go B.am going C.went D.have gone 【答案】B 【解析】 试题分析:句意:---这个星期天你有计划吗?—是的,我要和朋友一起去购物.这里用be doing现在进行时表示一般将来时,所以选B。 考点:考查时态 3.(年(春)重庆市高三考前冲刺测试卷)3. May I see your ticket please? I think you _____ in my seat. --Oh, you are right. I'm terribly sorry. A.sit B.are sitting C.will sit D.sat 【答案】B 【解析】 句义:—我可以看一下你的票吗?我认为你坐了我的位置。—你是对的,对不起。根据句义可知本句叙述的是正在发生的事情,所以使用一般现在时。故B正确。 4.(年(春)重庆市高三考前冲刺测试卷)8. Asia ______ the popularity of South Korean culture that has been flooding other countries since turn of the century. A.had been increasingly feeling B.increasingly felt C.will increasingly feel D.is increasingly feeling 【答案】D 【解析】 句义:自从世纪之交以来,其他国家正在感觉韩国文化正在席卷其他国家。本句使用现在进行时表示最近一段时间以来一直发生的事情,或者存在的状态,所以使用现在进行时。故D正确。

英语中现在完成时的基本用法讲解

英语中现在完成时的基本用法讲解 (含义:我对他有所了解了,现在能够谈谈他的情况了。 )Have you been to Paris?你去过巴黎吗?(含义:如果你去过,你可以谈谈巴黎的情况。 如果你没有去过,我建议你去看看,或者我现在给你介绍一下巴黎的情况。 )We have never heard of such a man.我们从来没有听说过这样的人。 (含义:因此我们对“他一无所知,你问我们也是白问。 )模仿造句:1.因此,我们以前参观莫斯科(Moscow)。 2.你弟弟去去印度(India)吗? 3.这些孩子从未用过电脑。 2.现在完成时,表示过去某种行为的结果对现在有直接的影响Tom has lost his pen.汤姆的钢笔已经丢了。 (含义:结果是现在没笔用,必须借一支笔,或者买一支笔。 )Dad, I have finished my homework.爸爸,我已经做完家庭作业了。 (含义:现在应该可以让我出去玩会或者看下电视了。 )He has gone to Hong Kong.他已经去香港了。 (含义:结果是他不在这里,你在这儿见不到他了。 )模仿造句:1.杰克已把铅笔弄断了。 2.妈,我已经吃过中饭了。 3.玛丽已经去广州了。 3.现在完成时,表示某经历的时间长度(一般用for引导的时间状

语)Mr. Smith has been in China for 10 years.史密斯先生在中国待过10年了。 (含义:他待的时间够长的了,他对中国的情况很熟了,或者他的中文自然讲得很棒了。 )Jane has stayed in Shanghai for 3 days.珍妮在上海待了两天。 (含义:珍妮待在上海的时间短,对这里的情况还很不熟悉,或者她不应该马上离开,应该多玩几天。 )I have taught English for 10 years.我已经教英语10年了。 (含义:我教英语的时间已经非常长了,有丰富的教学经验了。 )模仿造句:1.简(Jane)已经在杭州住了8年了。 2.我妈已经在这家公司工作20年了。 3.今天我已经练英语口语2个小时了。 本文作者:丹丹英语(公众号:英语语法学习)本文已获转载授权,版权归作者所有,如需转载,请联系原微信公众号“英语语法学习。

中考考点_过去完成时知识点汇总(全)

中考考点_过去完成时知识点汇总(全) 一、初中英语过去完成时 1.—How long you TV by the time I called you? —For about two hours A. had; watched B. have; watched C. did; watch D. were; watching 【答案】 A 【解析】【分析】由句中的by the time可判断.这里用过去完成时,故选A。句意是:—到我打电话给你为止,你已经看了多长时间的电视了?—大约两个小时。 【点评】本题考查过去完成时的用法。 2.We are too tired. Please stop __________ a rest. A. to have B. having C. have D. has 【答案】 A 【解析】【分析】句意:我们是在太累了,停下来休息一下吧。stop to have a rest.固定搭配故选A 【点评】注意时态一致, 3.Jake _____his key in the office so he had to wait until his wife _______ home. A. has forgotten … comes B. forgot… come C. had left… came D. had left…would come 【答案】 C 【解析】【分析】句意:杰克把他的钥匙丢在办公室了,因此他不得不等到他的妻子回家。结合语境可知前文描述的是过去某时前已经完成的动作,故用过去完成时态。下文指的是过去某时的动作,故用一般过去时态。选C。 【点评】英语中的时态主要是借助于时间状语与上下文语境来进行判断。解答此类题型,首先要注意句子中的时间状语,如果没有则要通过分析上下文,结合语境来判断句子的时态。 4.By the end of last month, Jane _____ enough money for the poor sick boy. A. raised B. would raise C. had raised D. has raised 【答案】 C 【解析】【分析】句意:在上个月末,珍已经为贫穷的生病的孩子筹集到了足够的钱。根

相关文档
相关文档 最新文档