📄 ucamselect.pas
字号:
unit uCamSelect;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, cdAPI, cdType, cdError, ExtCtrls;
type
TFrmCamSelect = class(TForm)
Panel1: TPanel;
CamList: TComboBox;
BtnCancel: TButton;
BtnOk: TButton;
procedure FormCreate(Sender: TObject);
procedure BtnOkClick(Sender: TObject);
procedure BtnCancelClick(Sender: TObject);
procedure CamListChange(Sender: TObject);
private
{ Private declarations }
SourceInfo :Array of cdSourceInfo;
public
{ Public declarations }
end;
implementation
uses uMain;
//uses uConsts;
{$R *.dfm}
procedure TFrmCamSelect.FormCreate(Sender: TObject);
var Err :cdErr;
hEnum :cdHEnum;
i :integer;
Count :cdUInt32;
procedure ErrHandler;
begin
If hEnum <> 0 Then
CDEnumDeviceRelease (hEnum);
ShowMessage('ErrorCode = 0x'+ IntToHex(Err,8));
Close;
end;
begin
Err := CDEnumDeviceReset(1, hEnum);
if Err<>cdOK then
ErrHandler;;
Err := CDGetDeviceCount(hEnum, Count);
If Err <> cdOK Then
ErrHandler
Else if Count=0 then
begin
CDEnumDeviceRelease (hEnum);
hEnum := 0;
exit;
end;
SetLength(SourceInfo,Count);
For i := 0 To Count-1 do
begin
Err := CDEnumDeviceNext(hEnum, SourceInfo[i]);
If Err = cdOK Then
CamList.Items.Add(SourceInfo[i].Name);
end;
CamList.ItemIndex :=-1;
Err := CDEnumDeviceRelease(hEnum);
hEnum := 0;
If err <> 0 Then
ErrHandler;
end;
procedure TFrmCamSelect.CamListChange(Sender: TObject);
begin
if CamList.ItemIndex>=0 then
BtnOk.Enabled :=True
else
BtnOk.Enabled :=False;
end;
procedure TFrmCamSelect.BtnOkClick(Sender: TObject);
begin
If CamList.ItemIndex <> -1 Then
m_SourceInfo := SourceInfo[CamList.ItemIndex];
end;
procedure TFrmCamSelect.BtnCancelClick(Sender: TObject);
begin
m_SourceInfo.SurceType :=cdSRC_TYPE_INVALID;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -