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

📄 u_mcdemo_newconsumer.pas

📁 Voice Commnucation Components for Delphi
💻 PAS
字号:

(*
	----------------------------------------------

	  u_mcDemo_main.pas - vcMultiClient demo main form source
	  VC 2.5 Pro

	----------------------------------------------
	  This source code cannot be used without
	  proper license granted to you as a private
	  person or an entity by the Lake of Soft, Ltd

	  Visit http://lakeofsoft.com/ for more information.

	  Copyright (c) 2001, 2007 Lake of Soft, Ltd
		     All rights reserved
	----------------------------------------------

	  created by:
		Lake, 20 Oct 2003

	  modified by:
		Lake, Oct 2003
		Lake, Oct 2005

	----------------------------------------------
*)

{$I unaDef.inc }

unit
  u_mcDemo_newConsumer;

interface

uses
  Windows, unaTypes, Forms, unaVcIDE,
  ComCtrls, ExtCtrls, Controls, StdCtrls, Classes, Dialogs;

type
  Tc_form_newConsumer = class(TForm)
    c_comboBox_consumerType: TComboBox;
    Label1: TLabel;
    c_bevel_top: TBevel;
    c_pageControl_main: TPageControl;
    TabSheet1: TTabSheet;
    c_tabSheet_ipClient: TTabSheet;
    c_tabSheet_ipServer: TTabSheet;
    c_tabSheet_waveRiff: TTabSheet;
    c_button_OK: TButton;
    c_button_cancel: TButton;
    c_comboBox_waveOutDevId: TComboBox;
    c_label_waveOutDevId: TLabel;
    c_edit_clnServerAddr: TEdit;
    Label5: TLabel;
    c_comboBox_clnSocketType: TComboBox;
    Label3: TLabel;
    c_edit_clnPort: TEdit;
    Label4: TLabel;
    c_comboBox_srvSocketType: TComboBox;
    Label7: TLabel;
    c_edit_srvPort: TEdit;
    Label8: TLabel;
    c_label_waveRiff: TLabel;
    c_edit_waveRiffName: TEdit;
    c_button_waveRiffBrowse: TButton;
    c_saveDialog_waveRiff: TSaveDialog;
    TabSheet5: TTabSheet;
    c_edit_broadPort: TEdit;
    c_label_broadPort: TLabel;
    //
    procedure formCreate(sender: tObject);
    //
    procedure c_pageControl_mainChange(Sender: TObject);
    procedure c_comboBox_consumerTypeChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure c_button_waveRiffBrowseClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    waveOutDeviceID: int;
    //
    port: string;
    host: string;
    proto: tunavclProtoType;
    //
    riffName: string;
    //
    function selectNewConsumer(out consumerIndex: int): bool;
  end;

var
  c_form_newConsumer: Tc_form_newConsumer;


implementation


{$R *.dfm}

uses
  MMSystem, unaVcIDEUtils, u_mcDemo_main;

// --  --
procedure Tc_form_newConsumer.formCreate(Sender: TObject);
begin
  enumWaveDevices(c_comboBox_waveOutDevId, false, true);
  //
  c_comboBox_clnSocketType.itemIndex := 1;
  c_comboBox_srvSocketType.itemIndex := 1;
  //
  c_comboBox_consumerType.itemIndex := 0;
{$IFDEF __AFTER_D4__ }
  c_pageControl_main.activePageIndex := 0;
{$ENDIF}
  //
end;

// --  --
procedure Tc_form_newConsumer.formShow(Sender: TObject);
begin
  with (c_form_main.config) do begin
    //
    c_comboBox_waveOutDevId.itemIndex := get('waveOut.deviceIndex', int(0));
    c_comboBox_clnSocketType.itemIndex := get('ip.client.proto', ord(unapt_UDP));
    c_edit_clnPort.text := get('ip.client.port', '17800');
    c_edit_clnServerAddr.text := get('ip.client.host', '192.168.1.1');
    //
    c_comboBox_srvSocketType.itemIndex := get('ip.server.proto', ord(unapt_UDP));
    c_edit_srvPort.text := get('ip.server.port', '17800');
    //
    //
    c_edit_broadPort.text := get('ip.broadcast.port', '17830');
    //
    c_edit_waveRiffName.text := get('riff.name', '');
  end;
end;

// --  --
function Tc_form_newConsumer.selectNewConsumer(out consumerIndex: int): bool;
begin
  result := (mrOK = showModal());
  //
  if (result) then begin
    //
    consumerIndex := c_comboBox_consumerType.itemIndex;
    //
    //
    case (consumerIndex) of

      0: begin	// waveOut
	waveOutDeviceID := index2deviceId(c_comboBox_waveOutDevId);
      end;

      1: begin	// waveRiff
	riffName := c_edit_waveRiffName.text;
      end;

      2: begin	// ipClient
	host := c_edit_clnServerAddr.text;
	port := c_edit_clnPort.text;
	proto := tunavclProtoType(c_comboBox_clnSocketType.itemIndex);
      end;

      3: begin	// ipServer
	port := c_edit_srvPort.text;
	proto := tunavclProtoType(c_comboBox_srvSocketType.itemIndex);
      end;

      4: begin	// ipBroadcast
	port := c_edit_broadPort.text;
      end;

    end;
    //
    with (c_form_main.config) do begin
      //
      setValue('waveOut.deviceIndex', c_comboBox_waveOutDevId.itemIndex);
      setValue('ip.client.proto', c_comboBox_clnSocketType.itemIndex);
      setValue('ip.client.port', c_edit_clnPort.text);
      setValue('ip.client.host', c_edit_clnServerAddr.text);
      //
      setValue('ip.server.proto', c_comboBox_srvSocketType.itemIndex);
      setValue('ip.server.port', c_edit_srvPort.text);
      //
      setValue('ip.broadcast.port', c_edit_broadPort.text);
      //
      setValue('riff.name', c_edit_waveRiffName.text);
    end;
  end;
end;

// --  --
procedure Tc_form_newConsumer.c_pageControl_mainChange(Sender: TObject);
begin
  c_comboBox_consumerType.itemIndex := c_pageControl_main.activePage.pageIndex;
end;

// --  --
procedure Tc_form_newConsumer.c_comboBox_consumerTypeChange(Sender: TObject);
begin
{$IFDEF __AFTER_D4__ }
  if (c_pageControl_main.activePageIndex <> c_comboBox_consumerType.itemIndex) then
    c_pageControl_main.activePageIndex := c_comboBox_consumerType.itemIndex;
{$ELSE }
  // do something for D4, too lazy now
{$ENDIF }
end;

// --  --
procedure Tc_form_newConsumer.c_button_waveRiffBrowseClick(sender: tObject);
begin
  if (c_saveDialog_waveRiff.execute()) then begin
    //
    c_edit_waveRiffName.text := c_saveDialog_waveRiff.fileName;
  end;
end;

end.

⌨️ 快捷键说明

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