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

首頁 > 編程 > Delphi > 正文

Delphi&BCB一線程序員開發經驗

2019-11-18 17:58:40
字體:
來源:轉載
供稿:網友

Delphi&BCB一線程序員開發經驗

本鯊于2003年1月份從事程序開發工作,至今有19個月之久。其中斷斷續續地工作皆因自己經驗不足開發出來的東西粗制濫造,以致于漂泊不定,就業困難!而今本鯊已達了合格程序員的能力了。

 

一般來說 針對剛畢業的程序員開發任務只是一個項目中子項目中的一個模塊。 一個模塊差不多有5-6個窗體代碼量約有2000行。其實這種任務量和畢業設計不上下,應該能完成得了,只是開發的時間比較少,約6-12天的工作日,而不是學校里的1-2個月,另外還有同學幫助。所以對開發者對開發工具,語法,框架和庫熟練。另外對系統平臺運行機制和算法要求能了解,知道是怎么回事。要求對程序員能積極主動地工作,而不是被動工作。能主動去找資料,詢問同事,以及要求同事給予任務不明之處的協助。

  本鯊主要從事數據庫系統前臺的開發任務,因此主要使用數據庫常用組件來說明下,其實數據系統的前臺的任務是最繁重而總是遭受到用戶的指責。

 

  一般本鯊的開發步驟是:

0 了解任務需求

1先實行功能

2 解決功能的異常處理

3 實現用戶友好性

4 解決用戶友好性

性能問題就交給以后數據量大時用戶實在忍受不了再去解決!目前趕任務要緊,做數據庫前臺 無非是新增 刪除 修改 保存 查詢 統計!常用到以下組件

TEdit TComboBox TListView TTreeView TCheckListBox TLabel TDBGrid TImage TMemo TButton TDBChart TPanel TMaskEdit TDateTimePicker TPageControl

 

 

1代碼風格 只有在面試的時候, 你的代碼風格才會對面試官產生影響.風格是給人看的,自然要符合美觀條件.雖然有很多公司整了一套風格標準,我覺得很無聊得事情.風格之類沒有必要強求.既然大家用的是Borland工具最好遵循Borland風格.

2組件屬性設置

1 TLabel : AutoSize = Flase;

2 TEdit  設置 MaxLength值 默認輸入法的值

3 TComboBox 如果只容許選擇的話 Style:= csDropDownList; Sorted :=True;

當向其的Items添加數據時該

  FontCombo->Items->BeginUpdate(); // PRevent repaints until done

  FontCombo->Items->Add(“XXX”); //

  FontCombo->Items->EndUpdate(); //reenable painting

這點無論數據多少 TListView TTreeView TDBGird 都有類似的數據顯示屏蔽的功能

4 TTreeView 如果不修改節點的文字 要ReadOnly RowSelect = true;

5 TListView ViewStyle vsReport要ReadOnly RowSelect = true; 如果不修改

6 TPageControl 在FormShow 或者Create事件中 PageControl1.ActivePageIndex := 0;

7 TDateTimePicker DateFormat := dfLong  如果把時間復制到Edit中時

Edit.Text := DateTimeFormate(“YYYY-MM-DD”,DateTimePicker1.Date)

8 TButton 要設置 Cancel  ModalResult Hint

 

 

3 界面布局 相同的組件要放在一起 并且與周圍的對齊,上下左右對齊. 并且跟其他容器的組件對齊 ,這點很多新手忽視了!因為Borland對齊工具只能對親本容器下的 ,最后給人一整齊的美觀.

界面布局細則

1):完成相同或相近功能的按鈕用Frame框起來,常用按鈕要支持快捷方式。

2):完成同一功能或任務的元素放在集中位置,減少鼠標移動的距離。

3):按功能將界面劃分局域塊,用Frame框括起來,并要有功能說明或標題。

4):界面要支持鍵盤自動瀏覽按鈕功能,即按Tab鍵的自動切換功能。

5):界面上首先應輸入的和重要信息的控件在Tab順序中應當靠前,位置也應放在窗口上較醒目的位置。

6):同一界面上的控件數最好不要超過10個,多于10個時可以考慮使用分頁界面顯示。

7):分頁界面要支持在頁面間的快捷切換,常用組合快捷鍵Ctrl+Tab

8):默認按鈕要支持Enter及選操作,即按Enter后自動執行默認按鈕對應操作。

9):可寫控件檢測到非法輸入后應給出說明并能自動獲得焦點。

10):Tab鍵的順序與控件排列順序要一直,目前流行總體從上到下,同時行間從左到右的方式。

11):復選框和選項框按選擇幾率的高底而先后排列。

12):復選框和選項框要有默認選項,并支持Tab選擇。

13):選項數相同時多用選項框而不用下拉列表框。

14):界面空間較小時使用下拉框而不用選項框。

15):選項數叫少時使用選項框,相反使用下拉列表框。

16):專業性強的軟件要使用相關的專業術語,通用性界面則提倡使用通用性詞眼。

4 代碼

1功能檢查:檢查需求所要求的功能和限制條件是否全部實現

2 界限檢查:對功能進行界限檢查 比如不同的數據類型輸入 或者是不同范圍的數據

3非法訪問檢查:測試是否存在非法內存訪問錯誤。判斷是否屬于此類錯誤的參考錯誤信息類似:

”…not found”, ”List index out of bounds…”, “access violation at address…”

4:提示信息指導性檢查:在任何可輸入的地方,包括編輯框、表格框、選擇框隨意輸入任何字符,包括英文字符和中文字符,測試是否會引發非法訪問錯誤、對不可接受的字符是否有提示、提示指導性是否強。

5單元化檢查:檢查本單元內的 單元頭說明, 各個函數說明,注解說明是否正確。引用說明是否有多余之引用

//尤其是C++ 頭文件包含了不必要的Include 會給其他單元發生不必要的問題

其實這些叫做白合測試和單元測試內容。 如果是按照測試書而言 你要另外去寫測試的代碼,我想每個開發人員都不原意的!可不作又不行,容易出錯不好交貨的。因此非常有必要了解測試的方法,這些方法

大學的軟件工程都有介紹,而且考軟件設計師也要考的。每當寫程序時你就會留心考慮不同的情況下可能會出什么錯誤! 雖然在實現函數時要用到的變量是否會為空?值是否有效?是否溢出越界?是否清空變量的空間?是否大小寫的要求?是否前后有空格?

這些判斷首先要寫在函數,過程的開始處!

if(TreeView->Selected ==NULL) //變量是否會為空?

then return ;

 

std::vecotr<int> intArray;// 是否溢出越界?

if(intArray <=0)

then return;

 

if( i< ListView.Items->Count) // 是否溢出越界?

Edit->Text = ListView->Items-Item[i].Caption;

 

Edit->Text.Trim();//是否前后有空格?

 

char a[10];

memcpy(a,”/0”,10);// 是否清空變量的空間?

a[9]=’I’;   //其實你的當前函數要對傳來的變量要對它的空間寫東西的話一定要清空它在寫

             //使用你的函數的人寫個循環來調用的你的函數 變量會帶上一次的值過來,如果你的函數中間有判斷而沒有對其寫數據 那么就把上一次的數據返回給調用者!而調用者的判斷條件就會失去作用!

 

if(Name.Trim() ==”DELPHI”) then Name=”BCB”; 值是否有效?

switch() { case 要Break; 要default: ;}

 

5 默認數據,提示,定位和友好性

當界面顯示完后 該有數據默認顯示出來 TDBGird TListView TTreeView ComboBox 都該有數據顯示

ComboBox1.ItemIndex := 0;

一般來說新增和修改都會單對用一個界面來編輯。當新增完后回到瀏覽界面時 所有組件都要定位到剛剛新增的記錄上,修改也如此。當刪除時要定位到下一條記錄。

ListView 和DBGird 要具有排序的功能 單擊標題可按數字 字母 日期 升/降

ListView 和DBGird 當被選定數據 焦點被移動按鈕上作動作時 要顯示當前選擇的數據是哪行!!

void __fastcall TfrmGather760::lvDataCustomDrawItem(TCustomListView *Sender, TListItem *Item, TCustomDrawState State,bool &DefaultDraw) //這段代碼 會在選定行下畫黃底

{

  if(Sender->Selected !=NULL)

  if(Item->Index == Sender->Selected->Index)

  {

    Sender->Canvas->Brush->Color = clYellow;

    Sender->Canvas->Font->Color  = clBlue;

  }

}

對一般超過2秒的操作要在函數中

TCursor OldCursor;

OldCursor = Screen->Cursor;

Screen->Cursor = crSQLWait;

try{ 。。。。。。} __finally{Screen->Cursor = OldCursor;}

 

 

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);

begin

  if (Shift = []) and (Key = VK_RETURN) then  //以回車鍵代替Tab鍵

    Perform(WM_NEXTDLGCTL, 0, 0);

 

  if Key = VK_NEXT then //按PageUp PageDown使TPageControl切換頁面

  begin

    if PageControl.ActivePageIndex = PageControl.PageCount - 1 then

      PageControl.ActivePageIndex := 0

    else

      PageControl.ActivePageIndex := PageControl.ActivePageIndex + 1;

  end

  else if Key = VK_PRIOR then

  begin

   if PageControl.ActivePageIndex = 0 then

     PageControl.ActivePageIndex := PageControl.PageCount - 1

   else

    PageControl.ActivePageIndex := PageControl.ActivePageIndex - 1;

 end;

end;

end.

 

6 按鈕互徹

 當每完成一個操作動作時 有些按鈕要變成無效狀態,在什么情況下又恢復有效。雖然只有一段話,如果不設置無效的話會經常帶來各種致命錯誤!因為你是無法預測用戶將會如何去操作你的軟件,可用Rose來畫出狀態圖或者用Word來表示!

7 性能

  當數據多時超過100條,ComboBox Listbox TreeView ListView DBGrid 等數據顯示組件邊輸入邊查詢

支持模糊查詢 模糊查詢無非就是 Like ‘%XXX%’可以做個單獨的窗口把查到的數據顯示在窗口中

void __fastcall TfrmGather760::Edt_NameKeyPress(TObject *Sender,char &Key)

{

   if(Key != VK_RETURN)

return;

String sSQL;

sSQL  ="  Select Name as 姓名, Sales as  薪水 , from employee";    

sSQL +=" where Name like '%"+ LowerCase(Edt_Name->Text.Trim()) + "%' ";

TfrmPubDlg *pubDlg = new TfrmPubDlg(this);

pubDlg->ExecuteQuery(sSQL);

pubDlg->ShowModal();

.....

}

8 其他

 在開發一個模塊時會單獨使用個單元和DFM用作公共單元。會在單元里面 作個字符傳結構體

Struct  TableName

{

 String Name;

String FiledName;

......

}; //主要的是在更多的單元里保持一致 尤其是當表名發生改變時

std::vector<String> sErrorArry //統一出錯提示

Delphi ResoucString 段 可以被資源化更容易本地化

 

新增修改時 對數據的檢查 全部集中在保存按鈕下

void __fastcall TForm3::Btn_SaveClick(Sender)

{

  if(Edt_Name->Text.IsEmpty())

  {

   ShowMessage(“”);

  Edit_Name->SetFocus(); //焦點要定位

  return;

}

ModalResult = mrOk;

}

 

在校的學生們大部分的畢業設計都是數據庫之類的不是兩層就是三層。要認真去做畢業設計的程序,要花錢請同學幫你做測試,提出更多的操作便利性。只有通過別人的測試,使用你的能力才會提高,代碼大多數是異常處理和用戶友好性!你帶著作品去找工作會非常容易找到好的公司

 

其實從事數據庫前臺開發,重要的是寫用戶友好性代碼!作程序員不僅僅是智力勞動 更是體力和心力的勞動!



上一篇:Delphi的RSS開源項目正式啟動了

下一篇:Delphi與DirectShow&amp;amp;DSPack/在Delphi7.0下安裝DSPack

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人亚洲福利一区二区三区| 久久亚洲精品国产亚洲老地址| 成人欧美在线观看| 欧美一级淫片aaaaaaa视频| 中文字幕av一区二区三区谷原希美| 热re99久久精品国产66热| 久久久精品日本| 九九九热精品免费视频观看网站| 国产精品久久久久久久久久久久久| 成人性教育视频在线观看| 久久国产精品影片| 欧美日韩国内自拍| 91av在线精品| 久久精品电影一区二区| 欧美特黄级在线| 欧美国产在线视频| 亚洲电影免费观看| 国产精品嫩草影院一区二区| 欧美福利小视频| 精品免费在线视频| 国产精品久久久久免费a∨| 日韩成人av在线播放| 欧美黄色性视频| 成人深夜直播免费观看| 最近2019好看的中文字幕免费| 国产精品伦子伦免费视频| 日本一区二区三区在线播放| 久久精品国产99国产精品澳门| 成人午夜激情免费视频| 68精品久久久久久欧美| 秋霞成人午夜鲁丝一区二区三区| 中文字幕日韩欧美在线视频| 九九热r在线视频精品| 成人性生交大片免费看视频直播| 国产美女高潮久久白浆| 国产98色在线| 日韩精品在线观看网站| 性欧美在线看片a免费观看| 这里只有精品久久| 久久黄色av网站| 精品亚洲夜色av98在线观看| 奇米四色中文综合久久| 久久999免费视频| 欧美一级bbbbb性bbbb喷潮片| 国产欧美日韩精品在线观看| 欧美精品在线第一页| 欧美视频不卡中文| 欧美裸体xxxx极品少妇软件| 69**夜色精品国产69乱| 日韩高清免费在线| 91精品视频在线免费观看| 最新91在线视频| 亚洲最大的网站| 精品一区二区电影| 日韩在线播放视频| 欧洲美女免费图片一区| 成人黄色影片在线| 国产日韩欧美自拍| 欧美性猛交视频| 亚洲自拍欧美色图| 国产精品白丝av嫩草影院| 茄子视频成人在线| 69视频在线播放| 国产精品专区一| 欧洲精品在线视频| 国产网站欧美日韩免费精品在线观看| 久久69精品久久久久久久电影好| 精品偷拍各种wc美女嘘嘘| 精品国产视频在线| 日韩成人激情视频| 欲色天天网综合久久| 欧美专区在线视频| 日韩一区二区福利| 日韩欧美在线国产| 91av在线看| 国产精品青草久久久久福利99| 欧美国产日本在线| 最近日韩中文字幕中文| 欧美制服第一页| 久久视频精品在线| 久久久久久欧美| 中文字幕一区日韩电影| 国产欧美日韩精品在线观看| 欧美大片va欧美在线播放| 日韩美女免费线视频| 亚洲国产精品国自产拍av秋霞| 亚洲高清一区二| 92福利视频午夜1000合集在线观看| 亚洲sss综合天堂久久| 中文字幕日韩欧美精品在线观看| 国产91在线播放精品91| 国产日韩换脸av一区在线观看| 国产极品jizzhd欧美| 久久久影视精品| 欧美性猛交xxxx黑人猛交| 日韩欧美在线一区| 国产91av在线| 欧美一级黑人aaaaaaa做受| 色99之美女主播在线视频| 亚洲国产精品yw在线观看| 欧美日韩激情视频| 国产欧美一区二区三区在线| 成人午夜在线视频一区| 日本韩国在线不卡| 清纯唯美亚洲激情| 日韩一中文字幕| 日韩中文字幕在线视频播放| 在线亚洲午夜片av大片| 最近2019中文免费高清视频观看www99| 久久亚洲影音av资源网| 欧美另类69精品久久久久9999| 麻豆国产精品va在线观看不卡| 欧美一区二区三区图| 亚洲欧美日韩国产中文专区| 亚洲欧美激情一区| 久久精品国产91精品亚洲| 九九九热精品免费视频观看网站| 久操成人在线视频| 久久久天堂国产精品女人| 亚洲人成在线一二| 成人久久18免费网站图片| 久久精品精品电影网| 性欧美xxxx交| 色妞色视频一区二区三区四区| 日韩www在线| 日韩精品丝袜在线| 国产精品久久久久久av福利| 欧美野外猛男的大粗鳮| 日韩成人在线免费观看| 91社区国产高清| 亚洲免费高清视频| 欧美一级在线亚洲天堂| 日韩美女免费观看| 亚洲网站在线观看| 国产精品久久久久久久久久久久| 69久久夜色精品国产69| 国产日韩精品在线播放| 国产a级全部精品| 欧美激情成人在线视频| 亚洲国产成人av在线| 欧美巨乳美女视频| 国产精品日韩欧美大师| 日韩av手机在线看| 日韩人在线观看| 久久免费成人精品视频| 久久99久久亚洲国产| 亚洲美女久久久| 成人精品网站在线观看| 国产福利精品在线| 日韩在线观看网站| 亚洲性夜色噜噜噜7777| 久久91超碰青草是什么| 夜夜狂射影院欧美极品| 欧美一区第一页| 日韩一区二区精品视频| 国产精品av网站| 久久久久99精品久久久久| 久久九九热免费视频| 爽爽爽爽爽爽爽成人免费观看| 91麻豆国产精品| 日韩欧美成人网| 九九精品在线播放| 欧美福利小视频| 最近2019好看的中文字幕免费|