当界面显示完后 该有数据默认显示出来 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; } 在校的学生们大部分的毕业设计都是数据库之类的不是两层就是三层。要认真去做毕业设计的程序,要花钱请同学帮你做测试,提出更多的操作便利性。只有通过别人的测试,使用你的能力才会提高,代码大多数是异常处理和用户友好性!你带着作品去找工作会非常容易找到好的公司 其实从事数据库前台开发,重要的是写用户友好性代码!作程序员不仅仅是智力劳动 更是体力和心力的劳动!
上一页 [1] [2] [Delphi程序]Delphi(BCB)中编译器版本宏定义 [Delphi程序]如何用Tprinter设计BCB操作数据库程序中的报表 [Delphi程序]用日志钩子来实现键盘钩子功能之delphi/bcb版本 [Web开发]ADO多表更新BCB實現 [Sql Server]BCB 6 sp4 + SQL Server 2k 存取JPEG图像,绝对好…
|