camselectdlg.pas
来自「canon 相机SDK,非常难得」· PAS 代码 · 共 111 行
PAS
111 行
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 + =
减小字号Ctrl + -
显示快捷键?