请问当打开一个 savedialog的时候 键入文件名称  选择类型后  点保存返回的时候   应当怎样获得所选取的文件类型呢(也就是得到选择的filter的值 比如 *.txt等等)?另外   怎么判断是否已经在文件名区域输入了所欲的文件类型   就不必再附加   filter中选的类型了呢?各位有什么好办法   望指教

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sFileName: string;
    begin
      SaveDlg.Filter := 'Text File (*.txt)|*.TXT|';
      SaveDlg.Filter := SaveDlg.Filter + 'Word Doc (*.doc)|*.DOC|';  if  not SaveDlg.Execute then Exit;
      sFileName := SaveDlg.FileName ;  case SaveDlg.FilterIndex of
        1: begin
              sFileName := changefileext(SaveDlg.FileName, '.TXT');
              if fileexists(sFileName) then
              begin
                if application.MessageBox('a','a',MB_OKCANCEL + MB_DEFBUTTON1)<>ID_OK then exit;
              end;
              ......
           end;    2: begin
              sFileName := changefileext(SaveDlg.FileName, '.DOC');
              if fileexists(sFileName) then
              begin
                if application.MessageBox('a','a',MB_OKCANCEL + MB_DEFBUTTON1)<>ID_OK then exit;
              end;
              ......
           end;
      end;
    end;
      

  2.   

    procedure SaveFormToImage;
    var
      TempImage: TImage;
      SDCommon: TSaveDialog;
      FormJpeg: TJpegImage;
    //  FormGif: TGIFImage;
    begin
      SDCommon := TSaveDialog.Create(self);
      TempImage := TImage.Create(self);
      try
        TempImage.Picture.Bitmap := CaptureForm(Handle,Width,Height);
        SDCommon.Filter := 'Jpg files (*.jpg)|*.jpg|Gif files (*.gif)|*.gif|Bmp files (*.bmp)|*.bmp';
        SDCommon.FileName := name;
        if SDCommon.Execute then
        begin
          case SDCommon.FilterIndex of
            1: begin
                 FormJpeg := TJpegImage.create;
                 FormJpeg.Assign(TempImage.Picture.Bitmap);
                 FormJpeg.SaveToFile(SDCommon.FileName+'.jpg');
                 FormJpeg.free;
               end;
            2: begin
               end;
            3: begin
                 TempImage.Picture.SaveToFile(SDCommon.FileName+'.bmp');
               end;
          end;
        end;
      finally
        TempImage.Free;
        SDCommon.Free;
      end;
    end;