Avatar billede uthsen Nybegynder
27. februar 2004 - 17:39 Der er 5 kommentarer og
1 løsning

Problem med kode til word

Denne knap henter noget tekst + Billeder fra min tabel. Mit Problem starter ved:////Problem begynder her

procedure TStart.WordClick(Sender: TObject);

      var Template,NewTemplate,ItemIndex:OleVariant;
        Exists: Boolean;


begin
    try
    Template := EmptyParam;
    NewTemplate := True;
    ItemIndex := 1;

    try
      Wordapplication1.Connect;
    except
      MessageDlg('Du har sikkert ikke programmet Word', mtError, [mbOk], 0);
      Abort;
    end;
    Wordapplication1.Visible := True;
    WordApplication1.Caption := 'Helles Vejledniner i Word';
   
  DBRichEdit1.SetFocus;
    {Create new document}
    Template := EmptyParam;
    NewTemplate := False;

    begin
      WordApplication1.Documents.Add(Template, NewTemplate);
      {Assign WordDocument component}
      WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex));
    end;
    {Turn Spell checking of because it takes a long time if enabled and slows down Winword}
    WordApplication1.Options.CheckSpellingAsYouType := False;
    WordApplication1.Options.CheckGrammarAsYouType := False;


    {Insert data}
    WordDocument1.Range.InsertAfter('Nummer :' + Start.Table1Nr.text + #13) ;
        WordDocument1.Range.InsertAfter(' ' + #13);
          WordDocument1.Range.InsertAfter(' ' + #13);

          //Billed 1

Clipboard.Assign(Billed.Picture) ;
WordDocument1.Sentences.Last.Paste;

      //Tekst insæt
WordDocument1.Range.InsertAfter(' ' + #13);
WordDocument1.Range.InsertAfter(' ' + #13);
WordDocument1.Range.InsertAfter(Start.A1.caption + #13);
WordDocument1.Range.InsertAfter(' ' + #13);
WordDocument1.Range.InsertAfter('Antal Billeder :' + Start.Table1L10.text + #13) ;
WordDocument1.Range.InsertAfter(' ' + #13);
WordDocument1.Range.InsertAfter('Ejer : ' + Start.Table1Ejer.text + #13) ;
WordDocument1.Range.InsertAfter(' ' + #13);
WordDocument1.Range.InsertAfter('Titel : ' + Start.Table1Titel.text + #13) ;
WordDocument1.Range.InsertAfter(' ' + #13);
WordDocument1.Range.InsertAfter('Dato : ' + Start.Table1Dato.text + #13) ;
WordDocument1.Range.InsertAfter(' ' + #13);
WordDocument1.Range.InsertAfter('Noter : ' + Start.DBRichEdit1.text + #13) ;
    WordDocument1.Range.InsertAfter(' ' + #13);

//Problem begynder her
  //Billed2:
// Får  Billede 1 og 2 med i word dokumentet-- Hvis Billede2 eksisterer ellers kommer fejl: noget med clipbord er tom 

//*****
   
begin
    if exists then

             


            WordDocument1.Range.InsertAfter('Billed :' + Start.Table1Nr.text + #13) ;
            Clipboard.Assign(Billed2.Picture) ;
            WordDocument1.Sentences.last.Paste;
            WordDocument1.Range.InsertAfter(Start.A2.caption + #13) ;

           
    end;
           

           

  except
    on E: Exception do
    begin
      ShowMessage(E.Message);
      WordApplication1.Disconnect;
    end;
  end;
 
end;

Erstattes ***** af:

//Billed2
Får kun  Billede 1 med i word dokumentet-- men ingen fejl.Har kun skiftet linie for "begin" og " if exists then"

if exists then

  begin
            WordDocument1.Range.InsertAfter('Billed :' + Start.Table1Nr.text + #13) ;
            Clipboard.Assign(Billed2.Picture) ;
            WordDocument1.Sentences.last.Paste;
            WordDocument1.Range.InsertAfter(Start.A2.caption + #13) ;

end;


Jeg vil gerne have både Billede 1 og 2 med i word dokumentet-- Hvis begge billeder eksisterer og ellers
kun Billede 1 , men uden fejlmeddelelse. Hvordan skal koden se ud?

HJÆLP!!!!

Der kommer en fejl mere, når man har klikket på knappen "Word" og et dokument er hentet lukket. Hvis jeg så
går til en anden record og igen klikker på word kommer meddelsen:"PRC-serveren er ikke til rådighed" + en OK knap
Klikkes på OK og derefter igen på knappen "Word" virker det igen. Hvordan undgår jeg denne fejl?
Avatar billede uthsen Nybegynder
27. februar 2004 - 18:13 #1
Tilføjelse
Linien:
WordDocument1.Range.InsertAfter(' ' + #13);
Mangler efter "begin"
for at  billede 1 og 2 kommer frem.
Ellers ville billede 3 bare overtage billede 2's plads
Avatar billede hrc Mester
29. februar 2004 - 21:01 #2
Så fik jeg endelig noget til at virke. Nedenstående indsætter 5 bitmaps fra Table1 i et dokument på formen: Navn <crlf> bitmap <crlf> <crlf>

procedure TfrmMain.btnTestClick(Sender: TObject);
var
  Template,NewTemplate,ItemIndex:OleVariant;
  i : integer;
begin
  Template := EmptyParam;
  NewTemplate := True;
  ItemIndex := 1;
  Wordapplication1.Connect;
  try
    try
      Wordapplication1.Visible := True;
      WordApplication1.Caption := 'Helles Vejledninger i Word';

      // Create new document
      Template := EmptyParam;
      NewTemplate := False;

      WordApplication1.Documents.Add(Template,NewTemplate,EmptyParam,EmptyParam);

      // Assign WordDocument component
      WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex));

      // Turn Spell checking of because it slows down Winword
      WordApplication1.Options.CheckSpellingAsYouType := False;
      WordApplication1.Options.CheckGrammarAsYouType := False;

      // Debug
      Assert(Table1.RecordCount >= 5,'To few records in table');

      Table1.First;
      for i := 0 to 4 do begin
        DBImage1.CopyToClipboard; // Note: Using TDBImage

        // Insert data
        WordDocument1.Paragraphs.Last.Range.Text := 'Picture :' +
                                                    Table1Tekst.AsString;
        WordDocument1.Range.InsertParagraphAfter;
        WordDocument1.Paragraphs.Last.Range.Paste; // Paste bitmap
        WordDocument1.Range.InsertParagraphAfter;
        WordDocument1.Range.InsertParagraphAfter;

        Table1.Next;
      end; // for
    except
      on E: Exception do
        ShowMessage(E.Message);
    end;
  finally
    WordApplication1.Disconnect;
  end; // try
end;

Det lykkes mig ikke at få din kode til at virke, så jeg endte med noget der virkede hos mig. Udfra mit eksempel kan du nok tilrette dit eget á lá:

  Clipboard.Assign(Billed2.Picture); // Brug TDBImage

  with WortDocument1 do begin
    Range.InsertAfter('Billed :' + Start.Table1Nr.text);
    Range.InsertParagraphAfter;
    Paragraphs.Last.Range.Paste;
    Range.InsertParagraphAfter;
    Range.InsertAfter(Start.A2.caption + #13) ;
    Range.InsertParagraphAfter;
    Range.InsertParagraphAfter;
  end; // with
Avatar billede uthsen Nybegynder
02. marts 2004 - 23:54 #3
Ser på det de nærmeste dage og vender tilbage.
På forhånd tak
Avatar billede uthsen Nybegynder
04. marts 2004 - 23:13 #4
Det kan jeg ikke få til at køre!
Jeg bruger Image og ikke DBImage, idet mine billeder skal ind i jpg-format
Avatar billede uthsen Nybegynder
04. marts 2004 - 23:26 #5
Sådan hentes billederne ind:
procedure TStart.HB1Click(Sender: TObject);
var
  Jpg: TJpegImage;
  Stream: TMemoryStream;
  FileExt: string;
  GraphType: TGraphType;
    bmp: TBitmap;

  scale: Double;

      tmpstr: String;
  extlen: Integer;
  SearchString:String;

  begin
begin
ret.click;
  if dlgOpenPicture.Execute then begin
    Jpg := nil;
    Stream := nil;
    try
      Stream := TMemoryStream.Create;
      FileExt := LowerCase(ExtractFileExt(dlgOpenPicture.FileName));
        Table1Dato.text:=GetFileDate(dlgOpenPicture.FileName);
          begin
            // Table1Titel.text:=(dlgOpenPicture.FileName);
//tmpstr := ExtractFileName(Table1Titel.Text);


// Delete(tmpstr, Pos(ExtractFileExt(tmpstr),tmpstr),extlen+1);
  //Table1Titel.text:=(tmpstr);


        end;


      if (FileExt = '.bmp') or (FileExt = '.dib') then begin
        GraphType := gtBitmap;
        Stream.Write(GraphType, 1);
        with Billed.Picture.Bitmap do begin
          LoadFromFile(dlgOpenPicture.FileName);
        Billed.Picture.Bitmap.SaveToStream(Stream);

        end;
      end else if (FileExt = '.ico') then begin
        GraphType := gtIcon;
        Stream.Write(GraphType, 1);
        with Billed.Picture.Icon do begin
          LoadFromFile(dlgOpenPicture.FileName);
          Billed.Picture.Bitmap.SaveToStream(Stream);
        end;
      end else if (FileExt = '.emf') or (FileExt = '.wmf') then begin
        GraphType := gtMetafile;
        Stream.Write(GraphType, 1);
        with Billed.Picture.Metafile do begin
          LoadFromFile(dlgOpenPicture.FileName);
        Billed.Picture.Bitmap.SaveToStream(Stream);
        end;
      end else if (FileExt = '.jpg') or (FileExt = '.jpeg')
        or (FileExt = '.jpe') then begin
        Jpg := TJpegImage.Create;
        Jpg.LoadFromFile(dlgOpenPicture.FileName);


        GraphType := gtJpeg;
        Stream.Write(GraphType, 1);
            if jpg.Height > jpg.Width then
        scale := 178/ jpg.Height
      else
        scale := 286/ jpg.Width;
      bmp := TBitmap.Create;
          Jpg.SaveToStream(Stream);
            try

        bmp.Width := Round(jpg.Width * scale);
        bmp.Height := Round(jpg.Height * scale);
        bmp.Canvas.StretchDraw(bmp.Canvas.Cliprect, jpg);


        jpg.Assign(bmp);


          Billed.picture.Assign(jpg);
        finally
        bmp.free;
      end;
          end;


      if (Table1.State <> dsEdit) and (Table1.State <> dsInsert) then
        Table1.Edit;
      Stream.Position := 0;
      TBlobField(Table1.FieldByName('Billed')).LoadFromStream(Stream);
    except
      jpg.Free;
      Stream.Free;
      raise;
    end;
    jpg.Free;
    Stream.Free;
  end;
end;

  //her billede 24    (thumbs)

        begin

    try
      Stream := TMemoryStream.Create;
      FileExt := LowerCase(ExtractFileExt(dlgOpenPicture.FileName));
      if (FileExt = '.bmp') or (FileExt = '.dib') then begin
        GraphType := gtBitmap;
        Stream.Write(GraphType, 1);
        with Image24.Picture.Bitmap do begin
          LoadFromFile(dlgOpenPicture.FileName);

          Image24.Picture.Bitmap.SaveToStream(Stream);
        end;
      end else if (FileExt = '.ico') then begin
        GraphType := gtIcon;
        Stream.Write(GraphType, 1);
        with Image24.Picture.Icon do begin
          LoadFromFile(dlgOpenPicture.FileName);
            Image24.Width:=40;
                Image24.Height:=40 ;
          Image24.Picture.Bitmap.SaveToStream(Stream);
        end;
      end else if (FileExt = '.emf') or (FileExt = '.wmf') then begin
        GraphType := gtMetafile;
        Stream.Write(GraphType, 1);
        with Image24.Picture.Metafile do begin
          LoadFromFile(dlgOpenPicture.FileName);
        Image24.Width:=40;
                Image24.Height:=40 ;
          Image24.Picture.Bitmap.SaveToStream(Stream);
        end;
      end else if (FileExt = '.jpg') or (FileExt = '.jpeg')
        or (FileExt = '.jpe') then begin
        Jpg := TJpegImage.Create;
        Jpg.LoadFromFile(dlgOpenPicture.FileName);
        //Image24.Picture.Assign(Jpg);
        GraphType := gtJpeg;
        Stream.Write(GraphType, 1);
            if jpg.Height > jpg.Width then
        scale := 50 / jpg.Height
      else
        scale := 80/ jpg.Width;
      bmp := TBitmap.Create;
            try
        //Crear el thumbnail
        bmp.Width := Round(jpg.Width * scale);
        bmp.Height := Round(jpg.Height * scale);
        bmp.Canvas.StretchDraw(bmp.Canvas.Cliprect, jpg);
        // Dibujarlo en el control

              // Image1.Picture.Assign(Image10.Picture);
        //Self.Canvas.Draw(170, 600, bmp);
        // Convertirlo y guardarlo en disco.
        jpg.Assign(bmp);
            jpg.SaveToFile(ChangeFileext(dlgOpenPicture.filename, '_thumb.JPG'));

          // Image24.Width:=40;
                //Image24.Height:=40 ; ///////////
        Jpg.SaveToStream(Stream);
          Image24.picture.Assign(jpg);
        finally
        bmp.free;
      end;
          end;


      if (Table1.State <> dsEdit) and (Table1.State <> dsInsert) then
        Table1.Edit;
      Stream.Position := 0;
      TBlobField(Table1.FieldByName('Thrums')).LoadFromStream(Stream);

    except
      jpg.Free;
      Stream.Free;
      raise;
    end;
    jpg.Free;
    Stream.Free;
    gem. click;
        gem. click;

    ShowMessage('Design Uthsen: Billede 1 er Indsat!');
    ret.click;
    D.text:='1';
    gem.click;

        end;
end;
//OSV billede2 ...3..



/////////////Og table 1:
procedure TStart.Table1AfterScroll(DataSet: TDataSet);
var
  Stream: TMemoryStream;
  Jpg: TJpegImage;
  GraphType: TGraphType;





    bmp: TBitmap;

  scale: Double;




  begin  //app start



  begin  //1
  Jpg := nil;
  Stream := nil;
  try
    Stream := TMemoryStream.Create;
      TBlobField(Table1.FieldByName('Billed')).SaveToStream(Stream);

    if Stream.Size > 0 then begin
      Stream.Position := 0;
      Stream.Read(GraphType, 1);
      case GraphType of
      gtBitmap:  Billed.Picture.Bitmap.LoadFromStream(Stream);
      gtIcon:    Billed.Picture.Icon.LoadFromStream(Stream);
      gtMetafile: Billed.Picture.Metafile.LoadFromStream(Stream);
      gtJpeg:  begin
                  Jpg := TJpegImage.Create;
                  Jpg.LoadFromStream(Stream);


            if jpg.Height > jpg.Width then
        scale := 178/ jpg.Height
      else
        scale := 286/ jpg.Width;
      bmp := TBitmap.Create;

            try

        bmp.Width := Round(jpg.Width * scale);
        bmp.Height := Round(jpg.Height * scale);
        bmp.Canvas.StretchDraw(bmp.Canvas.Cliprect, jpg);


        jpg.Assign(bmp);


          Billed.picture.Assign(jpg);
        finally
        bmp.free;
      end;
          end;

          end;



    end else
      Billed.Picture.Assign(nil);
  except
    Billed.Picture.Assign(nil);
  end;
  jpg.Free;
  Stream.Free;
end;  //1end

  //Thumbs
    begin    Jpg := nil;
  Stream := nil;
  try
    Stream := TMemoryStream.Create;
      TBlobField(Table1.FieldByName('Thrums')).SaveToStream(Stream);

    if Stream.Size > 0 then begin
      Stream.Position := 0;
      Stream.Read(GraphType, 1);
      case GraphType of
      gtBitmap:  Image24.Picture.Bitmap.LoadFromStream(Stream);
      gtIcon:    Image24.Picture.Icon.LoadFromStream(Stream);
      gtMetafile: Image24.Picture.Metafile.LoadFromStream(Stream);
      gtJpeg:  begin
                  Jpg := TJpegImage.Create;
                  Jpg.LoadFromStream(Stream);
                  Image24.Picture.Assign(Jpg);
      end else
        Image24.Picture.Assign(nil);
      end;
    end else
      Image24.Picture.Assign(nil);
  except
    Image24.Picture.Assign(nil);
  end;
  jpg.Free;
  Stream.Free;
end;  //Thumbs end
//Osv
end;  //app end
Avatar billede uthsen Nybegynder
29. august 2004 - 21:17 #6
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester