程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 學習DELPHI程序開發中的幾則應用技巧

學習DELPHI程序開發中的幾則應用技巧

編輯:Delphi

delphi是全新的可視化編程環境,為我們提供了一種方便、快捷的windows應用程序開發工具。它使用了microsoft windows圖形用戶界面的許多先進特性和設計思想,采用了彈性可重復利用的完整的面向對象程序語言(object-oriented language)、當今世界上最快的編輯器、最為領先的開發工具之一。對於廣大的程序開發人員來講,使用delphi開發應用軟件,無疑會大大地提高編程效率。另外DELPHI是一個開放系統,只要靈活使用一些控件,即可開發出各種類型的系統,不論N-Tie程序、多線程程序、分布計算程序(包括DCOM和CORBAR)、TCP程序、Web程序、ActiveX、中間件、推程序(Push),甚至你可以用它來寫匯編程序。下面筆者就列舉幾則DELPHI的開發應用事例。

1、實現鏈接效果

該效果是表示當鼠標指向某字體,該字體就出現下劃線,鼠標指針變為一支手指,按下後就打開浏覽器或郵件編寫器的功能,請按下列辦法做:

先在一個窗體中加入一個Label1,在OnMouseMove事件裡加入下列代碼

procedure TForm1.Label1MouseMove(Sender: TObject;shift:Tshiftstate;x,y:integer);
            begin
            Label1.Font.Style:=[fsbold,fsunderline];
            Label1.Font.Color:=clYellow;
            end;

接著在Form1的OnMouseMove事件裡加入下列代碼

procedure TForm1.FormMouseMove(Sender: TObject;shift:Tshiftstate;x,y:integer);
            begin
            Label1.Font.Style:=[fsbold];
            Label1.Font.Color :=clmaroon;
            end;
            procedure TForm1.Label1Click(Sender: TObject);
            begin
            Shellexecute(handle,nil,pchar(mailto:[email protected]),nil,nil,sw_shownormal);
            end;

 

再將Label1.Cursor的鼠標指針設為crHandPoint,那麼就有這種效果了。

2、獲取計算機的身份信息

獲取計算機的身份信息功能表示通過程序設計,達到自動獲取機器的名字和IP地址的目的。要實現這個功能,我們可以使用DELPHI程序提供的TCP控件來完成。下面是一個調用了WINSOCK的獨立單元的一段功能代碼,我們可以把它直接嵌入到自己的程序中去。

uses Winsock;
            procedure TForm1.FormCreate(Sender: TObject);
            var
            wVersionRequested : WORD;
            wsaData : TWSAData;
            begin
            {創建 WinSock}
            wVersionRequested := MAKEWORD(1, 1);
            WSAStartup(wVersionRequested, wsaData);
            end;
            procedure TForm1.Button1Click(Sender: TObject);
            var p : PHostEnt; s : array[0..128] of char; p2 : pchar;
            begin
            {得到計算機名稱}
            GetHostName(@s,128);
            p:=GetHostByName(@s);
            Memo1.Lines.Add(p^.h_Name);
            {得到機器IP地址}
            p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
            Memo1.Lines.Add(p2);
            end;
            procedure TForm1.FormDestroy(Sender: TObject);
            begin
            {釋放 WinSock}
            WSACleanup;
            end

 

3、修改顯示分辨率

Windows提供給我們兩個API函數,可以動態調整顯示器的分辨率,他們是EnumDisplaySettings() 和ChangeDisplaySettings(),下面的這個源代碼實現了在兩中分辨率之間的變換,並且可以不用重新啟動計算機:

function DynamicResolution(X, Y: word): BOOL;
            var
            lpDevMode: TDeviceMode;
            begin
            Result := EnumDisplaySettings(nil, 0, lpDevMode);
            if Result then
            begin
            lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
            lpDevMode.dmPelsWidth := X;
            lpDevMode.dmPelsHeight := Y;
            Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
            end
            end;
            procedure TForm1.Button1Click(Sender: TObject);
            begin
            if DynamicResolution(640, 480) then
            ShowMessage(Now is 640*480);
            end;
            procedure TForm1.Button2Click(Sender: TObject);
            begin
            if DynamicResolution(800, 600) then
            ShowMessage(Now is 800*600); end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved