?? 00201.htm
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>1</title>
</head>
<body bgcolor="#000000" text="#FFFFFF" link="#FFFFFF">
<p align="left"><span style="BACKGROUND-COLOR: #ff0000"><a href="00201.zip">源程序下載</a></span><b><span style="background-color: #000080"><br>
</span><span style="background-color: #000000"><br>
</span><span style="background-color: #000080"><a name="1"></a>1:制作可分割的窗體(Form)</span></b>
</p>
<p>
第一步:創建一個應用程序,保存為Unit為U00201.Pas,Form.Name = Form1,Progect為P00201.prg。<br>
第二步:在Form1上放置一個Panel1:Tpanel,設置Panel1.Align= alTop;在Panel1上按順序分別一個Image1:TImage、Splitter1:TSplitter、Memo1:TMemo,Image1.Align = alLeft;Splitter.Align= alLeft;Memo1.Align= clClient ;<br>
第三步:在Form1的OnCreate的事件里,添加下面一段代碼:<br>
procedure TForm1.FormCreate(Sender: TObject);<br>
begin<br>
Image1.Picture.LoadFromFile('00201.bmp') ;<br>
Memo1.Lines.LoadFromFile('00201.txt') ;<br>
end;<br>
把上面的程序保存一下,你可以試一下。<br>
<span style="background-color: #000000"><br>
</span><b><span style="background-color: #000080"><a name="2"></a>2:制作透明的窗體(Form)</span></b><span style="background-color: #000080"><br>
</span> 為了不影響測試后面一段程序,在Form1上放置一個Splitter2 : TSplitter,設置<br>
Splitter2.Align=alTop ;將FORM變成透明的實質性手段就是攔截CMEraseBkgnd消息。<br>
第一步:在Form1的“Public”部分聲明過程:<br>
Procedure CMEraseBkgnd(var Message:TWMEraseBkgnd);Message WM_ERASEBKGND;<br>
<br>
PROCEDURE Tform1.CMEraseBkgnd(var Message:TWMEraseBkgnd);<br>
Begin<br>
brush.style:=bsClear;<br>
Inherited;<br>
End ;<b><span style="background-color: #000080"><br>
</span><span style="background-color: #000000"><br>
</span><span style="background-color: #000080"><a name="3"></a>3:窗體(Form)上的坐標轉換成相對于屏幕上的坐標<br>
</span></b><br>
為了測試這個程序,只需要在Form1的OnMouseMove事件中添加如下代碼:<br>
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);<br>
Var<br>
Tempstr : String ;<br>
MyPoint: TPoint;<br>
ScPoint: TPoint;<br>
begin<br>
TempStr := 'Form X='+IntToStr(X)+' Form Y='+IntToStr(Y);<br>
Caption := TempStr ;<br>
<br>
MyPoint.x:=X;<br>
MyPoint.y:=Y;<br>
ScPoint:=ClientToScreen(MyPoint);<br>
<br>
TempStr := 'Screen X='+IntToStr(ScPoint.x)+' Screen Y='+IntToStr(ScPoint.y);<br>
Caption := Caption +' '+TempStr ;<br>
end;<br>
注:MyPoint,是相對于窗體(Form1)的坐標,ScPoint為相對于屏幕上的坐標,在上面的一段代碼中,關鍵的函數就一個ClientToScreen,它的作用是把相對于窗體(Form)的坐標轉換成相對于屏幕的坐標(converts the client coordinates of a specified point to screen coordinates.)。和這個函數相反的一個函數是ScreenToClient,你可以自己動手試試。<br>
<br>
<span style="background-color: #FF0000"><a href="00201.zip">源程序下載</a></span>
</p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -