⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camselectdlg.pas

📁 canon 相机SDK,非常难得
💻 PAS
字号:
unit CamSelectDlg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, cdError, cdType, cdAPI;

type
  TForm_CamSelect = class(TForm)
    Button_OK       :TButton;
    Button_Cancel   :TButton;
    ComboBox_CamList:TComboBox;
    
    procedure Button_OKClick(Sender: TObject);
    procedure Button_CancelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private }
    m_SourceInfoArray:array of cdSourceInfo;

  public
    { Public }
    m_SourceInfo:cdSourceInfo;

  end;

var
  Form_CamSelect: TForm_CamSelect;


implementation

{$R *.dfm}


//------------------------------------------------------------------------
//------------------------------------------------------------------------
procedure TForm_CamSelect.Button_OKClick(Sender: TObject);
begin
    if ComboBox_CamList.ItemIndex <> -1 then
        m_SourceInfo := m_SourceInfoArray[ComboBox_CamList.ItemIndex];

    ModalResult := mrOK;
end;


//------------------------------------------------------------------------
//------------------------------------------------------------------------
procedure TForm_CamSelect.Button_CancelClick(Sender: TObject);
begin
    ModalResult := mrCancel;
end;


//------------------------------------------------------------------------
//------------------------------------------------------------------------
procedure TForm_CamSelect.FormCreate(Sender: TObject);
var
    err     :cdErr;
    hEnum   :cdHEnum;
    index   :Integer;
    Count   :cdUInt32;

label
    ErrHandler;

begin
    err := CDEnumDeviceReset(1, hEnum);
    if err <> cdOK then goto ErrHandler;

    err := CDGetDeviceCount(hEnum, Count);
    if err <> cdOK then
        goto ErrHandler
    else if Count = 0 Then
    begin
        CDEnumDeviceRelease(hEnum);
        hEnum := 0;
        ComboBox_CamList.Text := '(None)';
        ModalResult := mrCancel;
        Exit;
    end;

    SetLength( m_SourceInfoArray, Count);

    for index := 0 To Count-1 do
    begin
        err := CDEnumDeviceNext(hEnum, m_SourceInfoArray[index]);
        if err = cdOK then
            ComboBox_CamList.AddItem(m_SourceInfoArray[index].Name, Sender);
    end;
    ComboBox_CamList.ItemIndex := 0;

    err := CDEnumDeviceRelease(hEnum);
    hEnum := 0;
    if err <> 0 then goto ErrHandler;

    Exit;
    
ErrHandler:
    if hEnum <> 0 then
        CDEnumDeviceRelease (hEnum);

    ShowMessage('Error!');

    ModalResult := mrCancel;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -