//////// 일단 예제입니다 ////////////
procedure TForm1.Button1Click(Sender: TObject);
var
a : string;
i : integer;
menu: TMenuItem;
begin
a := 'E:josgogi.mpg';
for i := N21.Count - 1 downto 0 do
N21.Remove(N21.Items[i]);
FilterGraph.ClearGraph;
FilterGraph.FilterGraph2.RenderFile(StringToOleStr(a),nil);
GetFilterList(FilterGraph.FilterGraph2,Listbox1.Items);
FilterGraph.QueryInterfaces;
FilterGraph.MediaControl.Run;
for i := 0 to Listbox1.items.count -1 do
begin
menu := TMenuItem.Create(Self);
menu.Caption := Listbox1.items[i];
menu.OnClick := MenuClick; // click 이벤트
N21.Add(menu);
end;
end;
// 필터리스트 뽑기
procedure TForm1.GetFilterList(graph: IFilterGraph; list: TStrings);
var
EnumFilters: IEnumFilters;
BaseFilter: IBaseFilter;
FilterInfo: TFilterInfo;
begin
list.Clear;
graph.EnumFilters(EnumFilters);
While (EnumFilters.Next(1, BaseFilter, nil)=S_OK) do
begin
BaseFilter.QueryFilterInfo(FilterInfo);
list.Add(FilterInfo.achName);
end;
end;
// 클릭 이벤트
procedure TForm1.MenuClick(Sender: TObject);
begin
if Sender is TMenuItem then
begin
ShowMessage((Sender as TMenuItem).Caption);
end;
end;
위에 예제 보면요, 리스트박스에 있는 넘을 메뉴에 집어넣었거든요. 그런데 이게 파일에 따라 다 달라요.
제가 기초없이 배워서 헷갈리는게 많아서요.
예제 찍어붙어서 연습중인데요 ~~~~
GetFilterList 라는 함수가 GetFilterList(graph: IFilterGraph; list: TStrings) 형으로 선언했구요.
TmenuItem은 String형이더라구요. 그런데 이 넘을 바로 메뉴에 넣고 싶거든요.
데이터형땜시 그러는건 아는디 해결 방법좀 갈카 주십시오 ~~~~~~~~!!!
어케 하면 될까요??? 이걸 하나로 합쳐서 걍 메뉴에 바로 넣고 싶습니다.
하다가 막 짜증만 나고 그러네요 ....