begin...end 結構清晰,輸入效率不輸大括號property X: T read GetX write SetX 中 Get/Set 為函式,屬性賦值可能執行大量代碼Name, Tel, Addr, Memo(欄位名禁用中文)DBNavigator + Data-aware 控制項DisplayName(中文標題)、Transliterate = False(支援中文顯示)Edit + BitBtn(OK/Cancel),主表單按鈕代碼:
if Form2.ShowModal = mrOK then
begin
Table1.DisableControls;
Table1.First;
while not Table1.EOF and (Pos(Form2.Edit1.Text, Table1Name.Value) = 0) do
Table1.Next;
Table1.EnableControls;
end;
TForm = class 之外宣告全域變數,盡量置於 private 區段begin 後換行必縮兩格,end 對齊對應 beginbegin...end 會在存檔/編譯時自動清理Form1.ListBox1 錯誤,ListBox1 正確);主表單 OnCreate 時次表單尚不存在ShowModal 阻塞等待返回,Show 非阻塞並行Application.ProcessMessages: 否則介面假死,無法響應重繪/使用者輸入TTimer 重入風險: 若 OnTimer 執行時間超過間隔,下一次觸發將重入同一事件處理程序,共享變數讀寫衝突。解決:事件開頭設 Timer1.Enabled := False,結尾恢復。
Show 非模態視窗並行存取: 兩個可見表單同時存取同一全域變數/物件,同樣產生競態條件。
新手策略: 優先使用 ShowModal、避免全域狀態、長任務放入背景執行緒並用 Synchronize 更新 UI。