Time of Update: 2018-12-07
//恢複布局 IniFileName := ExtractFilePath(Application.ExeName) + 'Layout/' + Self.Name + '.ini'; if FileExists(IniFileName) then Self.tvResult.RestoreFromIniFile(IniFileName) //從布局檔案中恢複 else begin Self.tvResult.BeginUpdate; for i := 0 to
Time of Update: 2018-12-07
專門設計一個資料表用於存放管理軟體中各種單據的最新的單據編號。編寫一個預存程序用於自動產生單據編號。 --****************--計算id--使用//表級排它鎖//防止使用者同時修改該記錄--****************CREATE PROCEDURE GetId@xh integer,@id integer outAS /*如果想在串連一中鎖住整個表,不允許其他事務更新表中任何記錄,但可以讀取記錄,可使用HOLDLOCK選項,即(HOLDLOCK 等同於
Time of Update: 2018-12-07
模型驅動設計承諾帶來開發時間的縮短、bug的減少以及更好的可維護性。這是黃粱美夢嗎?或許Matthew Overington會說不是。軟體開發行業花了數年功夫經曆了大規模成本削減的曆程,並開始新的進展。對軟體開發過程而言,我們需要更好的預測性、透明性和可信性。建模並不是一個新的名詞。它是軟體設計和開發中的重要一環,但企業目前進行中更聰明和野心勃勃的計劃,應用程式模型來解決很多多年的老問題。其中一個問題就是當前的編碼方法對建模的依賴-只有當模型經常更新維護時它才是有用的。過時的模型實質上是無用的,
Time of Update: 2018-12-07
使用FocusedView屬性得到當前焦點View,用View.DataController得到對應的Data Controller, 之後使用Data Controller的方法來操作資料: - Append - Insert - Post - Cancel - DeleteFocused - DeleteSelection 樣本: var ARecIndex: Integer; … View.DataController.Append; ARecIndex :=
Time of Update: 2018-12-07
在內建右鍵菜單的後面增加功能表項目 首先應在Form上加一個cxGridPopupMenu控制項 以啟用右鍵菜單 UseBuildInPopupMenus設為True procedure TFormItemList.FormCreate(Sender: TObject); var AMenu: TComponent; FMenuItem, FSubMenuItem: TMenuItem; begin AMenu := nil; if
Time of Update: 2018-12-07
"臨界區"(CriticalSection): 當把一段代碼放入一個臨界區, 線程執行到臨界區時就獨佔了, 讓其他也要執行此代碼的線程先等等; 這和前面用的 Lock 和 UnLock 差不多; 使用格式如下:var CS: TRTLCriticalSection; {聲明一個 TRTLCriticalSection 結構類型變數; 它應該是全域的}InitializeCriticalSection(CS); {初始化}EnterCriticalSection(CS); {開始:
Time of Update: 2018-12-07
// madCHook.pas version: 2.0 ? date: 2003-08-10// ----------// API hooking, code hooking// ----------// Copyright (C) 1999 - 2003 www.madshi.net, All Rights Reserved// **********// 2003-08-10 2.0 (1) HookCode parameters changed -&g
Time of Update: 2018-12-07
uses cxexportgrid4link;var SaveDialog: TSaveDialog;begin SaveDialog:=TSaveDialog.Create(nil); with SaveDialog do begin Filter := '*.xls|*.xls'; if Execute then begin ExportGrid4ToExcel(FileName,vgrid,true,true,true,'xls');
Time of Update: 2018-12-07
原理分析:互斥對象是系統核心對象, 各線程都可以擁有它, 誰擁有誰就能執行; 執行完畢, 用 ReleaseMutex 函數釋放擁有權, 以讓其他等待的線程使用.其他線程可用 WaitForSingleObject 函數排隊等候(等候也可以理解為排隊申請).使用過程:var hMutex: THandle; {應該先聲明一個全域的互斥控制代碼}CreateMutex {建立一個互斥對象}WaitForSingleObject {用等待函數排隊等候}ReleaseMutex
Time of Update: 2018-12-07
有4種用於記憶體配置的API函數。虛擬VIRTUAL函數用於分配和管理大數量的記憶體,堆函數HEAP用於小數量記憶體,全域函數GLOBAL及局部函數LOCAL用於小數量記憶體配置,這兩類函數是為了實現與16位系統相容而提供的。WIN32 API仍然維護全域以及局部的堆函數,但是它們都是從局部的2GB中分配記憶體。這些堆對於進程而言都是局部的,不能被其他進程訪問。
Time of Update: 2018-12-07
1.按姓氏筆畫排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.資料庫加密: select encrypt('原始密碼') select pwdencrypt('原始密碼') select pwdcompare('原始密碼','加密後密碼') = 1--相同;否則不相同3.取回表中欄位: declare @list varchar(1000),@sql nvarchar(100
Time of Update: 2018-12-07
function WaitForSingleObject( hHandle: THandle; {要等待的物件控點} dwMilliseconds: DWORD {等待的時間, 單位是毫秒}): DWORD; stdcall; {傳回值如下:}WAIT_OBJECT_0 {等著了, 本例中是: 等的那個進程終於結束了}WAIT_TIMEOUT {等過了點(你指定的時間), 也沒等著}WAIT_ABANDONED {好不容易等著了, 但人家還是不讓咱執行;
Time of Update: 2018-12-07
通過記憶體映像檔案分享權限設定一組對象(主程式和動態庫或者各進程之間共用一組對象) //單元設計: 陳新光(CXG)//設計時間: 2009-10-8 16:51:40//單元功用: 封裝記憶體映射操作 unit uMap; interface uses Windows, SysUtils, Dialogs; procedure SetMappedObj(const AObj:Pointer);stdcall;function
Time of Update: 2018-12-07
有容乃大。海洋是江河的容器。記憶體是資料的容器。表單是各種可視非可視控制項的視窗。主EXE是外掛程式們的容器。 用TPanel, TScrollBox等容器布好介面的局,其它表單/非表單錄入介面就在這些容器裡面讓它動態產生。 也無須採用純動態方法來產生所有介面,實際操作時可能是動態產生+靜態拖放相結合的方式。
Time of Update: 2018-12-07
移動加權平均法: 移動加權平均法下庫存商品的成本價格根據每次收入類單據自動加權平均;其計算方法是以各次收入數量和金額與各次收入前的數量和金額為基礎,計算出移動加權平均單價。其計算公式如下: 移動加權平均單價= (本次收入前結存商品金額+本次收入商品金額)/(本次收入前結存商品數量+本次收入商品數量 ) 移動加權平均法計算出來的商品成本比較均衡和準確,但計算起來的工作量大,一般適用於經營品種不多、或者前後購進商品的單價相差幅度較大的商品流通類企業。 以下以一個簡單的例子來說明:
Time of Update: 2018-12-07
馬上能想到的函數有:
Time of Update: 2018-12-07
之前已經有了兩種多線程的同步方法:CriticalSection(臨界區) 和 Mutex(互斥), 這兩種同步方法差不多, 只是範圍不同;CriticalSection(臨界區) 類似於只有一個蹲位的公用廁所, 只能一個個地進; Mutex(互斥) 對象類似於接力賽中的接力棒, 某一時刻只能一個人持有, 誰拿著誰跑.什麼是 Semaphore(訊號或叫訊號量)呢?譬如到銀行辦業務、或者到車站買票, 原來只有一個服務員, 不管有多少人排隊等候, 業務只能一個個地來.假如增加了業務視窗,
Time of Update: 2018-12-07
據說 Event(事件對象) 是多線程最原始的同步手段, 我覺得它是最靈活的一個.Event 對象(的控制代碼表)中主要有兩個布爾變數, 從它的建立函數中可以看得清楚:function CreateEvent( lpEventAttributes: PSecurityAttributes; {安全設定} bManualReset: BOOL; {第一個布爾} bInitialState: BOOL;
Time of Update: 2018-12-07
語言就是把我們的想法讓電腦理解,讓電腦按照我們的想法完成一些功能,具體功能如何?還是需要我們告訴的,實際上還是我們的解決方案。可能就是我們所說的編程思想和業務領域的解決方案吧。另外一種語言是要解決很多領域的問題的,尤其是Java、C、C++這些語言,因為要解決很多問題,所以他的文法、雷庫可能會很多,而在開發你的某個系統的時候可能僅僅用到其中的很少一部分,另外可能不如一些專門的語言解決的好。
Time of Update: 2018-12-07
每建立一個窗件都要改預設字型,不方便.通過添加註冊值可更改Delphi系統的預設字型 修改註冊表:HKEY_CURRENT_USER/Software/Borland/Delphi/5.0/FormDesign Delphi 5:HKEY_CURRENT_USER/Software/Borland/Delphi/5.0Delphi 6:HKEY_CURRENT_USER/Software/Borland/Delphi/6.0Delphi