亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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++技術專題專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲深夜福利视频| 国产91久久婷婷一区二区| 久久久久在线观看| 3344国产精品免费看| 亚洲精品免费网站| 亚洲精品国产精品自产a区红杏吧| 日韩精品亚洲精品| 国产精品美女午夜av| 亚洲欧洲国产精品| 国产精品美女久久久久av超清| 91av视频在线| 欧美孕妇孕交黑巨大网站| 国产在线一区二区三区| 久久国产精品久久久久久| 欧美在线免费观看| 欧洲中文字幕国产精品| 欧美性猛交xxxx乱大交| 国产成人精品网站| 久久久噜噜噜久久| 欧美大片免费观看| 国产免费一区二区三区在线观看| 久久99视频免费| 少妇av一区二区三区| 欧美精品videosex牲欧美| xxx一区二区| 久久夜色精品亚洲噜噜国产mv| 日本最新高清不卡中文字幕| 国产精品都在这里| 欧美专区在线观看| 97视频国产在线| xvideos亚洲人网站| 亚洲第一综合天堂另类专| 欧美一级大片视频| 亚洲欧美日韩中文视频| 欧美性感美女h网站在线观看免费| 成人写真视频福利网| 国产在线精品自拍| 日本一区二区三区在线播放| 精品久久久视频| 欧美专区国产专区| www欧美日韩| 精品久久久国产精品999| 欧美在线视频一二三| 欧美一区二粉嫩精品国产一线天| 亚洲国产精品va在线看黑人动漫| 亚洲精品成人网| 欧美久久精品午夜青青大伊人| 4388成人网| 国产精品久久久久久一区二区| 91欧美精品午夜性色福利在线| 在线观看国产欧美| 美女福利视频一区| 欧洲美女7788成人免费视频| 久久久极品av| 精品国产一区二区三区久久狼黑人| 日韩大片在线观看视频| 麻豆国产精品va在线观看不卡| 亚洲精品国产精品自产a区红杏吧| 色悠久久久久综合先锋影音下载| 久久人人爽人人爽人人片av高清| 久久精品国产清自在天天线| 亚洲嫩模很污视频| 日韩国产精品一区| 国产精品视频yy9099| 亚洲伊人成综合成人网| 久久97久久97精品免视看| 亚洲欧美一区二区三区久久| 国色天香2019中文字幕在线观看| 欧美成人精品一区二区三区| 91精品国产高清自在线| 亚洲成人a**站| 国产成人精品免高潮费视频| 国产精品自拍偷拍视频| 亚洲a在线观看| 3344国产精品免费看| 久久久国产精彩视频美女艺术照福利| 国产精品三级久久久久久电影| 91久久久亚洲精品| 91系列在线观看| 午夜精品一区二区三区在线播放| 欧美激情视频一区二区三区不卡| 中文字幕在线视频日韩| 久久免费成人精品视频| 91香蕉嫩草影院入口| 国产精品久久77777| 色yeye香蕉凹凸一区二区av| 日韩专区在线播放| 欧美性猛交丰臀xxxxx网站| 最近中文字幕mv在线一区二区三区四区| 日韩高清中文字幕| 国产一区二区丝袜| 欧美激情久久久久| 日韩在线观看电影| 中文字幕日韩精品在线| 久久国产精品久久国产精品| 国产精品成人免费电影| 国产97在线|亚洲| 精品久久久一区二区| 欧美另类极品videosbestfree| 亚洲xxxx妇黄裸体| 91精品国产色综合久久不卡98口| 神马久久桃色视频| 成人国产精品免费视频| 国产精品三级在线| 日本一区二区三区在线播放| 亚洲国产成人爱av在线播放| www.欧美三级电影.com| 岛国精品视频在线播放| 日韩在线免费视频观看| 久久av.com| 免费91麻豆精品国产自产在线观看| 日本免费一区二区三区视频观看| 97精品久久久| 欧美一区二区三区精品电影| 日韩福利伦理影院免费| 亚洲第一精品久久忘忧草社区| 在线日韩日本国产亚洲| 青草成人免费视频| 日韩精品久久久久| 欧美黄色小视频| 中文字幕在线看视频国产欧美| 久久精品国产成人精品| 992tv成人免费视频| 久久免费在线观看| 91精品国产高清自在线看超| 久久久伊人欧美| 亚洲精品国产精品久久清纯直播| 日本a级片电影一区二区| 成人疯狂猛交xxx| 日韩电影中文字幕| 日韩第一页在线| 久久艳片www.17c.com| 日韩中文字幕不卡视频| 97人人爽人人喊人人模波多| 国产欧美一区二区| 国产美女高潮久久白浆| 亚洲最大福利网| 88xx成人精品| 久久亚洲私人国产精品va| 成人免费看吃奶视频网站| 亚洲自拍偷拍色图| 亚洲电影免费观看高清完整版| 久久6免费高清热精品| 欧美香蕉大胸在线视频观看| 色妞一区二区三区| 久久伊人免费视频| 色偷偷91综合久久噜噜| 亚洲剧情一区二区| 国产精品一久久香蕉国产线看观看| 欧美日韩国产中文字幕| 久久97精品久久久久久久不卡| 日本久久久久久久| 欧美在线免费观看| 日韩中文字幕网| 欧美俄罗斯性视频| 久久欧美在线电影| 欧美另类老肥妇| 午夜精品一区二区三区在线视| 国产精品精品久久久久久| 国产精品老牛影院在线观看| 亚洲男人天堂2024| 国产在线高清精品| 久久精品在线播放| 91精品国产99久久久久久|