PropEdit.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit PropEdit;
  2. interface
  3. uses SysUtils, Windows, Messages, Classes, Graphics, Controls, StdCtrls,
  4.   ExtCtrls, Forms, BaseClass, ComObj, StdVcl, AxCtrls, DirectShow9, dsutil;
  5. type
  6.   TFormPropEdit = class(TFormPropertyPage)
  7.     ListBox: TListBox;
  8.     procedure FormDeactivate(Sender: TObject);
  9.     procedure FormActivate(Sender: TObject);
  10.   public
  11.     pin: IPin;
  12.     Enum: TEnumMediaType;
  13.     function OnConnect(Unknown: IUnknown): HRESULT; override;
  14.     function OnDisconnect: HRESULT; override;
  15.     function OnApplyChanges: HRESULT; override;
  16.   end;
  17. const
  18.     CLSID_NullIPPropertyPage : TGUID = '{8928AD20-2FEE-11cf-BCB1-444553540000}';
  19. implementation
  20. uses main;
  21. {$R *.DFM}
  22. { TFormPropEdit }
  23. function TFormPropEdit.OnConnect(Unknown: IUnKnown): HRESULT;
  24. var NullFilter: INullIPP;
  25. begin
  26.   Unknown.QueryInterface(INullIPP, NullFilter);
  27.   NullFilter.get_IPin(pin);
  28.   result := NOERROR;
  29. end;
  30. function TFormPropEdit.OnDisconnect: HRESULT;
  31. begin
  32.   Pin := nil;
  33.   result := NOERROR;
  34. end;
  35. procedure TFormPropEdit.FormActivate(Sender: TObject);
  36. var
  37.   i: integer;
  38. begin
  39.   ListBox.Clear;
  40.   if Pin = nil then exit;
  41.   Enum:= TEnumMediaType.Create(pin);
  42.   if Enum.Count > 0 then
  43.     for i := 0 to Enum.Count - 1 do
  44.       ListBox.Items.Add(Enum.MediaDescription[i]);
  45. end;
  46. procedure TFormPropEdit.FormDeactivate(Sender: TObject);
  47. begin
  48.   Enum.Free;
  49. end;
  50. function TFormPropEdit.OnApplyChanges: HRESULT;
  51. begin
  52.   result := NOERROR;
  53. end;
  54. initialization
  55.   TBCClassFactory.CreatePropertyPage(TFormPropEdit, CLSID_NullIPPropertyPage);
  56. end.
  57.