?? 疑難問題思索過程.txt
字號:
關于登陸的進度條動畫問題——已解決
(2種方法:1.使用VB提供的經典進度條,優點是方便快捷,缺點是界面太難看。2.使用TIMER控制一個很小的圖形并拉長。優點是相當美觀,缺點是需要使用PHOTOSHOP來制作,費時費力,且需要與背景配合。本系統考慮到需要一個統一界面,采用第二種方法。)
關于全圖形窗口移動問題——已解決
(見任意子窗體代碼開頭)
關于圖形化工具欄替代問題——已解決
(frmmainbutton的全圖形化控制在主窗體中的位置,用位圖來替代按鈕)
關于工具欄按鈕動畫問題——已解決
(用MOVE方法來控制多圖形的切換,關鍵在X坐標。同樣點擊事件也是用X坐標來控制,這點非常重要)
關于工具欄隨主窗體大小而長度變化保持滿屏問題——已解決
(用REZISE方法來控制工具欄的大小,注意這里測試得出長度是比主窗體小123數值,還有原始圖片的長度像素是1024才行)
關于工具欄的隨主窗體啟動時由上自下出來動畫問題——已解決
(用一個TIMER來控制下來動畫,注意是控制frmmainbutton的Top屬性,而不是Height屬性,否則就是變形動畫而不是下拉動畫了)
關于學員信息增加后人性化提示及時更新該學員的成績信息——已解決
(兩點:一是按確定后回到成績添加信息窗體中,并已經幫用戶填寫好學期、姓名和ID,只需要直接填寫成績即可;二是按取消后系統自動添加該學員的相關信息到相應的學期表中,并設置所有成績為0,這樣可以保證學員信息和成績信息一一對應,不會出現錯誤。)
關于清空數據庫時選擇性清空的問題——已解決
(使用SELECT CASE來控制T-SQL,然后調用清空函數)
關于點擊清空數據庫后的動畫顯示問題——已解決
(確定后,使用類似于登陸的進度條表示清空過程,并使用第二個窗體表示清空成功。)
關于主窗體的背景切換問題——已解決
(當點擊相應的按鈕時,使用SET PIC...來更換對應的背景。同樣,MBOX窗體也是使用相同的辦法來制作眾多的信息框。缺點:需要使用PHOTOSHOP制作大量的位圖,見圖片資源文件夾中的圖片。)
關于不會使用標簽的問題——已解決
(在沒有教過使用標簽來制作分頁,而MSDN上也對標簽的使用介紹甚少的情況下,可以用2種方法來實現。第一種方法:決定使用雙窗體來實現模擬標簽頁面,利用unload和show來切換頁面。優點:可以利用全圖形來制作相當精美的標簽頁面。缺點:制作相比較麻煩,需要制作透明按鈕、編寫各種狀態的處理情況、編寫上一個窗體的基本信息接受代碼和下一個窗體的設置代碼(比如實現切換后窗體的位置要不變)。同時如果標簽的數目超過三個,將大大增加代碼的數量。典型例子:增加數據功能的窗體frmadd1和frmadd2。第二種方法:所有的控件和位圖都將放在同一個窗體上,利用透明切換按鈕來控制相應的控件的有效無效和顯示隱藏。優點是由于只有一個窗體,沒有重復加載問題,對于外部的控制來說比較單一可靠。但缺點也很明顯,由于控件眾多,編寫代碼時相當繁瑣,且需要編寫相當多的狀態處理情況代碼,并且在加載時會變得緩慢。典型例子:編輯功能的窗體frmmdy。綜合兩種方法,個人比較贊同第一種,畢竟在編寫frmmdy時已經成為一個痛苦的經歷。frmmdy中有4個數據綁定控件、4個圖形容器(每個容器中有7個捆綁了數據的文本框),4個捆綁了數據的下拉文本框。兩個透明按鈕分別控制這所有的控件的有效無效和顯示隱藏。在frmmdy中的控制非常復繁,且容易出錯。這個是兩個標簽時的情況,如果標簽數增加,采用這種辦法的代碼量將成倍增加,所以個人推薦不使用第二種方法。)
關于雙窗體的重復加載問題——已解決
(設定一個PUBLIC變量,儲存窗體的加載狀態,防止子窗體進入二級窗體時一級窗體還會被加載。典型例子:frmadd1和frmadd2、frmcleardb和frmcleardbing,以及frmserach和frmserach2。)
關于搜索結果的打印、保存問題——已解決
(2種方法:一是使用普通的print之類的函數和文件讀取保存函數進行打印、保存。但需要編寫大量的代碼來實現。二是利用報表來同時實現兩個功能。但注意需要避開系統提示“實時錯誤‘3705’:對象打開時,不允許操作”的問題。)
關于模糊查詢的樹形結構實現問題——已解決
(需要實現的效果:如同經典WINDOS的搜索,可以點擊相應的限定條件彈出詳細內容,而下面的選項將自動向下移動。當取消后詳細內容消失,下面的選項將回到原來的位置。實現原理:當點擊限定條件A時,將詳細內容B顯示(原先為隱藏),且下面所有限定選項在原來的Y坐標上加上詳細內容的高度,若下面的限定選項C有詳細內容D的,定義其詳細內容D的Y坐標是原來Y坐標上加B的高度。同樣,當取消限定選項時,所有操作相反即可。注意有一個特點:設定有5個限定選項,則最上面一個限定選項需要編寫4種情況,而第二個限定選項需要編寫3種情況...最后一個不需要編寫情況。詳細代碼見窗體frmserach2)
關于模糊搜索中需要搜索兩個表的問題——已解決
(比如在學員表中有ID和NAME,成績表中有ID和MAK,其中ID對應,則可以使用語句SELECT STUMAK.* FROM STUINFO,STUMAK WHERE 1=1 and STUINFO.ID=STUMAK.ID來鏈接搜索兩個表,且可以再添加如:and stumak.計算機基礎 between 80 and 100 或者 and stuinfo.name='%東%'來進行模糊查詢。說明:前一個是查詢《計算機基礎》成績在80~100的所有學員的成績信息,后一個是查詢所有名字包含“東”字所有學員的所有成績信息)
關于顯示Help文檔——已解決
(利用Dreamweaver制作好HTML文檔,再導入QuickCHM即可打包成一個CHM。這里注意QuickCHM并不好用,不能像軟件說的那樣可以在其主界面中編輯,且不能保存成項目文件,否則下次打開時會陷入死循環。所以建議一次性做好所有頁面,一次性導入和一次性打包。在VB中可以用通用對話框的SHOWHELP來打開幫助文檔,但可惜,我沒有發現它可以支持CHM文檔,它好像只支持HLP文檔。不過后來找到SHELL函數,用它可以調用EXE,這樣足夠了。我能將任意非exe文件變成EXE文件。最后將兩個幫助文件轉成的EXE文件放到了主程序的目錄下,問題完美解決。)
關于鎖定系統的問題——已解決
(鎖定計算機需要做一個主窗體的文本框儲存當前用戶的密碼,當鎖定時,出現一個有模式的窗體,用戶名已有,且不能修改,需輸入相應密碼,密碼驗證是和主窗體的密碼框驗證。如果密碼輸入錯誤將清空錯誤的密碼,不提示任何信息。)
關于鎖定系統時數據隱藏的問題——已解決
(目標是在鎖定時不能出現主窗體的任何已打開的數據窗體,以保護數據安全。想出數種方法進行解決。1.最簡單的辦法是將所有已經打開的窗體關閉,但這樣會丟失數據。但如果是隱藏的話,經實踐,窗體在打開之前的Enabled均為空,不能使用IF判斷。2.記錄所有子窗體的數據,鎖定時關閉其他子窗體,解鎖時還原所有數據。這種辦法最復雜且低效,沒有實踐過。3.鎖定窗體帶有屏蔽頁面,鎖定時,鎖定頁面最大顯示以蓋住所有子窗體。但經過實踐發現需要最大化顯示必須將鎖定頁面設置為子窗體,但有模式顯示就不能在子窗體上實現。如果不是有模式用戶在鎖定時可以直接單擊最小化、還原之類按鈕跳過密碼輸入解鎖這個環節,鎖定將失效。4.建立一個專門的屏蔽子窗體——frmlockback,啟動鎖定時先啟動屏蔽子窗體,再使用有模式加載鎖定窗體。這樣的好處是可以簡單地屏蔽所有數據窗體,且可以設置為啟動最大化。因為加載有模式鎖定窗體后將不能點擊任何除鎖定窗體外的窗體,所以不用擔心屏蔽窗體會被點擊最大化按鈕。還有這樣做可以單獨設置屏蔽窗體的背景和顏色,提高鎖定時的美觀度。我在屏蔽窗體中加載了一個循環動畫,使用from_load時加載到其右下方,進一步避免了主窗體大小更改時鎖定后屏蔽窗體的背景混亂狀態。)
關于鎖定系統后忘記的問題——已解決
(當鎖定軟件后,只能登陸當前用戶的密碼才能解鎖。如果不慎忘記密碼,只有強行結束該進程,但所有未保存數據會丟失。現提供一個解決辦法:再啟動一次《ACCP學員管理系統》,進入帳戶管理,使用密碼“123”登陸,查看相關的用戶和密碼。)
關于登陸窗體中類似于QQ的帳戶記錄功能——已解決
(建立兩個INI文件,一個是user.ini,一個是users.ini,user.ini記錄所有登陸過的用戶名,users.ini記錄所有登陸用戶的登陸時間和退出時間。這兩個用戶文件可以提高登陸速度、供系統管理者查詢使用情況。系統提供兩個用戶記錄文件的初始化功能。)
關于登陸窗體的密碼的強度檢查——已解決
(檢查密碼的字符串,如果是全數字則顯示低強度紅色圖標,如果是6位以上數字或者6位以下字母則顯示中強度黃色圖標,如果是6位以上的數字加字母則顯示高強度綠色圖標。登陸后狀態欄提示該用戶的密碼強度。推薦用戶使用高強度的密碼。)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -