999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用Delphi實現一個經典程序的教學探討

2008-12-31 00:00:00
電腦知識與技術 2008年20期

摘要:本文用Delphi實現一個經典程序,著重于對編程設計思想的分析和討論,并詳細介紹了整個編程過程及代碼實現步驟,對Delphi程序的編程設計思想和教學中應強調的若干問題進行了探討。

關鍵詞:Delphi;經典程序;編程思想;教學探討

中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)20-30289-03

Teaching Research in Using Delphi to Complete A Classical Program

JIAN Yun

(Computer Science Department, Guizhou Police Officer Vocational College, Guiyang 550005, China)

Abstract: This paper makes use of Delphi to complete a classical program, analyses mosetly the principle of program design, and provides a detailed explanation of the whole procedures of program design and code compilation, also discusses the principle of program design of Delphi and the important problems of Delphi in teaching.

Key words: Delphi; Classical program; Principle of program design; Teaching research

1 程序界面設計

該程序只使用了一個窗體,如圖1所示。

在Delphi集成開發環境中創建一個窗體,并將該窗體的Name屬性設置為frmInterface(即將該窗體命名為frmInterface),同時將其Caption屬性設置為Interface。

接下來在窗體中添加兩個ListBox控件,分別設置其Name屬性為lstLeft和lstRight,并將lstLeft的Items屬性設置為{1,2,3,4,5,6,7};添加一個Button控件,設置其Name屬性為btnExit,并設置其Caption屬性為“退出”;添加四個SpeedButton控件,分別設置其Name屬性為spbRight、spbLeft、spbAllRight、spbAllLeft,并將其Glyph屬性分別設置為不同的箭頭圖片,且將其Caption屬性全部清空。

這里將lstLeft的Items屬性(項目列表屬性)設置為{1,2,3,4,5,6,7},其設計思想,是想先對列表框lstLeft的Items屬性進行靜態設置,然后在程序代碼中再對另一個列表框lstRight的Items屬性進行動態設置。

需要注意的是,對控件和變量的命名,必須遵循一定的命名規則[1-3]。從上面可以看出,我們對以上每個控件的命名都是嚴格按照命名規則進行的。這是程序開發中最基本的要求,然而也是課堂教學中經常容易被忽略的問題,對此應當引起必要的重視,要讓學生養成良好的命名習慣。

2 程序功能設計

(1)程序啟動時自動將lstRight的Items屬性動態設置為{8,9,10,11,12,13,14,15,16},并將spbRight和spbLeft的初始狀態設置為不可用;(2)將左列表框中的所有項目移到右列表框中;(3)將右列表框中的所有項目移到左列表框中;(4)當左列表框中有項目被選中時,spbRight按鈕變為可用;當右列表框中有項目被選中時,spbLeft按鈕變為可用;(5)將左列表框中選中的項目移到右列表框中;(6)將右列表框中選中的項目移到左列表框中;(7)將左列表框中選中的項目移到右列表框中之后,spbRight變為不可用;(8)將右列表框中選中的項目移到左列表框中之后,spbLeft變為不可用;(9)當左列表框中有項目時spbAllRight可用,否則spbAllRight不可用;(10)當右列表框中有項目時spbAllLeft可用,否則spbAllLeft不可用;(11)點擊“退出”按鈕btnExit時,結束整個程序。

3 程序的代碼實現

3.1 實現第一項功能

這項功能要求程序啟動時自動實現lstRight的Items屬性的動態設置,并同時設置spbRight和spbLeft的初始狀態為不可用。

實際上,當程序啟動時,程序首先要做的,就是創建frmInterface窗體并將它顯示出來。因此,我們可以在frmInterface窗體的創建事件中實現這一功能。即在frmInterface窗體的OnCreate事件中,添加如下代碼:

var

i : integer;

begin//將lstRight的Items屬性動態設置為{8,9,10,11,12,13,14,15,16}

for i := 0 to 8 do

begin

lstRight.Items[i] := inttostr(i+8);

end;

spbRight.Enabled := 1;//將spbRight和spbLeft按鈕設置為不可用

spbLeft.Enabled := 1;

end;

這里的編程思路是使用一個循環,給lstRight的Items屬性循環賦值,從而實現該項功能。實現該功能后程序的運行結果如圖2所示。

3.2 實現第二項功能

編程思路是,當點擊spbAllRight按鈕時,程序通過一個循環將左列表框中的項目逐項循環添加到右列表框中,每當添加一項到右列表框中之后,馬上將左列表框中的該項刪除。

因此,在spbAllRight按鈕的OnClick事件中添加如下代碼,即可實現這項功能:

var

i : integer;

begin

for i:=0 to lstLeft.Items.Count-1 do

begin //將lstLeft第1項添至lstRight

lstRight.Items.Add(lstLeft.Items[0]);

lstLeft.Items.Delete(0);

end;

end;

3.3 實現第三項功能

該功能的實現與第二項功能完全相似,其編程思路是,當點擊spbAllLeft按鈕時,使右列表框中的所有項目逐項循環添加到左列表框中,每添加一項到左列表框中之后,立即刪除右列表框中已被添加到左列表框中去的項目。即在spbAllLeft按鈕的OnClick事件中,添加類似第二項功能的代碼即可。

3.4 實現第四項功能

這項功能應該分別放在左列表框lstLeft和右列表框lstRight的鼠標單擊事件中加以實現。方法如下:

在左列表框lstLeft的OnClick事件中,添加如下代碼:

spbRight.Enabled := true;//將spbRight按鈕設置為可用

在右列表框lstRight的OnClick事件中,添加如下代碼:

spbLeft.Enabled := true;//將spbLeft按鈕設置為可用

3.5 實現第五項功能

該功能僅要求將左列表框中已被選中的項目移到右列表框中,沒有選中的項目不移動。其編程思路是,當點擊spbRight按鈕時,將左列表框中已被選中的項目逐個循環添加到右列表框中,然后將左列表框中所有已被選中的項目刪除。

在spbRight按鈕的OnClick事件中,添加如下代碼,即可實現該功能:

var

i : integer;

begin

IF lstLeft.ItemIndex <> -1 then //如果lstLeft中存在有項目

Begin//將lstLeft中已被選中的所有項目循環添加到lstRight中

for i := 0 to lstLeft.Items.Count-1 do

begin//如果lstLeft的第i項被選中,則將它添加到lstRight中

if lstLeft.Selected[i] = true then

lstRight.Items.Add(lstLeft.Items[i]);

end;

lstLeft.DeleteSelected; //刪除lstLeft中已被選中的所有項目

end;

end;

3.6 實現第六項功能

該功能的實現與第五項功能完全相似,其編程思路是,當點擊spbLeft按鈕時,將右列表框中已被選中的項目逐個循環添加到左列表框中,然后將右列表框中所有已被選中的項目刪除。即在spbLeft按鈕的OnClick事件中,添加類似第五項功能的代碼即可。

3.7 實現第七項功能

這項功能要求,當點擊spbRight按鈕將左列表框中選中的項目移到右列表框中去之后,要將spbRight按鈕設置為不可用。要實現該功能,只需在spbRight按鈕的OnClick事件中添加如下代碼即可:

spbRight.Enabled := 1; //將spbRight按鈕設置為不可用

3.8 實現第八項功能

這項功能的實現與第七項功能完全相似,只需在spbLeft按鈕的OnClick事件中,添加如下代碼即可:

spbLeft.Enabled := 1;//將spbLeft按鈕設置為不可用

3.9 實現第九、十項功能

實現這兩項功能的關鍵,是要正確判斷在左列表框lstLeft和右列表框lstRight中是否有項目存在。若lstLeft中沒有項目,則spbAllRight應設置為不可用,反之應設置為可用;若lstRight中沒有項目,則spbAllLeft應設置為不可用,反之應設置為可用。

仔細分析可發現,左列表框中沒有項目存在的情況,只可能出現在以下事件發生之后:

①frmInterface窗體的OnCreate事件;

②spbRight按鈕的OnClick事件;

③spbAllRight按鈕的OnClick事件。

而右列表框中沒有項目存在的情況,則只可能出現在以下事件發生之后:

①frmInterface窗體的OnCreate事件;

②spbLeft按鈕的OnClick事件;

③spbAllLeft按鈕的OnClick事件。

其中,frmInterface窗體的OnCreate事件是兩種情況共有的。因此只要分別在上述五個事件中添加如下代碼,即可實現第九、第十這兩項功能:

if lstLeft.Items.Count = 0 then//若lstLeft中無項目,則spbRight和spbAllRight不可用,否則spbAllRight可用

begin

spbAllRight.Enabled := 1;

spbRight.Enabled := 1;

end

else

begin

spbAllRight.Enabled := true;

end;

if lstRight.Items.Count = 0 then//若lstRight中無項目,則spbLeft和spbAllLeft不可用,否則spbAllLeft可用

begin

spbAllLeft.Enabled := 1;

spbLeft.Enabled := 1;

end

else

begin

spbAllLeft.Enabled := true;

end;

3.10 實現第十一項功能

在“退出”按鈕btnExit的OnClick事件中,添加如下代碼即可:

application.Terminate;//退出應用程序

4 應強調的幾個問題

除前面已強調的對變量和控件的命名必須遵循命名規則,以使學生養成良好的命名習慣外,在教學中還應強調以下幾個問題:

4.1 源代碼的書寫必須要求符合規范[2]

Delphi源代碼的書寫規則,主要有二點要求:一是分級縮進,下一級代碼相對于上一級代碼應該縮進二個空格的位置。二是begin…end配對,begin和end應該配對輸入,并且相應的end子句必須縮進到與相應的begin子句相對應的位置。

在編寫程序代碼時,要求學生必須嚴格遵守代碼書寫規則,否則會使代碼書寫混亂,可讀性差,且容易出錯。本文所寫的源代碼格式,可供學生參考。

4.2 必須給源代碼加注釋

在課堂教學中,必須讓學生養成給源代碼加注釋的良好習慣,這應該作為一個教學原則來要求,不可忽視。這樣可使編寫的源代碼容易讀懂,易于維護。

4.3 對于幾個模塊共用的代碼段,應該寫成一個通用過程或函數,在各模塊中只需調用這個通用過程或函數即可

比如本文實現第九、十項功能的代碼段,就是由frmInterface窗體的OnCreate事件,以及spbRight、spbAllRight、spbLeft、spbAllLeft四個按鈕的OnClick事件等五個模塊共用的。因此,該代碼段就應該寫成一個通用過程,供五個模塊共同調用。這樣就能精簡代碼,減小程序的代碼量。

5 結束語

實踐證明,學生在編程開發中經常出現的問題,主要集中在三個方面:一是編程思想不明確,思路模糊不清,提不出解決問題的設想和方案;二是編程格式混亂,包括不遵循命名規則,源代碼書寫不符合規范,代碼不加注釋等;三是在不同模塊中大量編寫重復代碼段,使得所編程序的代碼量過大,沒有養成使用通用過程或函數來精簡代碼的良好習慣。

在教學中,以上這些問題應該從一開始就嚴格要求和訓練,并將其作為教學原則,貫穿于整個教學過程之中。這樣做,對于訓練學生的編程設計思想,提高學生的編程開發能力,增強學生的就業競爭力,具有不可低估的作用。

參考文獻:

[1] [美]Bob Reselman,Richard Peasley. 實用Visual Basic 6教程[M]. 何健輝 等,譯. 北京: 清華大學出版社,2001. 47-49.78-81.

[2] 王惠剛,唐晨光,彭為. Delphi7/8程序設計基礎教程與上機指導[M]. 北京: 清華大學出版社,2004. 86-93.

[3] 劉宏昆,等. Delphi應用技巧與常見問題你問我答[M]. 北京: 機械工業出版社, 2003. 11.

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”

主站蜘蛛池模板: 日韩精品无码免费一区二区三区| 97在线国产视频| 亚洲AV免费一区二区三区| 国产欧美成人不卡视频| 国产麻豆精品久久一二三| 精品一区二区三区自慰喷水| 国产免费网址| 97国产一区二区精品久久呦| 亚洲美女高潮久久久久久久| 婷婷午夜天| 国产99在线| 91久草视频| 国产女人在线| 久久久久无码精品| 国产va欧美va在线观看| 亚洲大学生视频在线播放| 国产性猛交XXXX免费看| 国产免费自拍视频| 亚洲一区二区三区在线视频| 国产乱子精品一区二区在线观看| 日韩高清中文字幕| 999福利激情视频| 九九视频在线免费观看| 一本久道久久综合多人| 亚洲 欧美 偷自乱 图片| 中文字幕第1页在线播| 97视频免费在线观看| 91福利免费| 91精品aⅴ无码中文字字幕蜜桃| 日韩精品无码免费专网站| 国产精品久久国产精麻豆99网站| 国产在线98福利播放视频免费| 九九九精品成人免费视频7| 国产极品美女在线播放| 国产精彩视频在线观看| 国产精品网址在线观看你懂的| 国产在线啪| 色婷婷在线播放| 毛片在线看网站| 久久精品日日躁夜夜躁欧美| 欧洲亚洲一区| 精品一区二区久久久久网站| 成人小视频网| 国产乱视频网站| 亚洲综合婷婷激情| 99热这里只有精品5| 国产精品美女在线| 久久人妻系列无码一区| 欧美精品黑人粗大| 91色在线视频| 日韩区欧美国产区在线观看 | 人妻丰满熟妇啪啪| 欧美第九页| 国产成人精品无码一区二 | 欧美日本中文| 91亚洲免费视频| 亚洲国产精品国自产拍A| 国产精品污视频| 国产一在线观看| 午夜视频免费试看| 精品视频在线观看你懂的一区| 亚洲AV无码一区二区三区牲色| 一级爱做片免费观看久久| 欧美不卡二区| 欧美成a人片在线观看| 色综合网址| 欧美日本一区二区三区免费| 亚洲a免费| 国产内射一区亚洲| 99精品国产高清一区二区| 国产成人精品优优av| 午夜精品福利影院| 亚洲欧美综合另类图片小说区| 国产玖玖玖精品视频| 国产精品女在线观看| 精品一区二区三区视频免费观看| 久久五月视频| 久久综合色播五月男人的天堂| 天天色天天操综合网| 中文毛片无遮挡播放免费| 好紧太爽了视频免费无码| 久久免费成人|