Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

delphi и Word   Найти похожие ветки 

 
Homa_Programer ©   (2004-09-22 23:58) [0]

Народ , помогите как создавать отчеты в Ворде?
Помогите чем можите, хоть глупостями, ведь они тоже бывают умными...


 
GanibalLector ©   (2004-09-23 00:03) [1]

Не понял.Т.е. есть некий набор данных в Delphi,а тебе его нужно в  Word??? И еще,как вставлять закладками или все разом???


 
jack128 ©   (2004-09-23 00:32) [2]

Homa_Programer ©   (22.09.04 23:58)
Обычно отчет делают по шаблону.
Шаблон - это обычный документ Ворд, но нужных местах в этом домументе вписаны ключевые слова. При создании отчета ты ищешь эти ключевые слова и заменяешь их на свои данные.


 
Homa_Programer ©   (2004-09-23 01:04) [3]

все разом вставлять... и вообще если естькакая инфа по этой теме киньте на почту... я тока начал осваивать Ворд через делфу...даже можно сказать еще не начал... так что я не совсем понимаю ваши вопросы...

Если по шаболну то как? и Если без шаблона тоже КАК?

а на 1-й вопрос : скорее всего разом.


 
GanibalLector ©   (2004-09-23 01:49) [4]

Выбирай:

unit WordClipUnit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls;

type
TForm1 = class(TForm)
  StringGrid1: TStringGrid;
  Button1: TButton;
  procedure FormCreate(Sender: TObject);
  procedure Button1Click(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function GetGridClipText(Grid: TStringGrid): string;
var Str: string;
  x, y: integer;
  StartHTML,
  EndHTML,
  StartFragment,
  EndFragment: integer;

const Line01 = "Version:1.0"#13#10;
    Line02 = "StartHTML:000000000"#13#10;
    Line03 = "EndHTML:000000000"#13#10;
    Line04 = "StartFragment:000000000"#13#10;
    Line05 = "EndFragment:000000000"#13#10;
    Line06 = "StartSelection:000000000"#13#10;
    Line07 = "EndSelection:000000000"#13#10;
    Line08 = "Source: by Dec`s procedure"#13#10;
    Line09 = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">"#13#10;
    Line10 = "<HTML><HEAD></HEAD>"#13#10;
    Line11 = "<BODY>"#13#10;
    Line12 = "<TABLE border=1><!--StartFragment-->"#13#10;
    Line13 = "<TBODY>"#13#10;

    Line14 = "</TBODY><!--EndFragment--><!--EndFragment-->"#13#10;
    Line15 = "<!--EndFragment--></TABLE>"#13#10;
    Line16 = "</BODY>"#13#10;
    Line17 = "</HTML>"#13#10;

    Offset1 = Length(Line01 + Line02) -2;
    Offset2 = Length(Line01 + Line02 + Line03) -2;
    Offset3 = Length(Line01 + Line02 + Line03 + Line04) -2;
    Offset4 = Length(Line01 + Line02 + Line03 + Line04 + Line05) -2;
    Offset5 = Length(Line01 + Line02 + Line03 + Line04 + Line05 + Line06) -2;
    Offset6 = Length(Line01 + Line02 + Line03 + Line04 + Line05 + Line06 + Line07) -2;

procedure FillStringWithNum(var Str: string; Offset: integer; Num: integer);
var i: integer;
begin
  while Num > 0 do  begin
    i := Num Mod 10;
    Str[Offset] := Chr(Ord("0") + i);
    dec(Offset);
    Num := Num div 10;
  end;
end;

begin
Str := Line01 + Line02 + Line03 + Line04 + Line05 +
       Line06 + Line07 + Line08 + Line09;
StartHTML := Length(Str);
Str := Str + Line10 + Line11 + Line12;
StartFragment := Length(Str);
Str := Str + Line13;
with Grid do begin
  for y := 0 to RowCount - 1 do
    begin
      str := str + "<TR>"#13#10;
      for x := 0 to ColCount - 1 do
        begin
          str := str + "<TD>" + Cells[x, y] + "</TD>";
        end;
      str := str + #13#10"</TR>"#13#10;
    end;
end;
Str := Str + Line14;
EndFragment := Length(Str);
Str := Str + Line15 + Line16 + Line17;
EndHTML := Length(Str);
FillStringWithNum(Str, Offset1, StartHTML);
FillStringWithNum(Str, Offset2, EndHTML);
FillStringWithNum(Str, Offset3, StartFragment);
FillStringWithNum(Str, Offset4, EndFragment);
FillStringWithNum(Str, Offset5, StartFragment);
FillStringWithNum(Str, Offset6, EndFragment);
result := str;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Options := StringGrid1.Options + [goEditing]
end;

procedure TForm1.Button1Click(Sender: TObject);
var str: string;
  hData: HGlobal;
  pData: pointer;
  Len: LongInt;
  zzz: integer;
begin
zzz := 52863;;
OpenClipboard(Application.Handle);
str := GetGridClipText(StringGrid1);
Len:=length(str);
hData:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, Len);
pData:=GlobalLock(hData);
Move(PChar(str)^, pData^, Len);
EmptyClipboard;
SetClipboardData(zzz,hData);
GlobalUnlock(hData);
CloseClipboard;
end;

end.


или

procedure TForm1.Button1Click(Sender: TObject);
var App, Rgn : variant;
  i, j: integer;
  str: string;
const Sep = "#";  //любой символ
begin
App:= CreateOleObject("Word.Application");
App.Visible := true;
App.Documents.Add;
Rgn := App.Selection.Range;
Rgn.Collapse(0);

for i := 0 to StringGrid1.RowCount - 1 do
  begin
    str := "";
    for j := 0 to StringGrid1.ColCount - 2 do
      str := str + StringGrid1.Cells[j, i] + Sep;
    str := str + StringGrid1.Cells[StringGrid1.ColCount - 1, i];
    Rgn.InsertAfter(str);
    Rgn.InsertParagraphAfter;
  end;
Rgn.ConvertToTable(Sep);

App := null;
end;



 
jack128 ©   (2004-09-23 01:51) [5]

Homa_Programer ©   (23.09.04 1:04) [3]
а на 1-й вопрос : скорее всего разом.


Всгда лудше разом. Ибо это быстрее.  

Вообще о взаимодествии ворда почитай на Королевстве Дельфи, там кажется были статейки про это.. Да и вообще Яндекс в зубы и вперёд - если не лесть в дебри, то тема достаточно простая..


 
YurikGL ©   (2004-09-23 08:52) [6]

http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208


 
muzik   (2004-09-24 10:10) [7]

мдя..чота я не вижу тут даже близко ответа по теме


 
TUser ©   (2004-09-24 10:12) [8]

Есть статьи на Королевстве Делфи.


 
Homa_Programer ©   (2004-09-28 22:55) [9]

благодарю всех за помощь)))



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
4-1094994967
шнур
2004-09-12 17:16
2004.10.17
shellexecute


14-1096536754
X9
2004-09-30 13:32
2004.10.17
Дрова на звук для мат. платы Gigabyte GA-8SQ800


1-1096898402
Wish
2004-10-04 18:00
2004.10.17
Про формы


14-1096441318
Мазут Береговой
2004-09-29 11:01
2004.10.17
Should not see me


9-1087138876
Жора
2004-06-13 19:01
2004.10.17
Перемещние по карте