vb中窗體模塊,類模塊,標(biāo)準(zhǔn)模塊的區(qū)別_第1頁
vb中窗體模塊,類模塊,標(biāo)準(zhǔn)模塊的區(qū)別_第2頁
vb中窗體模塊,類模塊,標(biāo)準(zhǔn)模塊的區(qū)別_第3頁
vb中窗體模塊,類模塊,標(biāo)準(zhǔn)模塊的區(qū)別_第4頁
vb中窗體模塊,類模塊,標(biāo)準(zhǔn)模塊的區(qū)別_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、vb中窗體模塊,類模塊,標(biāo)準(zhǔn)模塊的區(qū)別學(xué)習(xí)各種高級外掛制作技術(shù),馬上去百度搜索"魔鬼作坊",點擊第一個站進(jìn)入,快速成為做掛達(dá)人。VB的代碼存儲在模塊中。在VB中提供了三種類型的模塊:窗體模塊、標(biāo)準(zhǔn)模塊和類模塊。簡單的應(yīng)用程序可以只有一個窗體,所用的程序都駐留在窗體模塊中,而當(dāng)應(yīng)用程序龐大復(fù)雜時,就要另外附加窗體。最終可能有幾個窗體中有一些共同都要執(zhí)行的代碼,為了在兩個窗體中不產(chǎn)生重復(fù)代碼,可創(chuàng)建一個獨立的模塊,用它實現(xiàn)代碼公用。該獨立模塊即是標(biāo)準(zhǔn)模塊。此外還可以建立包含共享代碼與數(shù)據(jù)的類模塊。每個標(biāo)準(zhǔn)模塊、類模塊和窗體模塊可包含:聲明??蓪⒊?shù)、類型、變量和動態(tài)鏈接庫(DL

2、L)過程的聲明放在窗體、類或標(biāo)準(zhǔn)模塊的聲明部分。每個模塊只有一個聲明部分過程。每個模塊可有多個過程,過程是劃分VB代碼的最小單元,每個過程是一個可執(zhí)行的代碼片段。VB中主要有子過程、函數(shù)過程或者屬性過程等各種模塊類型1. 窗體模塊由于VB是面向?qū)ο蟮膽?yīng)用程序開發(fā)工具,所以應(yīng)用程序的代碼結(jié)構(gòu)就是該程序在屏幕上表示的對應(yīng)模型。根據(jù)定交,對象包含數(shù)據(jù)和代碼。應(yīng)用程序中的每個窗體都有一個相對應(yīng)的窗體模塊(文件擴(kuò)展名為.frm)窗體模塊是VB應(yīng)用程序的基礎(chǔ)。窗體模塊可以包含處理事件的過程、通用過程以及變量、常數(shù)、自定義類型和外部過程的窗體級聲明。寫入窗體模塊的代碼是該窗體所屬的具體應(yīng)用程序?qū)S玫模灰部梢?/p>

3、引用該程序內(nèi)的其它窗體和對象每個窗體模塊都包含事件過程,在事件過程中有為響應(yīng)該事件而執(zhí)行的程序段。窗體可包含控件。在窗體模塊中,對窗體上的每個控件都有一個對應(yīng)的事件過程集。除了事件過程,窗體模塊還可包含通用過程,它對來自該窗體中任何事件過程的調(diào)用都作出響應(yīng)。2. 標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊是程序中的一個獨立容器,包含全局變量、Function(函數(shù))過程和Sub過程(子過程)??蓪⒛切┡c特定窗體或控件無關(guān)的代碼放入標(biāo)準(zhǔn)模塊中。標(biāo)準(zhǔn)模塊中包含應(yīng)用程序內(nèi)的允許其它模塊訪問的過程和聲明。它們可以包含變量、常數(shù)、類型、外部過程和全局聲明或模塊級聲明。寫入標(biāo)準(zhǔn)模塊的代碼不必固定在特定的應(yīng)用程序上;(1)使用標(biāo)準(zhǔn)模

4、塊在編寫程序時,很可能會遇到一些使用相同變量和例程的窗體和事件過程。在缺省狀態(tài)下,變量對于事件過程來說是局部的,就是說僅能在創(chuàng)建這些變量的事件過程中讀取或者修改變量。與之相似,事件過程對于創(chuàng)建它們的窗體來說也是局部。為了在工程中的所有窗體和事件中共享變量和過程,需要在該工程的一個或多個標(biāo)準(zhǔn)模塊中對它們進(jìn)行聲明和定義。標(biāo)準(zhǔn)模塊或代碼模塊是具有文件擴(kuò)展名.bas,并包含能夠在程序任何地方使用的變量和過程的特殊文件。正如窗體一樣,標(biāo)準(zhǔn)模塊被單獨列在Project(工程)窗口內(nèi),并可通過使用File(文件)菜單中的SaveModulelAs菜單項存盤。但是,與窗體不同,標(biāo)準(zhǔn)模塊不包含對象或?qū)傩栽O(shè)置而只

5、包含可在代碼窗口中顯示和編輯的代碼。(2)創(chuàng)建標(biāo)準(zhǔn)模塊如要在程序中創(chuàng)建新的標(biāo)準(zhǔn)模塊,那么單擊工具條AddForm(添加窗體)按鈕上的下箭頭并單擊Mode(模塊),或者單擊Project(工程)菜單中的AddModule(添加模塊)菜單項。在工程中創(chuàng)建一個空的標(biāo)準(zhǔn)模塊的步驟如下:51 :啟動VB,打開一個新的標(biāo)準(zhǔn)工程,單擊工程菜單中的AddModule菜單項,單擊Open按鈕。VB在工程中增加一個名為Module的標(biāo)準(zhǔn)模塊。該模塊對應(yīng)的代碼窗口被打開,對象和過程列表框的內(nèi)容表明該標(biāo)準(zhǔn)模塊的通用聲明已被打開。在此所聲明的變量與過程在整個程序都可以使用。52 :雙擊工程資源管理器窗口的標(biāo)題條,以便能

6、看到整個工程資源管理器窗口,53 :在File(文件)菜單中,單擊SaveModulelAsS4:如果D:VB6sbsless10文件夾未被選擇時,選擇該文件夾,鍵入MyTestMod.bas,然后按回車。該標(biāo)準(zhǔn)模塊作為MyTestMod.bass文件保存到磁盤,并且可以通過Project(工程)的AddFile菜單項可將此文件通過其文件名加載到另一個工程中S5:雙擊Project(屬性)窗口標(biāo)題條。由于模塊不包含對象,因此它惟一的屬性就是NameS6:將Name屬性改為modVariables,然后按ENTER鍵。(3)聲明公用變量在標(biāo)準(zhǔn)模塊中聲明全局變量十分簡單,鍵入關(guān)鍵字Public,后

7、跟該變量名。缺省狀態(tài)下,公用就量在模塊中被聲明為變體類型,但是可以通過使用As關(guān)鍵字來指定相應(yīng)類型,可以把公用變量聲明為某個指定的基本類型。3. 類模塊在VB中類模塊是面向?qū)ο缶幊痰幕A(chǔ)??梢栽陬惸K中編寫代碼建立新對象。這些新對象可以包含自定義的屬性和方法。實際上,窗體正是這樣一種類模塊,在其上可安放控件,可顯示窗體窗口用類模塊創(chuàng)建對象,這些對象可被應(yīng)用程序內(nèi)的過程調(diào)用。標(biāo)準(zhǔn)模塊只包含代碼,而類模塊包含代碼又包含數(shù)據(jù),可視為沒有物理表示的控件。模塊設(shè)計的考慮在VB中創(chuàng)建應(yīng)用程序的最重要的部分是設(shè)計階段。首先需要為應(yīng)用程序設(shè)計一個用戶界面,這個界面的設(shè)計比較容易確定。但設(shè)計代碼的結(jié)構(gòu)就是一項較

8、復(fù)雜的工作。構(gòu)造應(yīng)用程序的方法不同,可能會造成應(yīng)用程序的性能以及代碼的可維護(hù)性,可使用性不同。VB應(yīng)用程序呈層次結(jié)構(gòu)。典型應(yīng)用程序包括若干個模塊:應(yīng)用程序中每個窗體的窗體模塊、共享代碼的標(biāo)準(zhǔn)模塊和類模塊。每個模塊包含若干含有代碼的過程:Event過程,Sub過程或Function過程及Property過程。在很多情況中都存在著多個對象共享的重復(fù)過程。這種情況最好創(chuàng)建一個共享的子過程,使大家都可以調(diào)用它。即使將來修改這些子程序,則只在一個地方修改就可進(jìn)行全部修改,這將大大提高程序的可讀性和可維護(hù)性。可以把所有的共享操作放在標(biāo)準(zhǔn)的模塊中。代碼編輯器VB代碼編輯器是一個窗口,大多數(shù)代碼都在此窗口上編

9、寫。有許多便于編寫VB代碼的功能。在每個模塊中,對于模塊中包含的每個對象,將模塊中的代碼再細(xì)分出與對象對應(yīng)的獨立部分用"對象列表框"實現(xiàn)各對象間的切換。對于模塊,列表包含一個通用段和一個類段;對于標(biāo)準(zhǔn)模塊,只有一個通用段被顯示。每一段代碼都可包含若干個用"過程列表框"訪問的不同過程。對窗體或控件的每一個事件過程,窗體模塊的過程列表都包含一個獨立的段。類模塊只列舉本身的事件從初始化到終止。標(biāo)準(zhǔn)模塊的過程列舉任何事件過程,因為標(biāo)準(zhǔn)模塊不支持事件。模塊通用段的過程列表只包含聲明段,其中放置模塊級的變量、常數(shù)和DLL聲明VB代碼編輯器的一些功能和用法:1. 自動

10、完成編碼VB能自動填充語句、屬性和參數(shù),這些性能使編寫代碼更加方便。在輸入代碼時,編輯器列舉適當(dāng)?shù)倪x擇。通過"工具"菜單上的"選項"命令訪問"選項"對話框,在"選項"對話框的"編輯器"選項卡上可以選擇"自動列出成員特性",由它們決定是允許還禁止代各碼的設(shè)置值。在代碼中輸入一控件名時,"自動列出成員特性"會顯示出這個控件的下拉式屬性表。鍵入屬性名的前幾個字母,就會從表中選中該名字,按Tab鍵將完成輸入。當(dāng)不能確認(rèn)給定的控件有什么樣的屬性時,這個選項是非常有幫

11、助的。即使選擇了禁止"自動列出成員特性",仍可使用CTRL+J組合鍵得到這種性能。"自動快速信息"功能可顯示語句和函數(shù)的語法。2. 書簽在代碼編輯器中書簽可用來標(biāo)記代碼的某些行,以便以后可以很容易地返回這些行。書簽開關(guān)的切換以及定位到已有書簽的命令可以在編輯菜單中書簽選項中得到。過程過程概述一個應(yīng)用程序是由若干模塊組成的,而每個模塊又是由若干個更小的代碼片段組成,將組成這些模塊的代碼片段稱為過程。通過過程,可以將整個程序按功能進(jìn)行分塊,每個過程用來完成一項特定的功能。使用過程來組織代碼,不僅可以使程序的結(jié)構(gòu)更加清晰,而且便于查找和修改代碼。當(dāng)在其它工程中

12、使用某個相同功能時,可以將過程作為可重用的代碼,直接拿到該工程中使用。1. VB是過程基本分類:函數(shù)過程(Functi9onProcedure):函數(shù)過程用來完成特定的功能并返回相應(yīng)的結(jié)果。在事件或其它過程中可按名稱調(diào)用函數(shù)。函數(shù)過程能夠接收參數(shù),并且總是以該函數(shù)名返回一個值。這類過程一般用于完成計算任務(wù)。子過程:子過程是沒有返回值的函數(shù)。在事件過程或其它過程中可按名稱調(diào)用子過程。子過程能夠接收到參數(shù),并可用于完成過程中的任務(wù)并返回一些數(shù)值。但是,與函數(shù)過程不同,子過程不返回與其特定子過程名相關(guān)聯(lián)的值。子過程一般用于接收或處理輸入數(shù)據(jù)、顯示輸出或者設(shè)置屬性。屬性過程:屬性過程用來創(chuàng)建和操作程序

13、中用戶定義的屬性。這是一種有用的,在某種程度上相當(dāng)高級的特性,它使能夠定制現(xiàn)有的VB控件并通過創(chuàng)建新的對象,屬性和方法來擴(kuò)展VB語言通用過程:允許把一個經(jīng)常用到的過程以熟悉的名稱寫入某個標(biāo)準(zhǔn)模塊中。2. 使用過程編程的優(yōu)點消除了重復(fù)語句行。使程序更易閱讀。簡化了程序開發(fā)其它程序可重復(fù)使用該通用過程擴(kuò)展VB語言子過程子過程是在響應(yīng)事件時執(zhí)行的程序段。將模塊中的代碼分成子過程后,在應(yīng)用程序中查找和修改代碼變得更容易了,子過程類似于用戶自定義函數(shù),不同之處是子過程不返回與其名稱相關(guān)聯(lián)的值,子過程一般用來從用戶那里得到輸入數(shù)據(jù)、顯示或打印信息,或者操縱與某一條件相關(guān)的幾種屬性。子過程也用來在過程調(diào)用中

14、處理和返回若干個變量。1. 子過程的語法(1)子過程語法Private|Public|FriendStaticSub過程名(參數(shù)表)程序段Exitsub程序段EndSubSub語句的語法包含下面部分:Public可選的。表示所有模塊的所有其它過程都可訪問這個Sub過程。如果在包含OptionPrivate的模塊中使用,則這個過程在該工程外是不可使用的Private可選的。表示只有在包含其聲明的模塊中的其它過程可以訪問該Sub過程Friend可選的。只能在類模塊中使用。表示該Sub過程在整個工程中都可見的,但對對象實例的控件者是不可見的。Static可選的。表示在調(diào)用之間保留Sub過程的局部就量

15、的值Static屬性對在Sub外聲明的變量不會產(chǎn)生影響,即使過程中也使用了這些變量。過程名是必需。Sub的名稱遵循標(biāo)準(zhǔn)的變量命名約定。參數(shù)表是可選的。代表在調(diào)用時要傳遞給Sub過程的參數(shù)的變量列表。多個變量由用逗號隔開需要說明:如果沒有使用Private,Public或Friend,Sub過程在缺省情況是公用的。如果沒有使用Static,則在調(diào)用之后不會保留變量的值。Friend關(guān)鍵字只能在類模塊中使用。不過Friend過程可以被工程的任何模塊中的過程訪問。Friend過程不會在其父類的燈型庫中出現(xiàn),且Friend過程不能被后期綁定。2.Sub過程可以是遞歸的,也就是說,該過程可以調(diào)用自己來完

16、成某個特定的任務(wù)。不過,遞歸可能會導(dǎo)致堆棧上溢。通常Static關(guān)鍵字和遞歸的Sub過程不在一起使用。3. 所有的可執(zhí)行代碼都必須屬于某個過程,不能在別的Sub,F(xiàn)unction或Property過程中定義Sub過程。4. ExitSub語句使執(zhí)行從一個Sub過程中退出。5.Sub過程與Function過程的相似之處是:它們都是一個可以獲取參數(shù),執(zhí)行一系列語句,以及改變其參數(shù)的值的獨立過程。而與Function過程不同的是Sub過程不能用于表達(dá)式6. 可以使用過程名并后跟相應(yīng)的參數(shù)列表來調(diào)用一個Sub過程。7. 在Sub過程中使用的變量分類為兩類:一類是在過程內(nèi)顯示定義的,另一類則不是。8.

17、不能使用GoSub,GoTo或Return來進(jìn)入或退出Sub過程9每次調(diào)用過程都會執(zhí)行Sub和EndSub之間的語句塊。可以將子過程放入標(biāo)準(zhǔn)模塊、類模塊和窗體模塊中。10. 在過程調(diào)用中,發(fā)送到子過程的參數(shù)值和類型必須與子過程聲明語句中參數(shù)值和類型相符11. 將變量傳遞給過程被稱為傳遞稱為引用參數(shù),因為變量能夠被過程修改并返回給程序。(2)調(diào)用子過程在程序中調(diào)用子過程需要指明該過程的名稱,然后列出子過程所要求的參數(shù)。例如,要使用文字字符串調(diào)用AddNameToListBox過程,可以鍵入如下語句:AddNameToListBox"Kimberly"與之相似,通過鍵入如下語句

18、可以使用變量來調(diào)用該過程AddNameToListBoxNewName$在這兩種情況下,AddNameToListBox過程在列表框中添加確定的名稱。在該過程中,按值調(diào)用和按址調(diào)用肝產(chǎn)生相似的結(jié)果,因為在過程中并未修改該參數(shù)。(3)使用子過程管理輸入在程序中,當(dāng)信息來自于兩個或多個來源,并需要采用相同格式時同,就往往使用子過程處理所輸入的信息。2. 通用過程通用過程表示如何完成一指定的任務(wù)。一旦定義了通用過程,可由其他過程來調(diào)用。建立通用過程的理由之一就是幾個不同的事件過程也許要執(zhí)行同樣的動作。將公共語句放入通用過程,并用事件過程來調(diào)用它,這樣就不必重復(fù)代碼,也容易維護(hù)應(yīng)用程序。通用過程包含在

19、標(biāo)準(zhǔn)模塊中,它可由程序中任何部分調(diào)用。通用過程與事件過程不同,因為它并不與某個運(yùn)行事件或使用工具箱控件創(chuàng)建的對象相關(guān)聯(lián)。通用過程與VB的內(nèi)建語句和函數(shù)類似,它們都名稱調(diào)用、可接收參數(shù)、并且分別完成一特定任務(wù)。3. 事件過程VB應(yīng)用程序是事件驅(qū)動的應(yīng)用程序,事件是窗體或控件所能識別的動作。在響應(yīng)事件時,應(yīng)用程序執(zhí)行代碼。VB的每一個窗體和控件都存放在一個預(yù)定義的事件集。運(yùn)行應(yīng)用程序時,當(dāng)某個事件發(fā)生,而且在與該事件關(guān)聯(lián)的過程中存在代碼,則VB就會調(diào)用該事件過程。因為事件過程的過程名在對象和代碼之間建立了聯(lián)系,所以可以說事件過程是附加在窗體和控件上的。每個事件對應(yīng)一個事件過程,如果讓控件響應(yīng)事件時

20、就要把相應(yīng)的代碼寫入到這個事件的事件過程中。一個控件的事件過程將控件的實際名字、下劃線(_)和事件名組合起來。控件事件的語法和窗體事件的語法PrivateSubcontrolnake_eventname(參數(shù)表)語句塊ExitSub語句塊EndSubPrivateSubForm_eventname(參數(shù)表)語句塊ExitSub語句塊EndSubFunction過程VB包含內(nèi)置的或內(nèi)部的函數(shù),還可用Function語句編寫自己的Function過程。在定義了一個函數(shù)之后,可以像調(diào)用任何一個VB的內(nèi)部函數(shù)一樣使用它,即可以在任何表達(dá)式,語句或函數(shù)中引用它。函數(shù)過程是標(biāo)準(zhǔn)模塊中位中Functionn

21、語句與EndFunction語句之間的一系列語句。函數(shù)中的這些語句完成附某些有意義的工作,一般是處理文本,進(jìn)行輸入或計算一個值。通過將函數(shù)名與便條所需的參數(shù)一起置于一條程序語句中,可以調(diào)用該函數(shù)。換句話說,使用函數(shù)過程與使用內(nèi)置函數(shù)(比如Time,Int或Str等)的方法完全相同。每個函數(shù)完成一種服務(wù),比如進(jìn)行計算并返回一個值。在標(biāo)準(zhǔn)模塊中聲明的函數(shù)在缺省的狀態(tài)下是公用函數(shù),它們可在任何事件中過程中使用。1. 函數(shù)過程的語法數(shù)據(jù)Public|Private|FriendStaticFunctionName(Arglist)As類型程序段Name=ExpressionExitFunction程序

22、段Name=ExpressionEndFunctionFunction語句的語法包含下面部分:Public表示所有模塊的所有過程都可訪問這個Function過程。如果是在包含OptionPrivate的模塊中使用,則這個過程在該工程外是不可使用的。Private表示只有包含其聲明的模塊的過程要以訪問該Function過程。Friend只能在類模塊中使用。表示該Function過程在整個工程中都是可見的,但對于對象實例的控制者是不可見的。Static表示在調(diào)用之間將保留Function過程的局部變量值。Staticc屬性對在該Function外聲明的變量不會產(chǎn)生影響,即使過程中也使用了這些變量。

23、Name是Function的名稱;遵循標(biāo)準(zhǔn)的變量命名約定。Arglist代表在調(diào)用時要傳遞給Function過程的參數(shù)變量列表,多個參數(shù)變量應(yīng)用逗號隔開。數(shù)據(jù)類型是Function過程的返回值的數(shù)據(jù)類型,可以是Byte,Boolean,Integer,Long,Currency,Single,Double,Date,Strig(不包含定長字符串),Object,Variant或任何用戶定義類型。程序段是在Function過程中執(zhí)行的任何語句塊。Expression是Function的返回值。其中的參數(shù)表,參數(shù)的語法以及語法各個部分如下:OptionByVal|ByRefParamArrayVa

24、rname()As數(shù)據(jù)類型=defaultvalueOptional表示參數(shù)不是必需的。如果使用了該選項,則Arglist中的后續(xù)參數(shù)都必須是可選的,而且必須都使用Optional關(guān)鍵字聲明。如果使用了ParamArray,則任何參數(shù)都不能使用Optional聲明。ByVal表示該參數(shù)按值傳遞。ByRef表示該參數(shù)按地址傳遞,ByRef是VB的缺省選項。ParamArray只用于Arglist的最后一個參數(shù),指明最后這個參數(shù)是一個Variant元素的Optional數(shù)組。Varname代表參數(shù)的變量的名稱;遵循標(biāo)準(zhǔn)的變量命名約定。數(shù)據(jù)類型表示傳遞給該過程的參數(shù)的數(shù)據(jù)類型;可以是Byte,Boo

25、lean,Integer,Long,Currency,Single,Double,Date,String,Object或Variant.defaultvalue表示任何常數(shù)或常數(shù)表達(dá)式,只對于Option參數(shù)時是合法的。如果類型為Object,則顯示缺省值只能是Nothing簡要說明如下:1.如果沒有使用Public,Private或Friend顯示指定,則Functionn過程為公用。如果沒有使用Static,則局部變量的值在調(diào)用之后不會保留。Friend關(guān)鍵字只能在類模塊中使用。但Friend過程可以被工程的任何模塊中的過程訪問。Friend過程不會在其父類的類型庫中出現(xiàn)。2. Function過程可以是遞歸的;也就是說,該過程調(diào)用自己來完成某個特定的任務(wù)。不過,遞歸可能會導(dǎo)致堆棧上溢。通常Static關(guān)鍵字和遞歸Function過程不在一起使用3. 所有的可執(zhí)行代碼都必須屬于某個過程。4. ExitFunction語句使執(zhí)行立即從一個Function過程中退出。5. 與Sub過程一樣,F(xiàn)unction

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論