Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2008, 13:47   #1
arv
 
Регистрация: 07.05.2008
Сообщений: 7
По умолчанию работа с Word

Всем привет, такая вот задача, есть поле Blob в ней текст Word точнее даже формата RTF. Задача вывести его в Word, а если юзер сделал изменения то сохранить измененый документ обратно в Blob.
Спасибо.
arv вне форума Ответить с цитированием
Старый 07.05.2008, 14:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вытаскивай из BLOB во временный файл и его уже в ворде открывай, ну и наоборот его содержимое запихивай в БЛОБ
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.05.2008, 14:19   #3
arv
 
Регистрация: 07.05.2008
Сообщений: 7
По умолчанию

а как отследить что юзер его изменил?
arv вне форума Ответить с цитированием
Старый 07.05.2008, 15:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

через FindFirstChangeNotification например
или сравнить дату изменения файла с предидущей.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.05.2008, 10:12   #5
arv
 
Регистрация: 07.05.2008
Сообщений: 7
По умолчанию

а как открыть Ворд, чтоб он был модален к моему приложению?
arv вне форума Ответить с цитированием
Старый 08.05.2008, 10:24   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да модальность не обязательна, просто например при открытии ворда скрывай свое приложение или делай его недоступным пока ворд не закроется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.05.2008, 14:39   #7
arv
 
Регистрация: 07.05.2008
Сообщений: 7
По умолчанию

что-то я не понял.
я вешаю на кнопку открытия текста для редактирования следующее:
1. записываю содержание блоб поля в файл типа temp.rtf.
2. собственно вопрос: как мне открыть ворд чтоб после закрытия его я перешел к шагу 3, где я сравню дату изменения у файла temp.rtf и если она изменилась то запишу его назад в блоб. еще хотелось бы, чтоб у ворда была толька кнопка "сохранить", а кнопки "сохранить как" небыло.
4.И затем я делаю рефреш в базе данных и наблюдаю измененый документ.
все это я хочу повесить на событие клик кнопки, поэтому я так понимаю что ворд должен быть модальным к моему приложению....
arv вне форума Ответить с цитированием
Старый 08.05.2008, 15:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
собственно вопрос:
Собственно ответы:
1 - через TWordApplication, открываеш документ, скрываеш форму, по срабатыванию WordApplication.OnQuit или WordApplication.OnDocumentBeforeClo se (сам выбереш) показываеш назад свою форму
Вот смотри:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ShellCtrls, Word2000, OleServer, ExtCtrls;

type
  TForm1 = class(TForm)
    WordApplication1: TWordApplication;
    WordDocument1: TWordDocument;
    ShellTreeView1: TShellTreeView;
    procedure ShellTreeView1Click(Sender: TObject);
    procedure WordApplication1Quit(Sender: TObject);
  private
    { Private declarations }
  public    cap:string;   Wordh,wordpar:hwnd;
    { Public declarations }
  end;

var           
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ShellTreeView1Click(Sender: TObject);
var fn, ro:OleVariant;
begin
ro:=true;
//*******IF********//
if LowerCase(ExtractFileExt(ShellTreeView1.Path))='.doc' then begin
 fn:=ShellTreeView1.Path;
 WordApplication1.Visible:=true;
 WordDocument1.Close;
  WordApplication1.Documents.Open(fn,EmptyParam,EmptyParam,ro,EmptyParam,
   EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
   EmptyParam);
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  cap:='kukureku#$$#$'+inttostr(random(1000));
  WordDocument1.ActiveWindow.Caption:=cap;
  hide;
end;
//*****End If*****// {}

end;

procedure TForm1.WordApplication1Quit(Sender: TObject);
begin
Application.ShowMainForm:=true;
Show;
BringToFront;
end;

end.
В C:\Temp положиш документ DOC, потом с RTF разберешся, и попробуй его открыть, прога исчезнет, а после закрытия ворда прога опять появится.

2 - Через CreateProcess...WaitForSingleObject ,

Если будет время напишу пример по второму пункту
I'm learning to live...

Последний раз редактировалось Stilet; 08.05.2008 в 15:30.
Stilet вне форума Ответить с цитированием
Старый 08.05.2008, 17:57   #9
arv
 
Регистрация: 07.05.2008
Сообщений: 7
По умолчанию

спасибо, попробую
arv вне форума Ответить с цитированием
Старый 13.05.2008, 10:50   #10
arv
 
Регистрация: 07.05.2008
Сообщений: 7
По умолчанию

есть еще вопрос, каким образом можно организовать поиск подстроки в Blob-поле. База данных MS SQL, поле типа имадж. Или для этого надо сделать поле типа MEMO и там дублировать текст бес форматирования по которому и искать?
arv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Word в Delphi Sanek_ntsk Общие вопросы Delphi 4 12.06.2008 10:20
Работа с документом Word из Delphi kate4ka Общие вопросы Delphi 2 18.02.2008 12:12
Работа с Word-ом grey Помощь студентам 6 25.11.2007 14:28
Работа с Word Shuraken Общие вопросы Delphi 2 18.09.2007 10:57
Работа с Word Prowler Общие вопросы Delphi 1 14.09.2007 23:26