CameraScanner
TsgcHTMLComponent_CameraScanner — Delphi、C++ Builder、.NET で、ブラウザー自身のネイティブデコーダーでバーコードや QR コードをスキャンするライブカメラパネルをレンダリングします。サードパーティ製ライブラリは不要で、写真撮影と手動入力によるフォールバックも常に利用できます。
TsgcHTMLComponent_CameraScanner — Delphi、C++ Builder、.NET で、ブラウザー自身のネイティブデコーダーでバーコードや QR コードをスキャンするライブカメラパネルをレンダリングします。サードパーティ製ライブラリは不要で、写真撮影と手動入力によるフォールバックも常に利用できます。
Mode と Formats を設定してから HTML プロパティを読み取ります。パネルはカメラを起動し、ブラウザーの BarcodeDetector でデコードして、結果を FieldName の下にポストします。
TsgcHTMLComponent_CameraScanner
カメラのビューファインダーパネル + 隠しフィールド + インラインスクリプト
Delphi, C++ Builder, .NET
同梱するデコーダーはなく、CDN から読み込むものもありません。BarcodeDetector が利用できない環境では、パネルがその旨を表示しつつ、手動入力と写真撮影で動作を継続します。
uses
sgcHTML_Component_CameraScanner;
var
oScanner: TsgcHTMLComponent_CameraScanner;
begin
oScanner := TsgcHTMLComponent_CameraScanner.Create(nil);
try
oScanner.ScannerID := 'receiving_scan';
oScanner.Mode := smBoth; // scan barcodes AND capture a photo
oScanner.Formats := 'qr_code,ean_13,code_128';
oScanner.FieldName := 'sku';
oScanner.ContinuousScan := True;
oScanner.BeepOnScan := True;
WebModule.Response := oScanner.HTML; // camera panel + hidden fields + inline script
finally
oScanner.Free;
end;
end;
// includes: sgcHTML_Component_CameraScanner.hpp
TsgcHTMLComponent_CameraScanner *oScanner = new TsgcHTMLComponent_CameraScanner(NULL);
try
{
oScanner->ScannerID = "receiving_scan";
oScanner->Mode = smBoth;
oScanner->Formats = "qr_code,ean_13,code_128";
oScanner->FieldName = "sku";
oScanner->ContinuousScan = true;
oScanner->BeepOnScan = true;
String html = oScanner->HTML; // camera panel + hidden fields + inline script
}
__finally
{
delete oScanner;
}
using esegece.sgcWebSockets;
var scanner = new TsgcHTMLComponent_CameraScanner();
scanner.ScannerID = "receiving_scan";
scanner.Mode = smBoth;
scanner.Formats = "qr_code,ean_13,code_128";
scanner.FieldName = "sku";
scanner.ContinuousScan = true;
scanner.BeepOnScan = true;
string html = scanner.HTML; // camera panel + hidden fields + inline script
最もよく使うメンバーです。
smBarcode、smPhoto、または既定値の smBoth。smBarcode では撮影ボタンが描画されず、smPhoto ではスキャンループ自体が省略されます。
BarcodeDetector のフォーマット文字列をカンマ区切りで指定します。既定値は qr_code,ean_13,code_128 で、ブラウザーのデコーダーに渡す JS 配列へエスケープされて渡されます。
sfEnvironment(既定値、背面カメラ)または sfUser(前面カメラ)。
既定値の True では、読み取り成功後もデコードを継続します。False にすると、最初のスキャン成功時にカメラが自動停止します。
スキャン結果をポストする隠しフィールド名です。撮影した写真は FieldName_photo の下に JPEG の data URL としてポストされます。
すべてのスキャン結果を sgcHTMX の WebSocket ブリッジ経由でプッシュするか、Action に POST します。いずれの場合も sgcCameraScanner:scan の DOM イベントが必ず発火します。