聰明的程式員用DELPHI這是一句古老的話,在程式員和學校世代相傳,Delphi的便捷和作業系統的銜接堪稱天衣無縫,下面我列舉幾條DELPHI的變成小技巧給大家分享!希望讀者們有好的技巧請別客氣,拿出來一起分享!歡迎跟帖!
1、判斷一個字串是否包含于另外一個字串的方法
例如:if pos('ab','abcd')<>0 then
messagedlg('ab是包含于abcd',mtConfirmation,[mbYes, mbNo],0);
pos(obj,target) 在target字串中找出第一個出現obj的第一個字符位置,如果找不到,回傳0.
2、如何使視窗全屏,類似游戲一樣,而不是視窗的最大化!
(1) BorderStyle 為 bsNone
(2) Windowstate 為 wsMaximized
(3) 退出時可加一個按鈕之類的,寫上 close 即可退出。
3、數字格式化輸出
format('%8.2f',[123.456]),回傳字串' 123.46'。
4、播放一個wav檔案
use mmsystem;
SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC);
5、InputBox,InputQuery和ShowMessage函式的威力
uses dialogs;
var s,s1:string;
b:boolean;
begin
s:=trim(Inputbox('NewPassword','Password','masterkey'));
b:=s<>'';
s1:=s;
if b then b:=InputQuery('Confirm Password','Password',s1);
if not b or (s1<>s) then ShowMessage('Password Failed');
end;
6、幾個有關子目錄的操作的程序
MkDir(str); ChDir(str); GetDir(DriveID,str); SetCurrentDir(str);
IOResult --上面幾個程序呼叫成功即回傳0值
7、將一個可視控制元件變成圖形型別
例如將一個帶背景的LABEL變成一個TIMAGE圖片型別,可以這樣做:
image1.width:=label1.width;
image1.height:=label1.height;
label1.perform(WM_PAINT,image1.Canvas.Handle,0);
8、如何得到字符的ASCII值
得到字符的ASCII值,可以用如下陳述句:
var: a:integer;
string1:string;
begin
string1:='ABC';
a:=byte(string[1]); {此時就得到'A'的ASCII值}
end;
9、動態更新DBGrid的顏色
例如,如果一個城市的人口大于200萬,我們就讓它顯示為藍色。使用的控制元件事件為DBGrid.OnDrawColumeCell:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName('Population').AsInteger > 20000000 then DBGrid1.Canvas.Font.Color := clBlue;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
10、獲得命令列引數
1. 取得命令列引數的個數: ParamCount 函式
2. 呼叫 ParamStr(0), 傳回執行檔的檔名(含路徑)
3. 呼叫ParamStr(n), 傳回第n個引數的內容
例子:
procedure TForm1.FormCreate(Sender: TObject);
var
ix: integer;
begin
Memo1.Lines.Clear;
if ParamCount = 0 then
Memo1.Lines.Add('沒有引數')
else
begin
Memo1.Lines.Add('檔名:' + ParamStr(0));
for ix := 1 to ParamCount do
Memo1.Lines.Add(ParamStr(ix));
end;
end;
uj5u.com熱心網友回復:
你太聰明了,支持分享uj5u.com熱心網友回復:
有沒有人看啊!uj5u.com熱心網友回復:
沙發被搶!uj5u.com熱心網友回復:
起碼第 6 條不會編譯通過。uj5u.com熱心網友回復:
為啥???????uj5u.com熱心網友回復:
你怎么知道啊,你編譯過了嗎?uj5u.com熱心網友回復:
你太聰明了
uj5u.com熱心網友回復:
哦是第 8 條
uj5u.com熱心網友回復:
聰明的不是代碼,而是具有使用非常簡單的方式解決實際問題的能力。uj5u.com熱心網友回復:
vara:integer;
string1:string;
begin
string1:='ABC';
a:=byte(string1[1]); {此時就得到'A'的ASCII值}//少了個1
end;
uj5u.com熱心網友回復:
var: a:integer;//<-------確定這個宣告可以通過?uj5u.com熱心網友回復:
聰明的程式員用DELPHI這是一句古老的話,在程式員和學校世代相傳--------
當年被忽悠的不輕,直接導致近幾年一直工資不見漲:)
uj5u.com熱心網友回復:
那個小問題一看就知道啦,不要太深究了,我在代碼里也改了啊
uj5u.com熱心網友回復:
頂樓主uj5u.com熱心網友回復:
笨笨地接下分uj5u.com熱心網友回復:
修正一下,有關根據判斷變色的問題,樓主陳述句里有個小錯誤,正確代碼如下:
procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if ADOQuery1.FieldByName('金額').AsInteger>5000 then
//DBGrid1.Canvas.Brush.Color:=clRed; //修改行背景顏色
//DBGrid1.Canvas.Font.Color:=clBlue; //修改行字體顏色
DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);
end;
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
廣告語而已。我的理解,并不是說用了 Delphi 的就是“聰明的程式員”。
是說 Delphi 提供給我們的 n 多“聰明”的編程技巧,希望我們學會而變得“聰明”。
不是常有人說嗎?
同樣學,Delphi VC 起步快的是 D。但是過他10年20年編程經驗后,兩者的差距就不大了。
為什么不大?因為大家的編程思路是一樣一樣一樣d呀~
uj5u.com熱心網友回復:
電腦是很笨的語言也是很笨的
聰明的是編程的人
uj5u.com熱心網友回復:
樓上的是正解uj5u.com熱心網友回復:
樓上的樓上正解uj5u.com熱心網友回復:
想當年,這句話被寫進了我的畢業論文。。。uj5u.com熱心網友回復:
好使 確實是 但是用的越來越少了啊uj5u.com熱心網友回復:
技巧。。。Mark一下uj5u.com熱心網友回復:
樓主辛苦了!!頂上!!有用的東西...
uj5u.com熱心網友回復:
感謝樓主,不管是什么工具,看來都需要去用心的鉆研,沒有萬能的東西,uj5u.com熱心網友回復:
呵呵~~~一直在用Delphi啊!
覺得還不錯!
uj5u.com熱心網友回復:
procedure TForm1.N8Click(Sender: TObject);var
rl: Cardinal;
hToken: Cardinal;
tkp: TOKEN_PRIVILEGES;
begin
ShowMessage('請確定重新啟動計算機!');
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
begin
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1;
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
end;
ExitWindowsEx(2,0);
end;
uj5u.com熱心網友回復:
procedure TForm1.N9Click(Sender: TObject);var
rl: Cardinal;
hToken: Cardinal;
tkp: TOKEN_PRIVILEGES;
begin
ShowMessage('請確定關閉計算機!');
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
begin
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1;
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
ExitWindowsEx(EWX_FORCE+1,0);
end;
end;
uj5u.com熱心網友回復:
procedure TForm1.N11Click(Sender: TObject);var
rl: Cardinal;
hToken: Cardinal;
tkp: TOKEN_PRIVILEGES;
begin
ShowMessage('請確定切斷電源!');
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
begin
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1;
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
end;
ExitWindowsEx(8,0);
end;
uj5u.com熱心網友回復:
嗯,D上還是有很多聰明的技巧的,就看我們是怎麼去使用它了uj5u.com熱心網友回復:
學習學習。。
同意同意。。
頂你吧。。
uj5u.com熱心網友回復:
學習學習......uj5u.com熱心網友回復:
支持。。。uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
流行只是短暫 風格才是永久!uj5u.com熱心網友回復:
支持。。。uj5u.com熱心網友回復:
新人駕到~DFW不行拉,都是招聘,沒個技術問題,學不到撒了,來這里混混!報道!uj5u.com熱心網友回復:
頂之,在用Delphi,用起來還是很方便的uj5u.com熱心網友回復:
大家好:有個問題請高手指點,如何在combobox控制元件下嵌套treeview控制元件,就是點擊combobox控制元件下拉后出現treeview選擇樹形框,選擇內容在combobox內顯示,急需指點幫助,謝謝了;如果可以請將結果發我郵箱:[email protected] 拜托了uj5u.com熱心網友回復:
1.
edit一個,加一個button,放在一起,做成一個combobox的樣子。。
再加一個treeview。。。
2.有現成的控制元件。。。你找找。。。。
uj5u.com熱心網友回復:
呼呼,最近才開始學習delphi,很有用!uj5u.com熱心網友回復:
嗯,你知道的太多了uj5u.com熱心網友回復:
頂樓上的,知道太是,是不是要。。。。uj5u.com熱心網友回復:
頂樓上的,知道太多,是不是要。。。uj5u.com熱心網友回復:
我也要回一下uj5u.com熱心網友回復:
效率比較高。。。。uj5u.com熱心網友回復:
弄個技巧集錦吧
uj5u.com熱心網友回復:
頭一次發現delphi人氣這么高,還以為沒幾個人了呢
uj5u.com熱心網友回復:
你沒發現都是幾年前的帖子了嗎?uj5u.com熱心網友回復:
還真沒有注意……,幾年了都……看來人氣真的低落了。我剛開始學delphi,還靠這個吃飯呢……
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/140976.html
標籤:語言基礎/算法/系統設計
下一篇:Python背景關系管理器
