大家好,好多朋友來信咨詢Delphi和C++Builder的移動開發、DataSnap架構等問題,希望能有Demo代碼學習。其實Delphi和C++Builder本身自帶有很多示例代碼,已經覆蓋了大部分Delphi和C++Builder開發工具的特性和技術。對於開發各種特定的應用,還是需要去在特定方向鑽研該方面的技術的,不要指望一套Demo代碼就可以代替自己的學習。
為了方便各位 Delphi 和 C++Builder開發者,有針對性的查找RAD Studio自帶的示例代碼,從而更快更有針對性的學習對應的功能。我整理了大部分的Demo程序,還有一些因為沒有設備或者沒有對應的環境,沒有寫明注釋內容。對於FireDAC支持多種數據庫的特性的demo,也請有需要的朋友自行查看Demo代碼。而至於有朋友問如何連接Oracle等,則自帶的FireDAC的簡單的Demo都有選擇鏈接服務器的。
大家可以用Ctrl+F搜索對應的內容。
程序的默認路徑為下面
C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\
+---Database 數據庫方面的內容
| +---CloudAPI 雲API,windows Azure和Amazon的雲數據庫的訪問等,國內可能都沒法用
| | +---CloudAPITest
| | \---CloudExplorer
| +---EMS 英巴開發工具中的私有雲服務器(或中間件服務器),所有需要的外圍支持都有了,只需要用戶寫自己的REST的服務內容,然后象插件一樣,插入EMS服務器就可以了。需要單獨收費,按用戶數。
| | +---CustomLogin
| | +---FireDACResource
| | \---NotesResource
| +---FireDAC
| | +---Bin 輔助目錄,幫助生成Demo數據庫
| | +---DB 多種數據庫的數據、元數據和SQL等
| | | +---Data
| | | +---Meta
| | | \---SQL
| | +---Samples 示例代碼
| | | +---AddOn
| | | | +---SQLiteIniFile 使用TFDSQLiteIniFile在SQLite數據庫上面實現INI文件類似的操作,包括普通數據類型和BLOB類型
| | | | | \---Demo
| | | | | \---data
| | | | \---VSE 將XML的結構和內容轉化為表
| | | +---Comp Layer
| | | | +---TFDBatchMove 將text類型的數據復制到表,或者數據集里面的sql數據到表等批量操作,可以使用BatchMove特性來提高性能
| | | | +---TFDConnection
| | | | | +---ConnectionDefs 連接定義方法,在程序運行時創建、從INI文件讀取等
| | | | | +---DLL_Sharing 通過DLL方式共享連接
| | | | | +---GetFieldNames 取得連接數據庫的表以及表的字段
| | | | | +---InfoReport 取得FireDAC連接的詳細信息,便於診斷
| | | | | +---Pooling 將連接改為連接池,采用多線程訪問數據連接
| | | | | \---Transactions 事務的提交和回滾
| | | | +---TFDEventAlerter 事件處理,不是所有數據庫都支持事件
| | | | +---TFDGUIxLoginDialog 數據庫連接時候顯示用戶名和密碼相關
| | | | +---TFDLocalSQL
| | | | | +---InMemDB 使用FDLocalSQL引擎支持的MemTable內存表,本質上就是用SQLite引擎
| | | | | +---MegaFMX 通過使用LocalSQL,可以將多種不同來源的數據,放到內存表中,然后再執行混合SQL
| | | | | \---xDBMS 使用LocalSQL將多種數據來源的表數據存入LocalSQL引擎,然后寫SQL調用,與上面的例子類似
| | | | +---TFDMemTable
| | | | | +---CachedUpdates 使用MemTable進行緩存對記錄的修改,或應用更新
| | | | | +---CloneCursor 克隆一個MemTable,並可以通過SetRange來限制顯示范圍
| | | | | +---IncFetching_MSSQL 將多塊同構數據加載到同一個內存表中
| | | | | +---Main 一個綜合性的MemTable的應用
| | | | | +---MasterDetail 主從結構使用MemTable和DataSource實現的方法
| | | | | \---NestedDataSet 使用內存表創建TDataSet數據類型字段,實現在一行數據中嵌套另外的一個多行的數據集
| | | | +---TFDMetaInfoQuery 一個綜合性的取得元數據的程序,包含表、包、存儲過程、字段索引等
| | | | +---TFDQuery
| | | | | +---Aggregates 不需要寫其他語句,直接使用Aggregates特性在數據集上面計算聚合函數
| | | | | +---Blobs 使用CreateBlobStream和TBlobField讀取BLOB字段
| | | | | +---BlobStreams 直接使用流作為insert的參數的例子
| | | | | +---CachedUpdates
| | | | | | +---Centralized使用SchemaAdapter對多個表格的更新集中管理
| | | | | | \---OnUpdateRecord 使用OnUpdateRecord事件更新記錄
| | | | | +---ExecSQL
| | | | | | +---ArrayDML 用數組的方式批量操作數據
| | | | | | +---Async 異步執行SQL,前台可以干別的,使用AfterOpen實現
| | | | | | +---Batch 批量數據處理可以用Array特性
| | | | | | \---BatchErrorHandling 批量處理中間可能出錯誤,捕捉到錯誤后,進行相應的處理,然后繼續執行剩余的SQL
| | | | | +---Filter 使用Filter屬性的各種方法
| | | | | +---Indices 使用已有的Index排序
| | | | | +---Macros 對於不支持參數的SQL,可以采用Macro的方式替換對應的內容
| | | | | \---MasterDetail 基本的主從結構的表,直接使用SQL的參數
| | | | +---TFDSchemaAdapter
| | | | | \---MemTable利用MemTable和SchemaAdapter來決定更新哪些內容,與上面的例子同理
| | | | +---TFDScript
| | | | | +---Console 使用Console界面執行SQL命令
| | | | | +---GUI 圖形界面的SQL腳本執行程序
| | | | | \---Main 圖形界面的執行SQL的總覽例子程序
| | | | +---TFDStoredProc
| | | | | +---Oracl_NextRecordSet 使用存儲過程的例子
| | | | | \---Oracl_UpdateSQL
| | | | +---TFDTableAdapter
| | | | | \---Main 使用FDCommand支持TableAdapter的例子
| | | | \---TFDUpdateSQL
| | | | \---Main 使用FDUpdateSQL緩存更新
| | | +---DApt Layer
| | | | +---Autoinc fields 主從結構、自增字段的數據添加的例子
| | | | +---Commands
| | | | +---GettingStarted
| | | | +---MappingColumns
| | | | \---Oracl_StoredProc
| | | +---DatS Layer
| | | | +---AddRelation 使用DatSManager創建表格結構和關系的例子
| | | | +---AddTableAndConstr
| | | | +---AggregatesInView
| | | | +---AutoInc
| | | | +---CalcColumnSimple
| | | | +---CalcColumnWithFuncs
| | | | +---ChildRelations
| | | | +---CompareRows
| | | | +---CreateRows
| | | | +---CreateTable
| | | | +---CreateView
| | | | +---GetChanges
| | | | +---MasterDetail
| | | | +---MasterDetAutoInc
| | | | +---Mechanisms
| | | | +---RowFilter
| | | | +---SchemaAcceptChanges
| | | | +---SearchingInView
| | | | \---TableUpdates
| | | +---DBMS Specific 這對每種數據庫的特性的例子
| | | | +---InterBase
| | | | +---MongoDB
| | | | +---MSSQL
| | | | +---Oracle
| | | | +---PostgreSQL
| | | | \---SQLite
| | | +---Getting Started 針對每種數據庫的基本特性的綜合例子
| | | | +---Firebird
| | | | +---InterBase
| | | | +---MSAccess
| | | | +---MSSQL
| | | | +---MySQL
| | | | \---SQLite
| | | +---Getting Started FMX 針對移動端SQLite數據庫的例子
| | | | \---SQLite_Desktop
| | | +---Moni Layer
| | | | +---Clients
| | | | \---Main
| | | +---Phys Layer
| | | | +---IFDPhysCommand
| | | | | +---Async
| | | | | +---Batch
| | | | | +---EscapeFunctions
| | | | | +---FetchTables
| | | | | \---Macros
| | | | +---IFDPhysConnection
| | | | | +---CreateConnection
| | | | | +---Pooling
| | | | | \---Transactions
| | | | \---IFDPhysMetaInfoCommand
| | | | +---Indices
| | | | +---StoredProc
| | | | \---Tables
| | | \---Stan Layer
| | | \---ExprEval 在FireDAC中直接分析並計算算數表達式的例子
| | \---Tool
| | +---Executor
| | | \---GUI
| | \---reFind 老版本的DB程序,遷移到FireDAC的遷移工具
| | +---AD2FDMigration AnyDAC遷移到FireDAC
| | +---BDE2FDMigration BDE遷移到FireDAC
| | +---DBX2FDMigration DBX遷移到FireDAC
| | \---XE72XE8Migration XE7版本遷移到最新版本FireDAC
| +---IBX
| | +---Admin
| | +---GdsDemo
| | +---IBMastApp
| | \---MtsPool
| +---JSONWriter
| \---RESTDemo
+---DataSnap 三層架構DataSnap的例子
| +---Basic 傳統DBX方式的,使用TSQLConnection的DataSnap的例子
| +---DataSnapMonitor
| +---EchoToChannel
| +---FireDAC 使用FireDAC組件的,使用TFDConnection鏈接並使用TStream方式傳輸、使用FireDAC控件完成調用的DataSnap的例子
| +---FireDACJSONReflect 使用FireDAC方式,REST架構並使用JSON傳輸數據,適合客戶端不是delphi編寫,但希望使用REST方式解析JSON格式數據的情況。
| +---FireDAC_DBX 使用DBX的鏈接方式,但是使用FireDAC的二進制傳輸方式的DataSnap例子
| \---LtWeightCallbacks 使用DataSnap回調的例子
+---LiveBindings
| +---AdapterBindSource
| +---bindgridlink
| | +---fmx
| | \---vcl
| +---bindlink
| | +---fmx
| | \---vcl
| +---common
| \---oneofeach
| \---vcl
+---Mobile Snippets 移動設備小程序
| +---Accelerometer 加速計
| +---AccessCameraApp 使用攝像頭照相的動作的例子
| +---AndroidIntents Android的不同程序之間的Intent的例子
| | +---ReceiveIntent
| | \---SendIntent
| +---AudioRecPlay 使用Mic記錄聲音
| +---CameraComponent 使用CameraComponent組件的例子
| +---CameraRoll 訪問相機膠卷的動作
| +---CustomPicker 自定義的Picker,就是ComboBox里面加ListBoxItem的例子
| +---DatePicker 日期的選擇的例子
| +---DeviceInfo 顯示設備的信息
| +---FireDACSQLite 使用SQLite的增刪改查的例子
| +---FireDAC_IBLite 使用IBLite的數據庫的例子
| +---Gyroscope 使用陀螺儀調整3D模型的例子
| +---HorizontalScroll 應用THorzScollBox的水平滾動圖片的例子
| +---InteractiveGestures
| | +---ImageRotation 圖片旋轉手勢的例子
| | +---ImageZoom 圖片放大縮小手勢的例子
| | \---TapAndHold 點擊和保持手勢的例子
| +---Location 獲取位置信息的例子
| +---MessageAlerts 顯示Message的例子,有單一消息,還有多段的消息
| +---Notifications
| | +---SendCancelNotification
| | \---SetResetBadgeNumber
| +---OrientationSensor 方向傳感器的例子(三維指南針)
| +---PhoneDialer 一個使用TPlatformService獲得Sim卡信息並撥打電話的例子,有可能在某些設備上面執行失敗,國內設備可能出現不支持PhoneDialer服務的情況
| +---PlayAudioFile 使用TMediaPlay組件播放mp3的例子
| +---ShareSheet 使用標准Action來實現拍照和分享的功能
| +---TabSliding 使用TTabControl實現左右滑動頁面的例子,可以根據設備不同顯示不同風格
| +---TimePicker 使用TTimeEdit實現選擇時間
| +---VideoPlayback 使用TMediaPlay播放mp4的例子,包括簡單的控制功能
| \---WebBrowser 使用WebBrowser控件支持瀏覽網頁等內容
+---Multi-Device Samples
| +---Cloud 雲服務商主要是國外的
| | +---BaaS
| | \---SurfSpot Finder
| +---Device Sensors and Services
| | +---AndroidBeaconServiceDemo 使用TBeacon組件,並將TBeacon組件放入到Android服務中,這個例子中也有TNotificationCenter組件的使用
| | +---AndroidNotificationServiceDemo 將TNotificationCenter組件放到Android的服務中,給程序發送消息的例子。
| | +---App Analytics 使用TAppAnalytics組件並使用AppAnalytics功能的例子。AppAnalytic可以幫助開發者分析軟件的真實使用情況,該功能需要使用EDN賬戶。
| | +---App Tethering 通過TTetheringManager和TTetheringAppProfile控件實現非常簡單的遠程調用類似的功能。同時,TTetheringManager負責鏈接,TTetheringAppProfile則負責執行遠程調用和自動復制遠程數據。只需要告訴一下復制方向就可以。並且AppTethering技術支持多設備連接,不是只能在兩端之間通訊,這點還沒有去實際設備上面驗證。
| | | +---MediaPlayer
| | | | +---MediaPlayerCommand 這個是控制端
| | | | \---MediaPlayerHD 這個相當於服務端,是個播放媒體的例子
| | | \---PhotoWall
| | | +---DesktopWall 這個是桌面端
| | | \---Mobile 移動端可以照相,然后通過AppTethering技術的resource發送到桌面端
| | +---Bluetooth
| | | +---Beacons
| | | | +---Beacon Device 使用TBeaconDevice訪問Beacon設備
| | | | +---Beacons Proximity 使用TBeaconManager注冊多個Beacon設備,並監視是否進入這些Beacon設備范圍的例子
| | | | +---BLE_BeaconScanner 使用TBluetoothLEManager掃描低功率藍牙設備的例子
| | | | +---DemoProximityColors 一個iOS項目,Android下面沒有成功
| | | | +---SensorTag 這個是與特定的低功率藍牙傳感器通訊的例子,和我的Blog里面講解和iBeacon設備通訊的例子一樣
| | | | \---Simple Beacon Demo 使用TBeacon組件的簡單的例子,不使用BlueToothManager等組件
| | | +---BLEScanner 低功率藍牙設備掃描例子,這個例子不限制設備必須為Beacon設備
| | | +---BlueChat 一個使用藍牙TBluetoothManager組件,在兩個設備之間建立Socket通道,之后收發信息的例子。我記得這個例子對Android設備的版本有要求,太低版本的不支持
| | | +---Classic Bluetooth Basic app 傳統藍牙基礎示例,講解了如何配對,發現服務,創建Socket之后通訊等
| | | +---EchoClassic
| | | +---ExploreDevicesLE 這是一個運行在MacOS上面的低功率藍牙的發現程序,同樣是使用 TBluetoothLEManager ,發現設備,發現服務,發現Characteristic,並實現通訊的例子
| | | +---HeartRateMonitor 一個低功率藍牙的心率監測的例子,使用TBluetoothLE組件,訪問Characteristic,解析回傳數據並顯示
| | | +---ProximityClientServer
| | | \---ScanFilterServicesAdvData
| | +---CapitalIAP 這是個TInAppPurchase的例子,需要內購功能看這里
| | +---DownloadImage 使用Android后台Intent服務方式,下載圖片的例子,國內手機可以無法正常下載
| | +---DownloadServiceDemo
| | | +---DownloadImage
| | | \---DownloadService
| | +---FlashLight 一個使用TCameraComponent組件的手電筒的例子
| | +---LocationDemo 一個使用LocationSensor定位,之后使用WebBrowser控件顯示在google地圖上面。國內無法運行。
| | +---Map Type Selector 在iOS下面的地圖類型選擇的例子
| | +---Maps 使用TMapView控件的例子,iOS估計可以運行,國內Android應該不行
| | +---SensorInfo 一個綜合性的傳感器的例子
| | \---Windows 10 Notifications 在Windows10平台通知的例子
| +---EMS 使用EMS中間件服務的例子,EMS按用戶數付費
| +---Google Glass 使用Google眼睛的例子
| +---Media
| | +---MusicPlayer 一個音樂播放器的例子,這個播放器不是使用MediaPlayer控件,而是需要依據不同系統調用各自系統的播放器,相當於是如何寫的MediaPlayer控件。同時還有音樂庫的查詢等。
| | \---PhotoEditorDemo 一個圖片編輯軟件例子,通過標准Action照相、訪問相機膠卷和分享圖片等功能。同時使用TFilterManager的各種過濾器修改照片。
| +---Parallel Library 並行計算庫的例子
| +---Physics
| | +---Box2DHello 使用Boxe2D引擎的Hello程序
| | \---TestBed 使用Box2D引擎自帶的測試程序
| \---User Interface
| +---ActionsDemo 使用ActionList 建立動作,然后在MainMenu和PopMenu中關聯的例子
| +---Controls 各種移動端UI控件的使用的例子
| +---ControlsDesktop 各種桌面應用程序的UI控件的使用例子
| +---CopyPaste 一個使用TPlatformServices的跨平台的CopyPaste的示例程序
| +---CustomListBox 使用代碼自定義ListBox內容的一個例子
| +---DragAndDrop 使用TPlatformServices里面的拖拽服務,因為都跨平台了
| +---FireFlow 一個可以顯示多張圖片翻轉效果的例子
| +---Forms 一個橫豎屏轉換的例子
| +---ImageList 一個使用ImageList在各種支持ImageList的控件上的綜合應用的例子
| +---KeyboardToolbar
| +---KeyboardTypes在Edit控件里面使用各種keyboard的例子
| +---ListCollections
| +---ListView 關於自定義ListView的多個Demo程序,從自帶的Custom方式到自己寫代碼的方式
| | +---CustomAdapter
| | | \---data
| | +---CustomAdapters
| | | +---CustomAdapter
| | | \---drowsyserver
| | | \---data
| | +---ListViewAddThumbAndCaption
| | +---ListViewCheckList
| | +---ListViewCustomBottomDetail
| | +---ListViewMultiDetailAppearance
| | +---ListViewRatingsAppearance
| | \---SimpleListView
| +---LowLevel3D 使用FIreMonkey 3D特性的示例代碼
| +---ModelViewer 可以查看3D模型的示例程序,可以旋轉、縮放
| | +---FireMonkey
| | +---Models
| | \---Station
| +---MouseOverHints 支持鼠標在控件上面的時候顯示Hint,這是個多個控件的綜合例子
| +---MultiView 使用MultiView控件的例子,展現了Master區域依據不同OS或不同設置的顯示方式
| +---NativeControls 在多種控件的ControlType里面選擇Platform時候,則系統會使用原生控件,同時原生控件的特性也被激活,FMX的某些特性可能缺失。當前原生控件僅支持iOS的原生控件
| +---PlatformScrollBox 控件TPresentedScrollBox的例子,可以水平垂直滾動的區域
| +---PullToRefresh 下拉就刷新的例子
| +---ScrollableForm 使用VKAutoShowMode的全局變量,簡化了每個輸入控件都設置鍵盤類型的情況。同時這個例子還講了如何讓form適當滾動,避免彈出來的鍵盤遮擋住輸入控件的特性
| +---SearchContext
| +---Settings Project 類似系統設置界面的例子,里面用了TabControl作為頁面的切換
| +---ShaderFilters 使用TFilterManager的過濾器和動畫效果對圖片處理的例子
| +---TabControlDemo 使用TabControl的綜合性的例子
| +---TabletMasterDetailWithSearch 一個ListView的綜合例子,可以顯示主從信息
| +---TabSlideTransition 多頁面的Tabcontrol的例子,可以左右滑動翻動頁面
| \---Windows10NavigationPane
\---VCL
+---ActivityIndicator 這是一個windows10風格的indicator的代碼
+---App Analytics 使用AppAnalytics的應用分析特性的代碼
+---InetWinSockets 一個注冊Web.Winsockets組件的包的例子
+---RelativePanel 控件對齊關系的示例
+---SearchBox 一個SearchBox的演示
+---Sensors 針對Win的平板,或者帶有傳感器的設備的示例
+---SplitView 在Win10風格的新控件TSplitView,和移動端的很類似
+---Taskbar
| +---MDI 多子窗口時候,在Win7及以上環境的任務條,使用Taskbar控件
| +---OneForm 一個Taskbar控件的綜合例子,實現預覽下面顯示按鈕等
| \---VideoPlayer 一個視頻播放器的例子,通過Taskbar實現視頻預覽,按鈕實現相應的功能,以及進度等信息
+---ToggleSwitch 這是一個TToggleSwitch 開關控件的各種設置的示例程序
+---tregsvr 注冊Com組件的工具
+---Windows 10 Calendar
+---Windows 10 Notifications
\---Windows 10 SharingContract
+---Component
\---FrameWork
http://blog.sina.com.cn/s/blog_53b391130102w9m1.html
