一生delphi编程经验

本人今天把自已以前的一些delphi编程经验进行个小总结,总结完后突有一个  
  这样的想法:如果我把这些总结发给网上的delphi朋友,而他们如果也有些自已  
  的delphi编程小结,也发给我(如果愿意的话),这样大家的进步肯定是很快的。      
    本人email:yesterday97@hotmail.com  
   
   
  (1).按下ctrl和其它键之后发生一事件。  
          procedure   TForm1.FormKeyDown(Sender:   TObject;   var   Key:   Word;  
              Shift:   TShiftState);  
          begin  
              if   (ssCtrl   in   Shift)   and   (key   =67)   then  
                    showmessage('keydown   Ctrl+C');  
          end;  
  (2).Dbgrid中用Enter键代替Tab键.  
        procedure   TForm1.DBGrid1KeyPress(Sender:   TObject;   var   Key:   Char);  
        begin  
            if   Key   =   #13   then  
            if   ActiveControl   =   DBGrid1   then  
            begin  
                  TDBGrid(ActiveControl).SelectedIndex   :=   TDBGrid(ActiveControl).SelectedIndex   +   1;  
                  Key   :=   #0;  
            end;  
        end;  
  (3).Dbgrid中选择多行发生一事件。  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          var  
          i:integer;  
          bookmarklist:Tbookmarklist;  
          bookmark:tbookmarkstr;  
          begin  
              bookmark:=adoquery1.Bookmark;  
              bookmarklist:=dbgrid1.SelectedRows;  
              try  
              begin  
                  for   i:=0   to   bookmarklist.Count-1   do  
                  begin  
                      adoquery1.Bookmark:=bookmarklist[i];  
                      with   adoquery1   do  
                      begin  
                          edit;  
                          fieldbyname('mdg').AsString:=edit2.Text;  
                          post;  
                      end;  
                  end;  
              end;  
              finally  
              adoquery1.Bookmark:=bookmark;  
              end;  
          end;  
  (4).Form的一个出现效果。    
          procedure   TForm1.Button1Click(Sender:   TObject);  
          var  
          r:thandle;  
          i:integer;  
          begin  
              for   i:=1   to   trunc(width/1.414)   do  
              begin  
                  r:=CreateEllipticRgn(trunc(width/2)-i,trunc(height/2)-i,trunc(width/2)+i,trunc(height/2)+i);  
                  SetWindowRgn(handle,r,true);  
                  Application.ProcessMessages;  
                  sleep(1);  
              end;  
          end;  
  (5).用Enter代替Tab在编辑框中移动隹点。  
          procedure   TForm1.FormKeyPress(Sender:   TObject;   var   Key:   Char);  
          begin  
              if   key=#13   then  
                  begin  
                      if   not   (Activecontrol   is   Tmemo)   then  
                      begin  
                          key:=#0;  
                          keybd_event(vk_tab,mapvirtualkey(vk_tab,0),0,0);  
                      end;  
                  end;  
          end;  
  (6).Progressbar加上色彩。  
          const  
          {$EXTERNALSYM   PBS_MARQUEE}  
          PBS_MARQUEE   =   08;  
          var  
              Form1:   TForm1;  
          implementation  
          {$R   *.dfm}  
          uses  
          CommCtrl;  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          begin  
              //   Set   the   Background   color   to   teal  
              Progressbar1.Brush.Color   :=   clTeal;  
              //   Set   bar   color   to   yellow  
              SendMessage(ProgressBar1.Handle,   PBM_SETBARCOLOR,   0,   clYellow);  
          end;  
  (7).住点移动时编辑框色彩不同。  
          procedure   TForm1.Edit1Enter(Sender:   TObject);  
          begin  
              (sender   as   tedit).Color:=clred;  
          end;  
          procedure   TForm1.Edit1Exit(Sender:   TObject);  
          begin  
              (sender   as   tedit).Color:=clwhite;  
          end;  
  (8).备份和恢复  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          begin  
              if   OpenDialog1.Execute   then  
              begin  
                  try  
                      adoconnection1.Connected:=False;  
                      adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist   Security   Info=False;User   ID=sa;Initial   Catalog=master;Data   Source=FRIEND-YOFZKSCO;'+  
                      'Use   Procedure   for   Prepare=1;Auto   Translate=True;Packet   Size=4096;Workstation   ID=FRIEND-YOFZKSCO;Use   Encryption   for   Data=False;Tag   with   column   collation   when   possible=False';  
                      adoconnection1.Connected:=True;  
                      with   adoQuery1   do  
                      begin  
                          Close;  
                          SQL.Clear;  
                          SQL.Add('Backup   DataBase   sfa   to   disk   ='''+opendialog1.FileName+'''');  
                          ExecSQL;  
                      end;  
                  except  
                      ShowMessage('±?·Y꧰ü');  
                  Exit;  
                  end;  
              end;  
              Application.MessageBox('1§?2?ú£?êy?Y±?·Y3é1|','ìáê?',MB_OK   +   MB_ICONINFORMATION);  
          end;  
          procedure   TForm1.Button2Click(Sender:   TObject);  
          begin  
              if   OpenDialog1.Execute   then  
              begin  
                  try  
                      adoconnection1.Connected:=false;  
                      adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist   Security   Info=False;User   ID=sa;Initial   Catalog=master;Data   Source=FRIEND-YOFZKSCO;'+  
                      'Use   Procedure   for   Prepare=1;Auto   Translate=True;Packet   Size=4096;Workstation   ID=FRIEND-YOFZKSCO;Use   Encryption   for   Data=False;Tag   with   column   collation   when   possible=False';  
                      adoconnection1.Connected:=true;  
                      with   adoQuery1   do  
                      begin  
                          Close;  
                          SQL.Clear;  
                          SQL.Add('Restore   DataBase   sfa   from   disk   ='''+opendialog1.FileName+'''');  
                          ExecSQL;  
                    end;  
                except  
                    ShowMessage('???′꧰ü');  
                    Exit;  
                end;  
            end;  
            Application.MessageBox('1§?2?ú£?êy?Y???′3é1|','ìáê?',MB_OK   +   MB_ICONINFORMATION);  
          end;  
(9).查找局域网上的sqlserver报务器。  
          uses   Comobj;  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          var  
          SQLServer:Variant;  
          ServerList:Variant;  
          i,nServers:integer;  
          sRetValue:String;  
          begin  
              SQLServer   :=   CreateOleObject('SQLDMO.Application');  
              ServerList:=   SQLServer.ListAvailableSQLServers;  
              nServers:=ServerList.Count;  
              for   i   :=   1   to   nservers   do  
              ListBox1.Items.Add(ServerList.Item(i));  
              SQLServer:=NULL;  
              serverList:=NULL;  
          end;  
  (10).窗体打开时的淡入效果。  
          procedure   TForm1.FormCreate(Sender:   TObject);  
          begin  
              AnimateWindow   (Handle,   400,   AW_CENTER);  
          end;  
  (11).动态创建窗体。  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          begin  
              try  
                  form2:=Tform2.Create(self);  
                  form2.ShowModal;  
              finally  
                  form2.Free;  
              end;  
          end;  
          procedure   TForm1.FormClose(Sender:   TObject;   var   Action:   TCloseAction);  
          begin  
              action:=cafree;  
          end;  
          procedure   TForm1.FormDestroy(Sender:   TObject);  
          begin  
              form1:=nil;  
          end;  
  (12).复制文件。  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          begin  
              try  
              copyfileA(pchar('C:/AAA.txt'),pchar('D:/AAA.txt'),false);  
              except  
              showmessage('sfdsdf');  
              end;  
          end;  
  (13).复制文件夹。  
          uses   shellAPI;  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          var  
                lpFileOp:   TSHFileOpStruct;  
          begin  
              with   lpFileOp   do  
              begin  
                  Wnd:=Self.Handle;  
                  wfunc:=FO_COPY;  
                  pFrom:=pchar('C:/AAA');  
                  pTo:=pchar('D:/AAA');  
                  fFlags:=FOF_ALLOWUNDO;  
                  hNameMappings:=nil;  
                  lpszProgressTitle:=nil;  
                  fAnyOperationsAborted:=True;  
            end;  
            if   SHFileOperation(lpFileOp)<>0   then  
            ShowMessage('删除失败');  
          end;  
  (14).改变Dbgrid的选定色。  
          procedure   TForm1.DBGrid1DrawDataCell(Sender:   TObject;   const   Rect:   TRect;  
          Field:   TField;   State:   TGridDrawState);    
          begin  
              if   gdSelected   in   state   then  
              SetBkColor(dbgrid1.canvas.handle,clgreen)  
              else  
              setbkcolor(dbgrid1.canvas.handle,clwhite);  
              dbgrid1.Canvas.TextRect(rect,0,0,field.AsString);  
              dbgrid1.Canvas.Textout(rect.Left,rect.Top,field.AsString);  
          end;  
  (15).检测系统是否已安装了ADO。  
          uses   registry;  
          function   Tform1.ADOInstalled:Boolean;  
          var  
          r:TRegistry;  
          s:string;  
          begin  
              r   :=   TRegistry.create;  
              try  
              with   r   do  
              begin  
                  RootKey   :=   HKEY_CLASSES_ROOT;  
                  OpenKey(   '/ADODB.Connection/CurVer',   false   );  
                  s   :=   ReadString('');  
                  if   s   <>   ''   then   Result   :=   True  
                  else   Result   :=   False;  
                  CloseKey;  
              end;  
              finally  
                r.free;  
              end;  
          end;  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          begin  
            if   ADOInstalled   then   showmessage('this   computer   has   installed   ADO');  
          end;  
  (16).取利主机的ip地址。  
          uses   winsock;  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          var  
          IP:string;  
          IPstr:String;  
          buffer:array[1..32]   of   char;  
          i:integer;  
          WSData:TWSAdata;  
          Host:PHostEnt;  
          begin  
              if   WSAstartup(2,WSData)<>0   then  
              begin  
                  showmessage('WS2_32.DLL3?ê??ˉ꧰ü.');  
                  exit;  
              end;  
              try  
                  if   GetHostname(@buffer[1],32)<>0   then  
                  begin  
                      showmessage('??óDμ?μ??÷?ú??.');  
                  exit;  
              end;  
              except  
                  showmessage('??óD3é1|·μ???÷?ú??');  
                  exit;  
              end;  
              Host:=GetHostbyname(@buffer[1]);  
              if   Host=nil   then  
              begin  
                  showmessage('IPμ??·?a??.');  
                  exit;  
              end  
              else  
              begin  
                  edit2.Text:=Host.h_name;  
                  edit3.Text:=chr(host.h_addrtype+64);  
                  for   i:=1   to   4   do  
                  begin  
                    IP:=inttostr(ord(host.h_addr^[i-1]));  
                    if   i<4   then  
                    ipstr:=ipstr+IP+'.'  
                  else  
                    edit1.Text:=ipstr+ip;  
                  end;  
                end;  
                WSACleanup;  
          end;  
  (17).取得计算机名。  
          function   tform1.get_name:string;  
          var     ComputerName:   PChar;     size:   DWord;  
          begin  
                  GetMem(ComputerName,255);  
                  size:=255;  
                  if   GetComputerName(ComputerName,size)=False   then  
                        result:=''  
                  else  
                        result:=ComputerName;  
                  FreeMem(ComputerName);  
          end;  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          begin  
              label1.Caption:=get_name;  
          end;  
(18).取得硬盘序列号。  
          function   tform1.GetHDSerialNumber:   LongInt;          
          {$IFDEF   WIN32}  
          var    
              pdw   :   pDWord;    
              mc,   fl   :   dword;    
          {$ENDIF}    
          begin    
              {$IfDef   WIN32}    
              New(pdw);    
              GetVolumeInformation('c:/',nil,0,pdw,mc,fl,nil,0);    
              Result   :=   pdw^;  
              dispose(pdw);    
            {$ELSE}  
              Result   :=   GetWinFlags;  
              {$ENDIF}    
          end;  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          begin  
              edit1.Text:=inttostr(gethdserialnumber);  
          end;  
  (19).限定光标移动范围。  
          procedure   TForm1.Button1Click(Sender:   TObject);  
          var  
          rect1:trect;  
          begin  
              rect1:=button2.BoundsRect;  
              mapwindowpoints(handle,0,rect1,2);  
              clipcursor(@rect1);  
          end;  
          procedure   TForm1.Button2Click(Sender:   TObject);  
          var  
          screenrect:trect;  
          begin  
              screenrect:=rect(0,0,screen.Width,screen.Height);  
              clipcursor(@screenrect);  
          end;  
  (20).限制edit框只能输入数字。  
          procedure   TForm1.Edit1KeyPress(Sender:   TObject;   var   Key:   Char);  
          begin  
              if   not   (key   in   ['0'..'9','.',#8])   then  
              begin  
                  key:=#0;  
                  Messagebeep(0);  
              end;  
          end;  
  (21).dbgrid中根据任一条件某一格变色。  
          procedure   TForm_main.DBGridEh1DrawColumnCell(Sender:   TObject;  
          const   Rect:   TRect;   DataCol:   Integer;   Column:   TColumnEh;  
          State:   TGridDrawState);  
          begin  
              if   (trim(DataModule1.ADOQuery1.FieldByName('dczt').AsString)='OK')   then  
              begin  
                  if   datacol=6   then  
                  begin  
                      DbGrideh1.Canvas.Brush.Color:=clGradientActiveCaption;  
                      DbGrideh1.DefaultDrawColumnCell(Rect,datacol,column,state);  
                  end;  
              end;  
          end;  
  (22).打开word文件。  
          procedure   TfjfsglForm.SpeedButton4Click(Sender:   TObject);  
          var  
          MSWord:   Variant;  
          str:string;    
          begin  
              if   trim(DataModule1.adoquery27.fieldbyname('fjmc').asstring)<>''   then  
              begin  
                  str:=trim(DataModule1.ADOQuery27.fieldbyname('fjmc').AsString);  
                  MSWord:=   CreateOLEObject('Word.Application');//  
                  MSWord.Documents.Open('d:/Program   Files/Common   Files/Sfa/'+str,   True);//  
                  MSWord.Visible:=1;//  
                  str:='';  
                  MSWord.ActiveDocument.Range(0,   0);//  
                  MSWord.ActiveDocument.Range.InsertAfter(str);//?úWord?D???ó×?·?'Title'  
                  MSWord.ActiveDocument.Range.InsertParagraphAfter;  
              end  
              else  
              showmessage('');  
          end;  
  (23).word文件传入和传出数据库。  
          uses   IdGlobal;  
          procedure   TdjhyForm.SpeedButton2Click(Sender:   TObject);  
          var  
          sfilename:string;  
          function   BlobContentTostring(const   Filename:string):string;  
          begin  
              with   Tfilestream.Create(filename,fmopenread)     do  
              try  
                  setlength(result,size);  
                  read(pointer(result)^,size);  
              finally  
                  free;  
              end;  
          end;  
          begin  
              if   opendialog1.Execute   then  
              begin  
                  sfilename:=opendialog1.FileName;  
                  DataModule1.ADOQuery14.Edit;  
                  DataModule1.ADOQuery14.FieldByName('word').AsString:=blobcontenttostring(sfilename);  
                  DataModule1.ADOQuery14.Post;  
              end;  
          end;  
          procedure   TdjhyForm.SpeedButton1Click(Sender:   TObject);  
          var  
          sfilename:string;  
          bs:Tadoblobstream;  
          begin  
              bs:=Tadoblobstream.Create(TBLOBfield(DataModule1.ADOQuery14.FieldByName('word')),bmread);  
              try  
                  sfilename:=extractfilepath(application.ExeName)+trim(DataModule1.adoquery14.fieldbyname('hybh').AsString);  
                  sfilename:=sfilename+'.'+'doc';  
                  bs.SaveToFile(sfilename);  
                  try  
                      djhyopenform:=Tdjhyopenform.Create(self);  
                      djhyopenform.olecontainer1.CreateObjectFromFile(sfilename,false);  
                      djhyopenform.OleContainer1.Iconic:=true;  
                      djhyopenform.ShowModal;  
                  finally  
                      djhyopenform.Free;  
                  end;  
              finally  
                  bs.free;  
              end;  
          end;  
  (24).中文标题的提示框。  
          procedure   TdjhyForm.SpeedButton5Click(Sender:   TObject);  
          begin  
              if   Application.MessageBox('',   Mb_YesNo   +   Mb_IconWarning)   =Id_yes   then   DataModule1.ADOQuery14.Delete;  
          end;  
  (25).运行一应用程序文件。  
          WinExec('HH.EXE   D:/Program   files/common   files/MyshipperCRM   e-sales   help/MyshipperCRM   e-sales   help.chm',SW_NORMAL);  

目录清单:  01界面设计           制作一个屏幕保护程序           制作一个漂亮的VCD播放器           制作几何形状的窗体           制作桌面小精灵           制作相框           实现带阴影效果的画框           给Memo组件的显示区域加边框  02系统设置           一个托盘程序           如何实现目录的复制、删除和移动           如何改换壁纸和启动、关闭屏保           文件管理器           格式化磁盘           获取Windows、System和Temp目录           获取文件日期信息           获取驱动器信息           重启或关闭计算机           隐藏任务栏和桌面图标  03硬件访问与控制           实例1-获取和设置显示器模式           实例10 两种不同的方法获取端口信息           实例2-电源电池信息           实例3-内存状态信息           实例4-CPU型号信息           实例5-硬盘和光盘的操作           实例6-获取不同的声音播放设备           实例7-键盘相关设置           实例8-鼠标相关设置           实例9-从注册表中读取各类硬件信息  04控件应用           LISTBOX控件的折行显示           在控件中添加消息处理           将系统中的com接口包装为控件           带背景图的标签           我的资源管理器           打造自己的文件分割器           编写一个滚动提示控件           自制邮件发送客户端  05文件操作           Delphi中的INI文件编程           删除或移动正在使用的文件           如何在Delphi中操作Excel           实现应用程序的文件拖放功能           将EXE文件转换成SWF文件           将SWF文件转换成EXE文件           文件捆绑           统计中英文字个数  06图形图像多媒体           实例一--艺术字效果           实例七---photoshop图层效果           实例三---图象效果处理           实例九---在IntraWeb中显示图片数据           实例二--渐变色和动画矩形效果           实例五--编织带           实例八--动画屏保           实例六--镜框效果           实例十--matlab结合           实例十--电子地图开发之GIS组件--Mapobject深入开发           实例四---scanline属性  07数据库应用           实例1  Session获取BDE信息           实例10   决策图的使用           实例11  ThreadedIBX           实例2  可视化创建数据表格           实例3  SQL语句的使用           实例4  “一对多表”的设计           实例5   文本和数据记录的转换           实例6 利用ADO的从SQL Server 2000中读取数据           实例7  多媒体数据库的使用           实例8  IntraWeb技术的实现           实例9  Rave报表的数据库使用  08网络与通讯           实例一 用DELPHI实现网络信使服务           实例七 NetClock           实例三 断点续传           实例二 升级精灵           实例五 网络文件传输           实例六 Ping           实例四 邮件群发  09趣味游戏           实例1--小狗过桥游戏           实例10--深入opengl游戏           实例2--键盘练习           实例3--字母拼图游戏           实例4--乒乓球           实例5-6--打地鼠---2个部分           实例7-8--扫雷--2个部分           实例9--一个简单的opengl游戏
Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作——Delphi的每一个设计细节,都将带给您一份欣喜。  1.1 Delphi基本概念介绍  1.1.1 Delphi的基本形式  Delphi实际上是Pascal语言的一种版本,但它与传统的Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”中加入您的程序。缺省的应用程序是一个空白的窗体(Form),您可以运行它,结果得到一个空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。Delphi已经为您做好了一切基础工作——程序框架就是一个已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。 在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应Windows的基本操作(移动、缩放等)外,它只是接受用户的输入,然后再忽略。Delphi把Windows编程的回调、句柄处理等繁复过程都放在一个不可见的Romulam覆盖物下面,这样您可以不为它们所困扰,轻松从容地对可视部件进行编程。 1.1.2 面向对象编程的概念  面向对象的程序设计(Object-Oriented Programming,简记为OOP)是Delphi诞生的基础。OOP立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进Windows编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。而Delphi是完全面向对象的,这就使得Delphi成为一种触手可及的促进软件重用的开发工具,从而具有强大的吸引力。 一些早期的具有OOP性能的程序语言如C++,Pascal,Smalltalk等,虽然具有面向对象的特征,但不能轻松地画出可视化对象,与用户交互能力较差,程序员仍然要编写大量的代码。Delphi的推出,填补了这项空白。您不必自己建立对象,只要在提供的程序框架中加入完成功能的代码,其余的都交给Delphi去做。欲生成漂亮的界面和结构良好的程序丝毫不必绞尽脑汁,Delphi将帮助您轻松地完成。它允许在一个具有真正OOP扩展的可视化编程环境中,使用它的Object Pascal语言。这种革命性的组合,使得可视化编程与面向对象的开发框架紧密地结合起来。 1.2 Delphi 快速入门  在这一节中,我们来开发一个小程序。随着开发的过程,逐步介绍Delphi的主要部件及其操作方法。建议读者按照本书介绍的过程,在您的电脑上直接操作。您将对Delphi的可视化编程有一个直观、快捷的了解,必将起到事半功倍的效果。  1.2.1 进入Delphi的可视化编程环境 1.2.1.1 安装Delphi  Delphi的安装与其它应用软件并无不同。2.0版必须在Windows 95以上的操作系统中使用。启动Windows 95或Windows NT后,将Delphi的光盘放入光驱(CD-ROM)中,运行光盘上的\INSTALL\SETUP.EXE文件,它的安装程序会提示您正确地装入Delphi。如果您是在微软中文Windows环境中安装Delphi,请参照附录A来设置您的BDE环境,以便于处理中文数据。  1.2.1.2 进入Delphi 环境 为避免隐藏在Delphi后的Program Manager和曾经运行过的其它程序扰乱版面,分散您的注意力,不妨在启动Delphi前关掉其它应用程序;启动Delphi后,再最小化隐藏在后面的Delphi 2.0程序组。这样屏幕上就只留下Delphi窗口可见了。 首次加载Delphi,屏幕上会出现四个窗口: ● 标题为“Delphi-Project1”的Delphi主窗口 ● Object Inspector窗口 ● 标题为“Form1”的窗体(Form)窗口 ● 标题为“Unit1.PAS”的代码编辑窗口。刚启动时这一窗口的大部分被“Form1”窗体所掩盖。将“Form1”窗体移开,或单击Form1窗体下方的状态行,可以使其全部可见。在“Form1”窗体的任意可见位置单击鼠标,可以恢复主窗体可见 以下我们将对这四个窗口分别进行介绍。  1.2.2 Delphi可视化编程环境介绍  1.2.2.1 主窗口(Main Form)  Delphi的主窗口位于屏幕的上端,包括Menu(菜单)、Speed Bar(加速条)和Component Panel(部件选项板)。Menu是下拉式主菜单。Speed Bar位于主窗口的左下端,由两排共14个加速按钮组成。这些按钮是菜单功能的快捷方式,各种图标直观地表示了它能执行的动作。Component Panel由一行、若干页对象按钮所组成,利用它来选择需要的部件并将它放到窗体中去。  1.2.2.2 Object Inspector(对象检视器)  Object Inspector窗口含有两页:Properties页显示窗体中当前被选择部件的属性信息,并允许改变对象的属性;Events页列出了当前部件可以响应的事件。按动Object Inspector下端的“Events”页标签,使得Events页可见,这一定的事件后边的空白处,可以定义对象接受到相应事件时执行的动作。首次启动时,Object Inspector窗口显示的是当前窗体Form1的属性。Object Inspector根据对象属性的多少,决定是否有滚行显示。移动滚行条,可以查看当前对象的全部属性。 此外,Object Inspector上还有Object Selector(对象选择器),位于Object Inspector上方的下拉式菜单中。它显示了窗体上所有部件的名称和类型,也包含窗体本身。您可以用Object Selector很容易地在窗体的各个部件之间切换,也可以快速地回到窗体本身。当窗体中含有较多的对象时,您会发现这是切换对象尤其是回到窗体的最快捷途径。 想使Object Inspector一直可见,可将鼠标移到Object Inspector上,按动右键,以启动Object Inspector的弹出式菜单,将其设置为Stay On Top。这对初学者常是一个很重要的设置方式。  1.2.2.3 窗体窗口  Forms窗口是开展大部分设计的工作区域。首次启动Delphi 2.0时显示的是窗体Form1。可以把部件放在窗体中,通过移动位置、改变尺寸等操作随心所欲地安排它们,以此来开发应用程序的用户界面。您可以把窗体想象成一个可以放置其它部件的容器。窗体上有栅格(Grids),供放置部件时对齐位置用,在程序运行时Grids是不可见的。 一个真正的应用程序可能有不止一个窗口,您可以选用不同的窗体进行设计。其它窗体可以是对话框(Dialog Box)、数据录入框等。  1.2.2.4 代码窗口  代码窗口一开始处于窗体窗口之下。因为在Delphi中,设计用户界面直接在窗体中进行,运行结果和设计样板完全一致。当部件被放到窗体上时,Delphi会自动生成大部分的用户界面代码。您所应做的只是在它为您生成的框架中加入完成所需功能的程序段而已。点动Form1的状态行使代码窗口可见。 这个窗口中是代码编辑器。可以在其中书写Delphi应用程序的源代码。当程序中含有不止一个窗口时,会有几个库单元的源程序出现在代码编辑器中。代码编辑器的标题条中显示了当前正在编辑的库单元文件名。要查看某一特定程序的源代码,只需用鼠标点动写有该库单元文件名的页标签,就可以对该库单元进行编辑了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值