|
Example: Using OnDropFiles to accept files of different formats |
Top Previous Next |
|
By default, TRichViewEdit accepts the following types of dropped files:
This example shows how to use OnDropFiles event to insert all these types of files, and all file formats supported by installed Microsoft Office text import converters. This example assumes that RVOfficeConverter1:TRVOfficeConverter is placed on the form. procedure TForm1.RichViewEdit1DropFiles(Sender: TCustomRichViewEdit; Files: TStrings; var FileAction: TRVDropFileAction; var DoDefault: Boolean); {....................................................} { This function inserts one file FileName } function InsertFile(const FileName: String): Boolean; var pic: TPicture; gr: TGraphic; Ext: String; i: Integer; begin Result := False; try // 1. Trying to insert as a graphic pic := TPicture.Create; try pic.LoadFromFile(FileName); gr := RV_CreateGraphics(TGraphicClass(pic.Graphic.ClassType)); gr.Assign(pic.Graphic); Sender.InsertPicture('', gr, rvvaBaseline); Result := True; except; end; pic.Free; if Result then exit; // 2. Trying to insert as RTF file Ext := LowerCase(ExtractFileExt(FileName)); if Ext='.rtf' then begin Sender.InsertRTFFromFileEd(FileName); Result := True; exit; end; // 3. Trying to insert as RVF file if Ext='.rvf' then begin Sender.InsertRVFFromFileEd(FileName); Result := True; exit; end; // 4. Trying to insert as text file if Ext='.txt' then begin Sender.InsertTextFromFile(FileName); Result := True; exit; end; // 5. Trying to insert using office converters for i := 0 to RVOfficeConverter1.ImportConverters.Count-1 do if Pos(Ext, RVOfficeConverter1.ImportConverters[i].Filter)>0 then if RVOfficeConverter1.ImportRTF(FileName, i) then begin RVOfficeConverter1.Stream.Position := 0; Sender.InsertRTFFromFileEd(RVOfficeConverter1.Stream); RVOfficeConverter1.Stream.SetSize(0); Result := True; exit; end; except end; end; {....................................................} var i: Integer; begin for i := 0 to Files.Count-1 do InsertFile(Files[i]); DoDefault := False; end; |