一、取得可文件路徑 node
Path := ExtractFilePath(Application.ExeName); //取得可執行文件路徑 TXMLDocument.Create(ExtractFilePath(Application.ExeName)+ '001.xml')數據庫
二、DisableControls EnableControlsapp
ClientDataSet.DisableControls;dom
...函數
for I := 0 to 10000 doui
beginspa
ClientDataSet.Append;code
...orm
ClientDataSet.Post;xml
end;...
ClientDataSet.EnableControls
三、XML的解析
<?xml version="1.0" encoding="utf-8"?> <root> <info id="id1" name="name1" /> <info id="id2" name="name2" /> </root> var XMLDoc: TXMLDocument; iNode, tmpNode: IXMLNode; begin with ClientDataSet1 do begin FieldDefs.Add('id',ftString,250); FieldDefs.Add('name',ftString,100); CreateDataSet; end; XMLDoc:= TXMLDocument.Create(Owner); XMLDoc.FileName:='E:\1.xml'; XMLDoc.Active:=True; iNode := XMLDoc.DocumentElement.ChildNodes.First; while iNode<> nil do begin ClientDataSet1.AppendRecord([iNode.Attributes['id'],iNode.Attributes['name']]); iNode:= iNode.NextSibling; end; XMLDoc.Free; end;
三、DelPhi 動態給ComBoBox賦值,從ComBoBox中取值
1、把數據庫中的項目信息(項目名稱、項目編號)動態賦給ComBoBox cbProjectName.Items.Clear; with adoQryProject do begin First; while not Eof do begin ProjectNameStr := fieldByName('ProjectName').AsString; if Trim(ProjectNameStr) <> '' then cbProjectName.Items.AddObject(ProjectNameStr, TObject(fieldByName('ProjectID').AsInteger)); Next; end; end; 2、讀取ComBoBox中的值 ProjectID:= IInteger(cbProjectName.Items.Objects[cbProjectName.ItemIndex]); ProjectName:= cbProjectName.Text; 3、快速定位到某個字段或數據: 1>、設置Combobox控件的AutoComplete屬性爲true便可; 2>、combobox1.ItemIndex := Combobox1.Items.IndexOf(trim(edit1.text));
四、圖片的存取
1、存圖片到數據庫 var PicStream: TMemoryStream; if imgBugPic.Picture.Graphic <> nil then begin PicStream := TMemoryStream.Create; // 建立內存流 imgBugPic.Picture.Graphic.SaveToStream(PicStream); TBlobField(FieldByName('BUGPic')).LoadFromStream(PicStream); PicStream.Free; end; 2、從數據庫中讀取圖片並顯示 var PicStream: TMemoryStream; if not FieldByName('BUGPic').IsNull then begin try PicStream := TMemoryStream.Create; TBlobField(FieldByName('BUGPic')).SaveToStream(PicStream); PicStream.Position := 0; imgBugPic.Picture.Bitmap.LoadFromStream(PicStream); PicStream.Free; except ShowMessage('對不起,圖片有問題.'); end; end;
五、動態建立窗體
//第一種方式 procedure TForm1.btn1Click(Sender: TObject); begin With TForm2.Create(Application) do Try ShowModal; finally free; end; end; //第二種方式 procedure TForm1.btn2Click(Sender: TObject); begin if not assigned(Form2) then begin Form2:=TForm2.Create(nil); Form2.Show; end end; //第二種方式建立的的窗體須要在FORM2裏釋放資源 procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Form2:=nil; //Form對象指向空地址 Action := cafree; //Form關閉後釋放佔用的內存 end;
六、錯誤 拋出異常
try ....(須要執行的代碼) except on e:exception do application.MessageBox(pchar(e.Message), '錯誤提示', 0); end;
七、本月的第一和最後一天
USER :DateUtils procedure TForm1.btn1Click(Sender: TObject); begin mmo1.Lines.Add(FormatDateTime('yyyy-mm-dd',StartOfTheMonth(Now))); mmo1.Lines.Add(FormatDateTime('yyyy-mm-dd',EndOfTheMonth(Now))); //mmo1.Lines.Add(DateTimeToStr(StartOfTheMonth(Now))); //mmo1.Lines.Add(DateTimeToStr(EndOfTheMonth(Now))); end;
八、判斷文件夾,沒有建立
procedure TForm1.Button1Click(Sender: TObject); var Pach:string; begin Pach:='E:\123\223'; //定義目錄地址 if not DirectoryExists(pach) then //查找文件夾是否存在 begin //創建文件夾(ForceDirectories可創建多級目錄,建立單級目錄用:CreateDirectory) ForceDirectories(Pach); end else begin showmessage('目錄已經存在'); end; end;
九、對Edit 循環賦值
var i:Integer; control:TComponent; begin for i := 0 to 99 do begin control := FindComponent('Edit'+IntToStr(i)); if control <> nil then begin TEdit(control).Text := IntToStr(i); end; end; end;
十、畫曲線
TeeChart 動態建曲線 var i:Integer; Series:array of TFastLineSeries; //這裏最好寫在全局變量中 begin SetLength(Series,MyTHead.Count); Chart1.SeriesList.Clear; for i:= 0 to MyTHead.Count-1 do //MyTHead是一個Tstringlist,根據MyTHead來動態建立曲線的數量 begin Series[i]:=TFastLineSeries.Create(nil); Series[i].ParentChart:= Chart1; //在名爲CHART1的組件上建曲線 Series[i].Title:= MyTHead[i]; end; end;
十一、釋放判斷
XML := TNativeXml.Create(nil); if assigned(XML)then begin FreeAndNil(XML); end;
十二、鎖定控件 CDS內存表 XML賦值
with ClientDataSet1 do begin //EmptyDataSet; //Close; if FieldDefs.Count<=0 then begin FieldDefs.Clear; FieldDefs.Add('id',ftInteger,0); FieldDefs.Add('cname',ftString,100); FieldDefs.Add('contact',ftString,100); FieldDefs.Add('phone',ftString,100); FieldDefs.Add('addr',ftString,100); FieldDefs.Add('remark',ftString,100); //IndexDefs.Add('PK', 'id', [ixPrimary, ixUnique]); CreateDataSet; end; DisableControls; // XML.Clear; if not assigned(XML) then XML := TNativeXml.CreateName('companies'); H := TAuthHeader.Create; H.UserName := '555' ; //這裏只是舉個例子 H.PassWord := '555'; Headers := WebServer as ISOAPHeaders; Headers.Send(H); retStr :=WebServer.findCompany ; XML.ReadFromString(retStr); XML.XmlFormat := xfReadable; //XML.SaveToFile('D:\com'); // showmessage(IntToStr(list.Count)); if not assigned(list) then list:=TList.Create else list.Clear; XML.Root.NodesByName('company', list); //showmessage('2'); // ClientDataSet1.r MergeChangeLog; EmptyDataSet; listcount := list.Count; for i := 0 to listcount - 1 do begin node := list[i]; if node.ReadInteger('id')>0 then begin Append; FieldByName('id').AsInteger := node.ReadInteger('id'); FieldByName('cname').AsString := node.ReadString('cname'); FieldByName('addr').AsString := node.ReadString('addr'); FieldByName('contact').AsString := node.ReadString('contact'); FieldByName('phone').AsString := node.ReadString('phone'); FieldByName('remark').AsString := node.ReadString('remark'); Post; end; //DisPose(list[i]); end; EnableControls; Open; end;
1三、窗體拖動
procedure TMain_Frm.imgbdMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (ssleft in shift) then begin releasecapture; perform(wm_syscommand, $f012, 0); end; end;
1四、刪除提示
if Application.MessageBox('刪除不能恢復,確認刪除嗎?', '刪除提示', MB_OKCANCEL + MB_ICONQUESTION)=mrOk then begin ShowMessage('你選擇的OK!'); end;
1五、生成GUID guid
function GetGUID: string; var Guid: TGUID; begin CreateGUID(Guid); Result := GUIDToString(Guid); end;
1六、檢測電話號碼
function TMain_frm.IsMobileNumber(num: string): boolean; begin Result := False; if length(trim(Num)) <> 11 then Exit; if ((copy(num, 1, 2) <> '13') and (copy(num, 1, 2) <> '15')) and (copy(num, 1, 2) <> '18') and (copy(num, 1, 2) <> '14') and (copy(num, 1, 2) <> '17'))
)
)
then Exit; try StrToInt(copy(num, 3, 9)); Result := True; except end; end;
1七、改變DBGrid顯示的內容
procedure TAppInterface_frm.dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var str:string; begin if (Column.Field <>nil) and (Column.FieldName = 'isencrypt') then begin if Column.Field.IsNull then exit; case integer(Column.Field.value) of 0:str:='公開'; 1:str:='傳值'; 2:str:='Header'; end; (Sender as TDBGrid).Canvas.TextRect(Rect,Rect.Left,Rect.Top,str); end; end;
procedure TMaindlg.ADOQueryDisplayIsUsedGetText(Sender: TField; var Text: String; DisplayText: Boolean); beginif ADOQueryDisplay.FieldByName('Sex').AsString='0' then text:='女' else text:='男'; end;
DrawDataCell(ARect, DrawColumn.Field, AState);//是單元格 Dbgrid中填充數據時觸發該事件
DrawColumnCell(ARect, ACol, DrawColumn, AState);//是列 Dbgrid生成每一列的時候觸發該事件
1八、Label自動換行 先將Autosize=false; 再設WordWrap=true;
1九、ListBox基本使用方法:
一)添加 ListBox1.Add(EditBox1.Text);//添加到末尾 Items.Append('Append');//同Add ListBox1.insert(0,EditBox1.Text);//添加到開頭 //TcxImageList 參數 序號 內容 圖標序號 lbxAppSupply.InsertItem(i,node.ReadString('mname')+' '+node.ReadString('name'),Random(2)); //對應的values值 lbxAppSupply.Values[i] := node.ReadString('id'); imglist1.Items[imglist1.ItemIndex];//內容 imglist1.Values[imglist1.ItemIndex];//值 //支持多選 for I := 0 to imglist1.Count - 1 do begin if imglist1.Selected[I] then begin mmo1.Text := mmo1.Text+'Selected[i]:'+imglist1.Items[i]+#13#10; mmo1.Text := mmo1.Text+'Values[i]:'+imglist1.Values[i]+#13#10; end; end; 二)刪除 ListBox1.DeleteSelected;//刪除選擇項 包括多選 imglist1.Items.Delete(imglist1.ItemIndex);//刪除選擇項 三)選定 //TcxImageList imglist1.Selected[imglist1.Items.IndexOf('學生管理系統')]:= True; ShowMessage(imglist1.Items[imglist1.ItemIndex]); List爲單選的取值 1)ItemIndex:爲選中的list序列號從0開始,沒有選時爲-1 2)imglist1.Items[imglist1.ItemIndex]:爲當前選中的內容 3)Items.Strings[imglist1.ItemIndex]=Items[imglist1.ItemIndex] 4)GetCount爲當前記錄 由於從0開始,因此能夠做爲插入序號
20、Query字段屬性 顯示 添加
procedure TfrmYiSheng.qry1isUploadGetText(Sender: TField; var Text: string; DisplayText: Boolean); begin inherited; if Sender.AsInteger = 1 then Text := '是 ' else Text := '否 '; end; procedure TfrmYiSheng.qry1isUploadSetText(Sender: TField; const Text: string); begin inherited; if Text = '是 ' then Sender.AsInteger := 1 else Sender.AsInteger := 0; end;
2一、inc() dec()
inc有兩種用法: 一個是inc(integer),就是加1 好比 i := 100; inc(i); 就是i變爲101 另外一個是inc(integer,integer)就是加n 好比 i:=100; inc(i,50); 就是i變成150 --------------------------------- Dec是遞減函數 i:=100; dec(i); i就變成99了,若是是dec(i,30)的話,那麼i=100-30=70
2二、 ChangeFileExt
function ChangeFileExt(const FileName, Extension: string): string; var I: Integer; begin I := LastDelimiter('.' + PathDelim + DriveDelim,Filename); if (I = 0) or (FileName[I] <> '.') then I := MaxInt; Result := Copy(FileName, 1, I - 1) + Extension; end; 好比: s:=changefileext('f:\123.txt','.ini'); showmessage(s);//f:\123.ini
2三、Ini 文件讀寫
procedure TfrmMain.FormCreate(Sender: TObject); var S: string; Ini: TIniFile; begin S := ChangeFileExt(Application.ExeName,'.ini'); Ini := TIniFile.Create(S); try edReadFilename.Text := Ini.ReadString('Files','Read',''); edWriteFilename.Text := Ini.ReadString('Files','Write',''); finally Ini.Free; end; end; procedure TfrmMain.FormDestroy(Sender: TObject); var S: string; Ini: TIniFile; begin S := ChangeFileExt(Application.ExeName,'.ini'); Ini := TIniFile.Create(S); try Ini.WriteString('Files','Read',edReadFilename.Text); Ini.WriteString('Files','Write',edWriteFilename.Text); finally Ini.Free; end; end;
2四、有序類型
Dec 將例程中的參數值遞減1或一個特定的值,其中特定值可在
第二個可選參數中定義
Inc 將例程中的參數值增長1或一個特定的值
Odd 若是參數爲奇數返回真
Pred 根據參數在其數據類型定義中的序列,返回參數值的前驅值
Succ 返回參數值的後繼值
Ord 返回參數值在其數據類型值集合中的序號
Low 返回參數對應的有序數據類型的最小取值
High 返回參數對應的有序數據類型的最大取值