Flexible Mortgage

Www Flexiblemorgage Tag Mario Flexible Mortgage turbo vision 是什么软件?就是turboC吗?? - C/C++ / C语言

Www Flexiblemorgage Tag Mario Flexible Mortgage

  • Tag searchsearch Flexiblemorgage Tag search
  • Flexiblemorgage s Www arh Flexiblemorgage Flexiblemorgage s Mario a Flexiblemorgage c Www Mario
  • #2楼 得分:10回复于:2001-05-23 15:36:00
    现在还有人用吗?
    • holyfire
    • (谁最衰啊你最衰,谁最帅啊我最帅)
    • 等 级:
    • 2

      4

      3

    #3楼 得分:0回复于:2001-05-23 15:41:00
    事实上它是Broland公司开发的一套FrameWork

    soft10/tvision-0.6.tar.gz
    该连接是详细说明。


      电脑技术信息
    Computer   Technology   Information
    1999年   第10期   No.10   1999
       

    --------------------------------------------------------------------------------
     
    Turbo   Vision编程中视图通讯问题初探

    李振海

    摘 要 本文探讨了Turbo   Vision中视图间的数据通讯问题,并对Turbo   Vision的事件机制做了简要介绍。
    关键词 Turbo   Vision 视图 数据通讯

    1.   引言
      Turbo   Vision是一个完整的面向对象的函数库,它提供给用户一个窗口式的、面向对象的程序框架。Turbo   Vision的两项主要内容是内置的窗口支持和事件处理,前者包括一系列有用的视图(菜单、对话框等),后者提供了事件驱动程序的设计方法,本文主要对用Turbo   Vision进行事件驱动程序设计中视图间的通讯问题谈几点看法。

    2.   Turbo   Vision的事件机制
      事件是一个记录,它的核心是一个称作“What”的字类型域。What域的数字值描述事件的种类,事件记录的其它部分保存着有关该事件的特别的信息:击键事件的键扫描码,鼠标事件的位置信息和鼠标器按钮状态信息。事件有四种:鼠标事件(evMouse)、击键事件(ev-Key   Down)、消息事件(evBroad   Cast)、“空”事件(ev-Nothing)。每类事件都定义一掩码,对象能迅速判定发生的事件属于一般事件中的哪一类,例如判断一事件是否鼠标事件只须用下面一条语句,而不必依次判断是哪一种鼠标事件。
      if   Event.What   and   evMouse   <>   o   then…
      TApplication对象的Run方法通过对TGroup.Execute方法的调用,实现对事件的寻找、检查并建立事件记录,然后由Handle   Event方法把事件传送到合适视图,事件的传递途径有三种:位置、聚焦点和“广播”事件。位置事件对应鼠标事件、聚焦事件对应击键事件或命令事件   (evCommand)、广播事件是“广播节目”(evBroadcast)或用户自定义的消息,视图间正是通过广播事件进行通讯的。
      最后,大多数事件都以被转换成某种命令而结束,对位置事件和聚焦事件来说,对象通常产生一个命令以响应按鼠标键或击键操作,这是通过对Handle   Event方法的调用来实现的。

    3.视图间的通讯
      Turbo   Vision中的视图都是数据被封装起来的对象,它们间的数据传递问题,成为用Turbo   Vision进行事件驱动设计中的难点。
      视图之间是通过广播事件进行通讯的,通过下面一个程序,可以了解视图间是怎样进行通讯的。StdDlg单元包含一个TFileDialog会话框。视图TFile   Dialog有一个TFile   List子视图用来显示磁盘目录,在磁盘目录上方还有一个File   Input   Line子视图显示当前选取的要加载的文件名。每次用户在File   List中选取另外一个文件时,FileList通知FileInputLine显示相应的文件名。
      例:procedure   TFileList.FocusItem(Item:Integer);
         var
          Event:TEvent;
         begin
          TSortedlistBox.FocusItem(Item);
            Message(Top   View,evBroadeast,cmFileFocused,list^.At(Item);
         end;
         procedure   TFileInputLine.HandeEvent(var   Event:TEvenent);
         var
              Name:NameSty;
         begin
               IInputLine.HandleEvext(Event);
         if(Event.What=evBroadcast)and(Event.Command=cmFileFocused)and(State   and   sfSelected=0)then
      begin
         if   PSearchRec(Event.Infoptr)^.Attr   and   Directong <> 0   then
                 Data^:=PSeachRec(Event.InfoPtr)^.Name+ '\’+
            PFileDialog(Owner)^.WcldCord
           else   Date^:=PSearch(Event.InfoPtr)^.Name;
           Draw   View
         end;
         end;
      首先,TFileList通过继承来的方法FocusItem(Item)把Focused域置为Item,使给定的项聚焦,即所选的文件被聚焦,然后调用Message方法,创建一个命令事件,采用广播事件的方式,将cmFile   Focused命令和内容List^.At(Item)发送出去,调用物主视图Top-View   的HandleEvent方法(此时为TFile   Dialog)对此事件进行处理。TFile   Dialog   得到cmFileFocused   命令后,本身无法处理该命令,就把它传给各个子视图(包括TFileInputLine),   TFileInputLine得到   cmFile   Focused   命令后,调用其   Handle   Event处理该命令。将内容   List^.At(Item)写入输入行中。
      程序中可以利用上面的通讯方式来查寻是否已经打开一个指定窗口,只需发送一条广播消息:
      Are   You   There:=Message(Desk   Top,evBroadcast,cmFindWindow,nil);在指定窗口的Handle   Event   方法中加一条判断语句消除该事件以响应cm   FindWindow命令。
      case   Event.Command   of
      …
      cm   Find   Window:Clear   Event(Event);
      …
      end;
      该窗口若已经打开,则把事件记录的What域置为evNothing,并把事件记录的   IntoPtr域置成   @Slef.Message方法读进这些域,并返回一个指向处理该消息事件的对象的指针。可以接着发送广播事件的代码段,加入:
      if   Are   You   There=nil   then
         CreatWatchWindow  {}
      else   Are   You   There^.Select;
      这样,若指定窗口已打开,就把它拉到前面来;否则就创建一个指定窗口。
      利用上面所说的通讯方法,用户可以在应用程序中建立一个上下文敏感的求助系统。

    4.结束语
      上面简要介绍了Turbo   Vision的视图间通讯的一般方法。通过用Turbo   Vision编程,不仅可以提高自己面向对象的编程能力,而且对事件驱动程序的设计方法也有了一些了解,其中的细节问题还需大家在实际编程中体会。

    作者单位:深圳市红岭中学(深圳518028)

    参考文献
      [1]《Turbo   pascal面向对象程序设计技术与工具》,南京大学出版社,1996。