while RightStr(cPath, 1) <> '\\' do
begin
cPath := LeftStr(cPath, Length(cPath) - 1); end;
Result := cPath;
end;
--------------------------------------------------------------------------------------------------------------------------
Delphi中messagedlg 标签:Delphi
if MessageDlg('Welcome to my Delphi application. Exit now?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
Close; end;
If MessageDlg('確定進行章節回收?',mtConfirmation,[mbYes,mbNo],1) <> mrYES Then Begin Exit; End;
MessageDlg用法
对话框类型:
mtwarning——含有感叹号的警告对话框 mterror——含有红色叉符号的错误对话框
mtinformation——含有蓝色i符号的信息对话框 mtconfirmation——含有绿色问号的确认对话框
mtcustom——不含图标的一般对话框,对话框的标题是程序的名称
按钮组中的按钮: mbYes——mrYes或6 mbNo——mrNo或7 mbOk——mrOk或1
mbCancel——mrCancel或2 mbHelp——help按钮
mbAbort——mrAbort或3 mbRetry——mrRetry或4 mbIgnore——mrIgnore或5 mbAll——mrAll或8 mbNoToAll——9
mbYesToAll——10
procedure TForm1.Button1Click(Sender: TObject); var
S:string; begin
if MessageDlg('提示框',mtInformation,[mbok,mbyes],0)=mryes then
messagebeep(MB_ICONEXCLAMATION); end;
TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom);
TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp);
const
mrNone = 0; mrOk = idOk; mrCancel = idCancel; mrAbort = idAbort; mrRetry = idRetry; mrIgnore = idIgnore; mrYes = idYes; mrNo = idNo; mrAll = mrNo + 1; mrNoToAll = mrAll + 1;
mrYesToAll = mrNoToAll + 1;
MessageDlg()信息的汉化
Delphi中的常量都放在consts.pas中,修改它可以达到汉化的目的.如: MessageDlg()显示的窗口标题及其中的
按钮标题都是英文,虽然不影响使用,但在一个中文软件中总显得有些不协调. 为此在consts.pas中查找以下内容: \ 把
SMsgDlgWarning = 'Warning'; SMsgDlgError = 'Error';
SMsgDlgInformation = 'Information'; SMsgDlgConfirm = 'Confirm'; SMsgDlgYes = '&Yes'; SMsgDlgNo = '&No'; SMsgDlgOK = 'OK';
SMsgDlgCancel = 'Cancel';
SMsgDlgHelp = '&Help';
SMsgDlgHelpNone = 'No help available'; SMsgDlgHelpHelp = 'Help'; SMsgDlgAbort = '&Abort'; SMsgDlgRetry = '&Retry'; SMsgDlgIgnore = '&Ignore'; SMsgDlgAll = '&All';
SMsgDlgNoToAll = 'N&o to All'; SMsgDlgYesToAll = 'Yes to &All'; 改成
SMsgDlgWarning = '警告'; SMsgDlgError = '错误';
SMsgDlgInformation = '提示'; SMsgDlgConfirm = '确认'; SMsgDlgYes = '是(&Y)'; SMsgDlgNo = '不(&N)';
SMsgDlgOK = '确定'; SMsgDlgCancel = '取消'; SMsgDlgHelp = '帮助(&H)';
SMsgDlgHelpNone = '没有该帮助信息'; SMsgDlgHelpHelp = '帮助'; SMsgDlgAbort = '放弃(&A)'; SMsgDlgRetry = '重试(&R)'; SMsgDlgIgnore = '忽略(&I)';
SMsgDlgAll = '全部(&A)';
SMsgDlgNoToAll = '全都不(&O)'; SMsgDlgYesToAll = '全都是(&A)';
然后重新编译Consts.pas,把Consts.duc
拷到delphi的lib和slib子目录下,就一劳永逸啦!
----------------------------------------------------------------------------------------------------------------------------------------------------------------
封掉DBGRID的按向下鍵或者按TAB鍵不新增記錄:
procedure TFrm_PPS_De_AccIn.dbg_GS_ROLEKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin
If (Key In [VK_DOWN,VK_TAB])
And (dbg_GS_ROLE.DataSource.DataSet.recno = dbg_GS_ROLE.DataSource.DataSet.recordcount) Then
dbg_GS_ROLE.Options := dbg_GS_ROLE.Options - [dgEditing] Else
dbg_GS_ROLE.Options := dbg_GS_ROLE.Options + [dgEditing]; end;
------------------------------------------------------------------------------------------------------------------------------------------------------------------ Delphi 計算兩個日期之間相隔的天數:
使用DaysBetween()函數,需要引用單元: DateUtils
------------------------------------------------------------------------------------------------------------------------------------------------------------------ 格式化數字之千分位 + 小數
FormatFloat('#,##0.00',StrToFloat(Value)); Sql語句 行轉列
例子:
WITH AAA AS (
SELECT SUBSTRING(F41,1,4) AS YEA_ID,SUBSTRING(F41,6,2) AS MON_ID ,ISNULL(COUNT(PROJ_ID),0) AS PROJ_COUNT ,ISNULL(SUM(ISNULL(F13,0)),0) AS PROJ_PRICE FROM BMS_V_JSW_FE_BASIC_DATA WHERE F41 <> ''
GROUP BY SUBSTRING(F41,1,4),SUBSTRING(F41,6,2) )
SELECT YEA_ID
,ISNULL(MAX(CASE WHEN MON_ID = '01' THEN PROJ_COUNT END),0) AS MON1PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '01' THEN PROJ_PRICE END),0) AS MON1PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '02' THEN PROJ_COUNT END),0) AS MON2PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '02' THEN PROJ_PRICE END),0) AS MON2PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '03' THEN PROJ_COUNT END),0) AS MON3PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '03' THEN PROJ_PRICE END),0) AS MON3PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '04' THEN PROJ_COUNT END),0) AS MON4PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '04' THEN PROJ_PRICE END),0) AS MON4PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '05' THEN PROJ_COUNT END),0) AS MON5PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '05' THEN PROJ_PRICE END),0) AS MON5PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '06' THEN PROJ_COUNT END),0) AS MON6PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '06' THEN PROJ_PRICE END),0) AS MON6PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '07' THEN PROJ_COUNT END),0) AS MON7PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '07' THEN PROJ_PRICE END),0) AS MON7PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '08' THEN PROJ_COUNT END),0) AS MON8PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '08' THEN PROJ_PRICE END),0) AS MON8PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '09' THEN PROJ_COUNT END),0) AS MON9PROJ_COUNT
,ISNULL(MAX(CASE WHEN MON_ID = '09' THEN PROJ_PRICE END),0) AS MON9PROJ_PRICE
,ISNULL(MAX(CASE WHEN MON_ID = '10' THEN PROJ_COUNT END),0) AS MON10PROJ_COUNT

