Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

delphi и Word [D6, WinXP]


Homa_Programer ©   (2004-09-22 23:58:00) 

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


Homa_Programer   (2004-09-28 22:55:00) [1]

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


TUser   (2004-09-24 10:12:00) [2]

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


muzik   (2004-09-24 10:10:00) [3]

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


YurikGL   (2004-09-23 08:52:00) [4]

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


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

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


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

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


GanibalLector   (2004-09-23 01:49:00) [6]

Выбирай:

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;


Homa_Programer   (2004-09-23 01:04:00) [7]

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

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

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо