Delphi 複習代碼

一、取得可文件路徑 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 返回參數對應的有序數據類型的最大取值
相關文章
相關標籤/搜索