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

📄 _4_multiplexedinputs_master.pas

📁 TVideoGrabber 7.5 TVideoGrabber 7.5 TVideoGrabber 7.5
💻 PAS
字号:
unit _4_MultiplexedInputs_Master;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls, VidGrab;

type
  TfrmMaster = class(TForm)
    Label1: TLabel;
    cboVideoDevices: TComboBox;
    btnStartMaster: TButton;
    btnStopMaster: TButton;
    btnNoPreview: TButton;
    VideoGrabberMaster: TVideoGrabber;
    mmoLog: TMemo;
    Label2: TLabel;
    cboVideoSize: TComboBox;
    cboVideoInput: TComboBox;
    Label3: TLabel;
    Label4: TLabel;
    cboAnalogVideoStandard: TComboBox;
    chkMultiplexedInputEmulation: TCheckBox;
    procedure btnStartMasterClick(Sender: TObject);
    procedure btnStopMasterClick(Sender: TObject);
    procedure cboVideoDevicesChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnNoPreviewClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure VideoGrabberMasterLog(Sender: TObject; LogType: TLogType;
      Severity, InfoMsg: String);
    procedure VideoGrabberMasterVideoDeviceSelected(Sender: TObject);
    procedure cboVideoSizeChange(Sender: TObject);
    procedure cboVideoInputChange(Sender: TObject);
    procedure cboAnalogVideoStandardChange(Sender: TObject);
    procedure chkMultiplexedInputEmulationClick(Sender: TObject);
  private
  public
  end;

var
  frmMaster: TfrmMaster;

implementation

{$R *.DFM}

uses MultiplexedInputs_Slaves;

const
   FormSpacings = 5;

var
   FrmSlave1: TFrmSlave;
   FrmSlave2: TFrmSlave;
   FrmSlave3: TFrmSlave;
   FrmSlave4: TFrmSlave;

procedure AssignListToComboBox (ComboBox: TComboBox; List: String; Index: integer);
begin
   ComboBox.Items.Text := List;
   if ComboBox.Items.Count > 0 then begin
      ComboBox.ItemIndex := Index;
   end;
end;

procedure CreateSlaveForm (IdInput: LongInt; var SlaveForm: TFrmSlave; FormTop, FormLeft: LongInt);
begin
   Application.CreateForm (TFrmSlave, SlaveForm);
   SlaveForm.Caption := 'Input ' + IntToStr (IdInput);
   SlaveForm.Top := FormTop;
   SlaveForm.Left := FormLeft;
   SlaveForm.VideoGrabberSlave.MultiplexedRole := mr_MultiplexedSlave;
   SlaveForm.Show;
end;

procedure TfrmMaster.FormCreate(Sender: TObject);
begin
   AssignListToComboBox (cboVideoDevices, VideoDevices, VideoGrabberMaster.VideoDevice);
   chkMultiplexedInputEmulation.Checked := VideoGrabberMaster.MultiplexedInputEmulation;
end;

procedure TfrmMaster.VideoGrabberMasterVideoDeviceSelected(
  Sender: TObject);
begin
   cboVideoDevices.Text := VideoGrabberMaster.VideoDeviceName;
   AssignListToComboBox (cboVideoSize, VideoGrabberMaster.VideoSizes, VideoGrabberMaster.VideoSize);
   AssignListToComboBox (cboVideoInput, VideoGrabberMaster.VideoInputs, VideoGrabberMaster.VideoInput);
   AssignListToComboBox (cboAnalogVideoStandard, VideoGrabberMaster.AnalogVideoStandards, VideoGrabberMaster.AnalogVideoStandard);
end;

procedure TfrmMaster.cboVideoSizeChange(Sender: TObject);
begin
   VideoGrabberMaster.VideoSize := cboVideoSize.ItemIndex;
end;

procedure TfrmMaster.cboVideoInputChange(Sender: TObject);
begin
   VideoGrabberMaster.VideoInput := cboVideoInput.ItemIndex;
end;

procedure TfrmMaster.cboAnalogVideoStandardChange(Sender: TObject);
begin
   VideoGrabberMaster.AnalogVideoStandard := cboAnalogVideoStandard.ItemIndex;
end;

procedure TfrmMaster.FormShow(Sender: TObject);
begin
   if not assigned (FrmSlave1) then CreateSlaveForm (1, FrmSlave1, frmMaster.Top + frmMaster.Height + FormSpacings, frmMaster.Left);
   if not assigned (FrmSlave2) then CreateSlaveForm (2, FrmSlave2, frmMaster.Top + frmMaster.Height + FormSpacings, frmMaster.Left + FrmSlave1.Width + FormSpacings);
   if not assigned (FrmSlave3) then CreateSlaveForm (3, FrmSlave3, FrmSlave1.Top + FrmSlave1.Height + FormSpacings, frmMaster.Left);
   if not assigned (FrmSlave4) then CreateSlaveForm (4, FrmSlave4, FrmSlave1.Top + FrmSlave1.Height + FormSpacings, frmMaster.Left + FrmSlave1.Width + FormSpacings);

   VideoGrabberMaster.AssociateMultiplexedSlave (0, FrmSlave1.VideoGrabberSlave.UniqueId);
   VideoGrabberMaster.AssociateMultiplexedSlave (1, FrmSlave2.VideoGrabberSlave.UniqueId);
   VideoGrabberMaster.AssociateMultiplexedSlave (2, FrmSlave3.VideoGrabberSlave.UniqueId);
   VideoGrabberMaster.AssociateMultiplexedSlave (3, FrmSlave4.VideoGrabberSlave.UniqueId);
end;

procedure TfrmMaster.cboVideoDevicesChange(Sender: TObject);
begin
   VideoGrabberMaster.VideoDevice := cboVideoDevices.ItemIndex;
end;

procedure TfrmMaster.btnStartMasterClick(Sender: TObject);
begin
   VideoGrabberMaster.StartPreview;
end;

procedure TfrmMaster.btnStopMasterClick(Sender: TObject);
begin
   VideoGrabberMaster.StopPreview;
end;

procedure TfrmMaster.btnNoPreviewClick(Sender: TObject);
begin
   VideoGrabberMaster.VideoRenderer := vr_None;
   VideoGrabberMaster.Visible := False;
end;

procedure TfrmMaster.VideoGrabberMasterLog(Sender: TObject;
  LogType: TLogType; Severity, InfoMsg: String);
begin
   mmoLog.Lines.Add ('[' + Severity + '] ' + InfoMsg);
end;

procedure TfrmMaster.chkMultiplexedInputEmulationClick(Sender: TObject);
begin
   VideoGrabberMaster.MultiplexedInputEmulation := chkMultiplexedInputEmulation.Checked;
end;

end.

⌨️ 快捷键说明

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