国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++ Builder 初學問與答(五)

2019-11-17 05:05:55
字體:
來源:轉載
供稿:網友
  38)問:事件OnChange和OnScorll都可以描述滾動條的滾動事件,他們有什么區別嗎?  答:事件OnChange和OnScorll是有區別的。只要屬性Position的值發生改變,那么無論這個值是用戶操作滾動條引起的還是通過程序修改的,都會產生OnChange事件。而OnScorll事件只有在用戶操作滾動條時才發生。當用戶操作滾動條時,首先發生OnScorll事件,然后OnChange事件才會發生。  下面我們共同看一個程序來加深對滾動條的理解。  在窗體上放置一個水平滾動條ScrollBar1和一個垂直滾動條ScrollBar2,以及一個記錄滾動條事件的Memo組件。當用戶操作滾動條時,在Memo組件中就會顯示發生的事件。  選擇Memo組件,把它的ScrollBars屬性設置為ssVertical。  選擇水平滾動條組件,雙擊OnScroll的Value域,系統將生成事件處理模板,輸入這樣一段代碼。
void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender,      TScrollCode ScrollCode, int &ScrollPos){AnsiString temp;if(Sender==ScrollBar2)temp="垂直滾動條的";else temp="水平滾動條的";switch(ScrollCode){       case scLineUp:temp+="scLineUp";break;       case scLineDown:temp+="scLineDown";break;       case scPageUp:temp+="scPageUp";break;       case scPageDown:temp+="scPageDown";break;       case scPosition:temp+="scPosition";break;       case scTrack:temp+="scTrack";break;       case scTop:temp+="scTop";break;       case scBottom:temp+="scBottom";break;       case scEndScroll:temp+="scEndScroll";break;     default:temp+="未知";break;}Memo1->Lines->Append(temp+"事件");

   更多文章 更多內容請看C/C++技術專題專題,或         第一條語句聲明一個AnsiString類型的變量,用來存放將要顯示的字符串。       第二條語句判定發送事件的對象,假如是垂直滾動條,將temp初始化為 “垂直滾動條的”,否則初始化為 “水平滾動條的”。       第三條語句根據ScrollCode的值,顯示相應的事件。       最后一條語句將要顯示的字符串加到文本框的末尾。C++ Builder 初學問與答(五)
  在窗體中選擇垂直滾動條組件,選擇Events標簽,單擊OnScroll的Value域,從下拉列表框中選擇ScrollBar1Scroll事件處理程序。這樣,垂直滾動條和水平滾動條將共用一個事件處理程序。  選擇水平滾動條組件,選擇Events標簽,雙擊OnChange域,然后輸入:  Memo1->Lines->Append("水平滾動條的OnChange事件");  它將在文本框后面顯示水平滾動條改變的信息。  類似的,給垂直滾動條的OnChange事件加上如下代碼:Memo1->Lines->Append("垂直滾動條的OnChange事件");  具體代碼如下:
//--------------------------------------------#include <vcl.h>#PRagma hdrstop#include "Unit1.h"http://--------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//--------------------------------------------    更多文章 更多內容請看C/C++技術專題專題,或


__fastcall TForm1::TForm1(TComponent* Owner)        : TForm(Owner){}//--------------------------------------------void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender,      TScrollCode ScrollCode, int &ScrollPos){         AnsiString temp;if(Sender==ScrollBar2)temp="垂直滾動條的";elsetemp="水平滾動條的";switch(ScrollCode){       case scLineUp:temp+="scLineUp";break;       case scLineDown:temp+="scLineDown";break;       case scPageUp:temp+="scPageUp";break;       case scPageDown:temp+="scPageDown";break;       case scPosition:temp+="scPosition";break;       case scTrack:temp+="scTrack";break;       case scTop:temp+="scTop";break;       case scBottom:temp+="scBottom";break;       case scEndScroll:temp+="scEndScroll";break;     default:temp+="未知";break;}Memo1->Lines->Append(temp+"事件");}    更多文章 更多內容請看C/C++技術專題專題,或

//-------------------------------------------- void __fastcall TForm1::ScrollBar1Change(TObject *Sender){       Memo1->Lines->Append("水平滾動條的OnChange事件");}//--------------------------------------------void __fastcall TForm1::ScrollBar2Change(TObject *Sender){    Memo1->Lines->Append("垂直滾動條的OnChange事件");}
//--------------------------------------------   現在,編譯并運行這個程序,點擊滾動條,可以看出滾動條的事件產生情況。C++ Builder 初學問與答(五)  哪個事件優先你能看出來嗎?你一定會對OnScroll同一事件產生的兩個屬性值先后被OnChange分開而不解是嗎?你好好看一下什么時候產生scEndScroll值J
 
  其實我們假如要了解其他某個組件所產生的事件之間的順序,也可以用同樣的方法來實現。  39)問:軌跡條(TrackBar)有那些主要屬性呢?  答:軌跡條與滾動條有相似之處,它也有一個類似于滾動塊的滑動塊,可以用鼠標或者使用方向鍵移動。軌跡條的某些屬性與滾動條完全相同,例如Max,Min和Position。但是它還有一些非凡的屬性。  1.LineSize屬性,用于指定當用戶按下方向鍵時,軌跡條的滑動塊移動的距離。  2.PageSize屬性,用于指定當用戶按下PgUp和PgDn時,軌跡條上的滑動塊移動的距離。  3.Frequency屬性,用于設置軌跡條刻度的單位。假如Max-Min等于100,而這個屬性等于10,那么軌跡條就被分成了10等份。  4.Orientation屬性,用來確定軌跡條的放置方向,它有兩個值,tbHorizontal表示水平放置,tbVertical表示是垂直放置的。缺省情況下是水平放置的。 更多文章 更多內容請看C/C++技術專題專題,或   5.SelStart這個屬性用來設置選擇的起點。  6.SelEnd這個屬性用來設置的選擇終點。  7.TickMarks這個屬性用來設置軌跡條標尺的位置。它有三個值,分別表示三種不同的滑動塊位置:
  tmBottomRight表示垂直放置時標尺顯示在軌跡條的下面或者水平放置時顯示在右邊。  tmTopLeft表示垂直放置時標尺顯示在軌跡條的上面或者水平放置時顯示在左邊。  tmBoth則表示軌跡條的兩邊都有標尺。  8.TickStyle這個屬性用來確定軌跡條標尺的樣式。它有三個值,分別表示三種不同的標尺樣式:  tsAuto表示自動顯示標尺的刻度。  tsManual表示需要使用SetTick過程才能設置在某個位置顯示刻度。  tsNone表示標尺不顯示刻度。  40)問:軌跡條有哪些常用的事件呢?  答:當用戶用鼠標或者鍵盤操作軌跡條時,就會產生OnChange事件。不過要注重,在程序中改變屬性Position的值不會產生OnChange事件,這一點與滾動條不同。  41)問:進程條(ProgressBar)如何用呢?  答:它的屬性與上面的那些組件差不多,象Max、Min、Orientation、Position與上面的含義大同小異。其中Position是這個組件的要害,它用來設置或者返回進程條的填充小方塊的當前位置,當進條結束的時候,這個位置應該是位置上限。  Smooth:布爾類型,缺省為false。這時的填充是按格進行的,假如設置為true,則填充是平滑進行的。  StepBy:其聲明為:void _fastcall StepBy(int Detla);這個函數用來向前填充進程條,同時改變Position的屬性值。它的增加量由參數Detla來指定。  StepIt:其聲明為:void _fastcall StepIt(void);這個函數用來向前填充進程條,同時改變Position的屬性值。其填充步長由Step屬性來指定。  Step:這個屬性用來設置當調用StepIt函數時,Position位置的增加量。缺省為10。  42)問:UpDown控件有什么用?  答:這個控件是一對上下箭頭按鈕,按下按鈕時會自動增加或減少某個數值。它通常有一個附屬組件,由UpDown控件的Associate屬性指定。假如這個組件是一個編輯框,那么編輯框就會自動顯示UpDown控件的屬性Position的值。  UpDown控件也有一些滾動條和軌跡條所具備的屬性,例如Max,Min,Position,Orientation,它們的意義也基本上相同,不過UpDown控件同樣有一些非凡的屬性。  AlignButton為udLeft時,表示將UpDown控件放置在附屬組件的左邊,為udRight時,則表示將UpDown控件放置在附屬組件的右邊。  Associate用來指定關聯的附屬組件。  ArrowKey屬性,當屬性為True時,按下上下方向鍵就像按下UpDown控件的上下箭頭一樣。缺省值為True。

   更多文章 更多內容請看C/C++技術專題專題,或   Thousands屬性, 當屬性為True時,假如Position超過1000,那么就會自動給所顯示的數值加上一個千分位。缺省值為True。  Wrap屬性,當屬性為True時,假如Position的值大于Max,那么就會自動回到Min屬性指定的值。缺省值為False。
  43)問:UpDown控件有哪些常用的事件呢?  答:UpDown控件有兩個常用的事件:OnChanging和OnClick。當用戶正在按下上下箭頭時,將發生OnChanging事件;當用戶按下上下箭頭時,會發生OnClick事件。    我們共同來看一個例子:  在窗體上放置兩個Edit控件,和兩個UpDown控件,將兩個UpDown控件的Orientation屬性分別取值udHorizontal和udVertical。  將第二個UpDown控件的Max的取值為5000,Position值為100,將他們的Associate屬性分別與兩個編輯框關聯。在對應事件中輸入如下代碼:
void _fastcall TForm1::UpDown1Changeing(TObject *Sender,bool &AllowChange){       Edit1->Text=UpDown1->Position;}// 注重參數AllowChange可以用來指定是否答應改變Position屬性的值。void _fastcall TForm1::UpDown2Click(TObject *Sender,TUBTnType Button){       Edit2->Text=UpDown2->Position;} //注重參數Button表示哪個按鈕被按下:btNext為上箭頭或者右箭頭;btPrew為下箭頭或者左箭頭。  44)問:在UpDown右邊有一個HotKey組件是做什么的?  答:熱鍵HotKey用來在程序運行期間動態地指定某個組件或者菜單的快捷鍵。在它的屬性中你只要記住HotKey屬性就可以了,這個屬性用來返回用戶指定的快捷鍵。代碼如下:
 //--------------------------------------#include <vcl.h>#pragma hdrstop
#include "Unit1.h"http://--------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//--------------------------------------    更多文章 更多內容請看C/C++技術專題專題,或
 
__fastcall TForm1::TForm1(TComponent* Owner)        : TForm(Owner){}//--------------------------------void __fastcall TForm1::X1Click(TObject *Sender){ Close();}//-------------------------------void __fastcall TForm1::HotKey1Change(TObject *Sender){    X1->ShortCut=HotKey1->HotKey;//X1為菜單名,注重有些書介紹用OnEnter事件,但我覺得不妥,不防你也試一下,用OnEnter你將得不到什么關聯J}//------------------------------- C++ Builder 初學問與答(五)  為什么這里用了一個Button1?假如你的程序中沒有另外一個組件可以獲得焦點,你將感受不到快捷鍵的功能的,因為焦點會停在HotKey組件上,在這里就是想將焦點轉移一下,然后用快捷鍵試一下效果J(待續) 

更多文章 更多內容請看C/C++技術專題專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天峻县| 石泉县| 夹江县| 宁乡县| 敖汉旗| 湘阴县| 霞浦县| 米脂县| 历史| 松滋市| 河北区| 泽州县| 奉化市| 江津市| 亚东县| 铜梁县| 太仆寺旗| 疏勒县| 桂林市| 会理县| 长垣县| 徐州市| 吉木萨尔县| 二连浩特市| 重庆市| 宁南县| 同德县| 丹东市| 东城区| 遵义县| 宣武区| 鄯善县| 贞丰县| 敦煌市| 当雄县| 珲春市| 莱西市| 肇州县| 临潭县| 邢台县| 醴陵市|