zoukankan      html  css  js  c++  java
  • 一生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);  

  • 相关阅读:
    浏览器HTTP缓存原理分析
    基本概念复习
    什么是IOC为什么要使用IOC
    AutoFac记录
    NHibernate之旅(21):探索对象状态
    如何获取类或属性的自定义特性(Attribute)
    a different object with the same identifier value was already associated with the session
    6 CLR实例构造器
    6 CLR静态构造器
    CLR via C# 提纲
  • 原文地址:https://www.cnblogs.com/hssbsw/p/3047820.html
Copyright © 2011-2022 走看看