To scan for devices in the BLE range, you can call the DiscoverDevices method of the TBluetoothLE component:
BLE1.DiscoverDevices(3000, [SERVICE_UUID]);
From the preceding code, the first argument represents the timeout for the discovery, in milliseconds. The second (optional) argument is a list of UUID identifiers. When the second argument is provided, it acts as a filter over devices in the range. GATT specification states each service and characteristic exposed through BLE has a unique identifier (UUID) so it is easy to discover all devices matching at least one of the listed service UUIDs. The following screenshot shows the Object Inspector pane listing TBluetoothLE events:
Most of the functionalities around BLE are asynchronous so there are a number of events exposed by the component you'll need to handle. For example, once the device discovery has been started (using the previous line of code), you may want...