熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

新手知識大放送:Delphi入門點點滴滴

2022-06-13   來源: Delphi編程 
==系統應用篇==
  A.Delphi自代了大量的常用控件如Delphi就有一百多了而今年出的Delphi更是Delphi這麼多控件就是在*的分辨率下也無法全部顯示他們的組件面板而每次要按那兩顆小按鈕來顯示更多的面板真是非常不方便!但通過添加下面那一個注冊表鍵值就能實現組件面板自動展開
  [HKEY_CURRENT_USER\Software\Borland\Delphi\X\Extras]
  AutoPaletteSelect=
  (注X表示你的Delphi的版本號如果沒有Extras主鍵則新建即可下同)
  
  B.每次新建窗體然後設置其字體大小……真是好麻煩的!那就再添加一個以下的鍵值讓系統自動來設置吧
  [HKEY_CURRENT_USER\Software\Borland\Delphi\X\FormDesign]
  DefaultFont=宋體_
  (注_表示空格也可以用Bold(粗體)等代替)
  
  C.自定義工作環境讓它更加適合自己
  設置工具欄在Delphi的工具欄右鍵單擊選Customize然後挑選需要的按鈕拖到工具上把不要的拖出來我常用的是Standard工具欄下的OpenOpen ProjectSaveSave AllUndoRedoDebug工具欄下的PauseAdd WatchProgram ResetRunDesktop工具欄下的Save Current DesktopSet Debug DesktopComponent Palette工具欄
  設置窗口布局為了能跟高效的編寫程序合理的布置各個窗口是很重要的我常用的窗口有Object InspectorProject Manager(View|Project Manager)Watch List(Run|Add Watch) 具體的停放位置如圖
  

  
[圖]

  設置好各個窗體後按Desktop工具欄上的Save Current Desktop按鈕保存
  ?設置顯示顏色讓代碼的顏色更符合自己的習慣有利於編寫時思維的清晰Tools|Editor Options打開Editor Properties選Color標簽頁設置代碼顏色以下僅解釋一下幾個常用的
  Whitespace空白處即背景
  Comment注釋
  Reserved word保留字
  String字符串
  Number數字
  Execution Point正在執行的當前行(即F步入時所到達的那一行)
  Enabled break斷點
  Error line錯誤發生行
  
  D.掌握一些Delphi編程中的快捷鍵能夠極大程度的提高效率還不會讓你因為過多無聊的設置等而感到厭煩現在如果不用這些快捷鍵我會很不適應這樣的編程的!以下我就介紹一下我常用的幾個快捷鍵
  Esc : 選擇當前選中組件的容器(通常是PanelGroupBox或Form等)
  Ctrl+方向鍵 將所選組件移動一個像素
  Ctrl+Shift+方向鍵 將所選組件移動一大格(類似Fireworks中按住Shift再用方向鍵移動時的效果)
  Shift+方向鍵 調整選中組件的大小每次一像素
  Shift+選中組件 按住Shift鍵再用鼠標點擊組件可以同時選擇多個組件
  Ctrl+鼠標左鍵 在procedure中掉用其他的函數(如一個自定義的過程)在這個調用處按住Ctrl會發現當鼠標移上去的時候變成了一個類似超鏈接的格式鼠標單擊就能直接轉到所調用的此函數的實現部分這個功能我可是用的最多了讓我找模塊變得非常方便!
  Ctrl+Shift+C 在一個對象中聲明了一個方法然後把光標放到它的上面按下Ctrl+Shift+C就可以為他的實現建立一個基本框架
  TForm = class(TForm)
  private
  { Private declarations }
  public
  { Public declarations }
  procedure Mine;
  end;
  把光標放到procedure Mine這行按下Ctrl+Shift+C下面這段代碼將自動插入到單元中
  procedure TFormMine;
  begin
  
  end;
  
  ==窗體操作篇==
  在有多個窗體的程序中Delphi默認是將它們在程序啟動時全部創建(只是都隱藏了只顯示一個主窗體)這樣那些暫時不必要啟動的窗體就占用了許多內存空間所以我們需要在菜單Project|Options的Forms標簽頁下將那些暫時不要啟動的窗體從Autocreate forms下轉移到Available forms這樣這些窗體的創建和釋放就需要代碼來實現了
  A.兩種創建窗體方法之比較對於這些非自動創建的窗體我們必須在Show之前Creat(Self)或Create(Application)將其創建如FormCreat(Self)和FormCreate(Application)可是它們兩個到底有什麼區別呢?其實兩者區別不大
  但如果Owner是屬於別的窗口或控件的話當它的Owner被釋放的時候該Owner所擁有的也會被釋放關鍵的區別是由誰來管理該窗體的資源用第一種方法創建該窗體的資源由編程者來負責管理用第二種方法創建該窗體的資源由Application來管理
  
  B.幾種窗體的釋放方法既然是為了節約內存那麼用完了的窗體就應該搬出內存在這裡我列舉幾個大同小異的方法
  ()
  procedure TFormButtonClick(Sender :TObject);
  begin
  
  if Form = nil then
  Form:=TFormCreate(Application);
  FormShowModal;
  
  end;
  
  procedure TFormclose(Sender: TObject; var Action: TCloseAction);
  begin
  ModalResult := mrNone;
  Action := caFree;
  Form := nil;
  end;
  ()
  procedure TFormButtonClick(Sender :TObject);
  begin
  if not Assigned(Form) then
  begin
  ApplicationCreateForm(TFormForm);
  try
  FormShowModal;
  finally
  FormFree;
  Form := nil;
  end;
  end
  else
  FormShowModal;
  end;
  ()
  procedure TFormButtonClick(Sender :TObject);
  begin
  FormClose;
  FormRelease;
  end;
  
  ==控件使用篇==
  A.大名鼎鼎的RXLib控件包是由三位俄羅斯高手編寫的非常的出色!不過內容太多了要用好也不容易我在此拿RxRichEdit簡單地說幾點
  好多人都問RxLib怎麼安裝似乎的確有點復雜呵呵所以我也順便說一下
  運行rxinstexe將RxLib先安裝到\Program Files\Borland\Delphi(或)\RX文件夾下然後打開Delphi選File\Open將RXCTLDPKRXDBDPKRXBDEDPK分別打開後按compile繼續打開DCLRXDPKDCLRXDBDPK和DCLRXBDDPK將這三個分別按compile後按install就可以了:)
  ?AllowObjects屬性Win下默認設置為True右鍵菜單沒有問題但設為False時快捷菜單會連續出現兩次Win設為True時會使右鍵菜單無法彈出而False時卻顯示正常所以為了系統的兼容性需要判斷當前OS版本
  procedure TFormMainFormCreate(Sender: TObject);
  var
  OSVI:OSVERSIONINFO;
  
  begin
  OSVIdwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
  GetVersionEx(OSVI);
  case OSVIdwPlatformId of
  :RxRichEditAllowObjects:=true;
  :RxRichEditAllowObjects:=false;
  end;
  
  end;
  但我不知這個屬性為什麼會有這麼一個問題還望高手指點
  ?OnURLClick事件RXRichEdit有自動將網頁地址轉為超鏈接格式但具體的行為還是要自己寫代碼的不然這些地址就成了個空殼了
  procedure TFormMainRXRichEditURLClick(Sender: TObject; const URLText: String; Button: TMouseButton);
  begin
  if Button = mbLeft then
  ShellExecute(Handle nil PChar(URLText) nil nil SW_SHOW);
  end;
  
  B.為了節約內存優化運行我們總是動態創建組件可當用完之後如果不及時徹底的將其從內存中清理出去那就有違我們的初衷了可怎麼殺死所創建的組件? 比如創建了一個Edit控件現在想讓它消失但用EditFree後調用EditText卻仍然存在……我們知道光Free是不行的這只是將Edit所指向的內存空間釋放了但是指針並沒有設定為nil當調用EditText時Delphi仍然會根據Edit提供的指針訪問已經釋放的內存區域所以會產生Access Violation 錯誤所以我們需要在Free後Edit:=nil或者FreeAndNil(只在Delphi下有效)將指針nil掉才能保證以後的正常運行
  
  C.將各控件的提示文本顯示於狀態行上這個可用Application的OnHint事件但由於Application為不可件對象因此可以采用如下方法
  
  public
  procedure DisplayHint(Sender: TObject); //聲明一個方法用於顯示提示文本
  end;
  
  procedure TFormDisplayHint(Sender: TObject); //實現部分
  begin
  StatusBarSimpleText := GetLongHint(ApplicationHint);
  end;
  
  procedure TFormFormCreate(Sender: TObject);
  begin
  ApplicationOnHint := DisplayHint;
  end;
  這樣顯示在狀態欄裡的文本和提示框(就是那個自動出現的黃色小框)裡的是一樣的如果想要在狀態欄裡的提示文本更加詳細怎麼辦?其實只要控件的Hint屬性這樣寫MyHint|Its just a MyHint!就可以讓|前的內容顯示在提示框(Help Hint box)裡|的後面的內容顯示在狀態欄裡了
  
  D.ListView使用中的一些要點以下以一個兩列的ListView為例
  →增加一行
  with ListVi
From:http://tw.wingwit.com/Article/program/Delphi/201311/8398.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.