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

Вниз

Имя активного окна   Найти похожие ветки 

 
rodionov_uv   (2011-03-04 16:31) [0]

Как узнать имя активного окна Word.
Word запускается из Delphi количество запущенных документов может быть разным.


 
clickmaker ©   (2011-03-04 16:32) [1]

GetForegroundWindow что-ли? Или что значит "активного"?


 
rodionov_uv   (2011-03-04 16:35) [2]

того в котором происходит поиск


 
Противный   (2011-03-04 17:10) [3]

> rodionov_uv   (04.03.11 16:31) Word запускается из Delphi

Вот так вот сам берет и запускается?

> rodionov_uv   (04.03.11 16:31) того в котором происходит поиск

Вот, гад, сам запускается, сам ищет!


 
rodionov_uv   (2011-03-04 17:53) [4]

Вот так я запускаю и ищу что надо и могу одновременно делать это в нескольких документах(вернее по очереди, так как мне узнать в каком окне сейчас происходит поиск.

private
 procedure Find;
   { Private declarations }
 public
   i,t,t1,ch,ch1,bt,bt1,n,k : integer;
   W : Variant;
   ReadList: TStringList;
   EditList: TStringList;
   WriteList : TStringList;
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Find;
var
x: TLabeledEdit;
begin
 if W.Selection.Find.Execute("$##") then
 begin
   n := W.Selection.Start;
 end;
 if W.Selection.Find.Execute("^?##") then
   begin
   k := W.Selection.End;
   i := i + 1;
   if odd(i) then
   begin
     ReadList.Add(W.ActiveDocument.Range(n, k).Text);
     x:=TLabeledEdit.create(self);
     x.parent:=Panel1;
     x.name := "edit" + IntToStr(i);
     EditList.Add("edit" + IntToStr(i));
     x.EditLabel.Caption:= W.ActiveDocument.Range(n+3, k-2).Text;
     x.EditLabel.Font.Size := 11;
     x.Text := "";
     x.left:=10;
     x.top:=t;
     x.Width:=250;
     t := t + 50;
     bt := bt + 50;
     OpenBut.Top := bt;
     PrintBut.Top := bt;
     Form1.ClientHeight := ch + t - 30;
     Panel1.Height := ch + t - 30;
   end
   else
   begin
     ReadList.Add(W.ActiveDocument.Range(n, k).Text);
     x := TLabeledEdit.create(self);
     x.parent :=Panel1;
     x.name := "edit" + IntToStr(i);
     EditList.Add("edit" + IntToStr(i));
     x.EditLabel.Caption := W.ActiveDocument.Range(n+3, k-2).Text;
     x.EditLabel.Font.Size := 11;
     x.Text := "";
     x.left:=280;
     x.top := t1;
     x.Width:=250;
     t1 := t1 + 50;
     bt1 := bt1 + 50;
     OpenBut.Top := bt1;
     PrintBut.Top := bt1;
     Form1.ClientHeight := ch1 + t1 - 30;
     Panel1.Height := ch1 + t1 - 30;
   end;
   W.Selection.Start := k;
 end;
end;

procedure TForm1.OpenButClick(Sender: TObject);
var
 q:integer;
 aaa:String;
begin
................
 begin
   Form1.Visible := false;
   W := CreateOleObject("Word.Application");
   W.Visible := False;
for q:=1 to W.ActiveDocument.Words.count do
   begin
     Find;
   end;
 OpenBut.Enabled := False;
 PrintBut.Enabled := True;
 Form1.Constraints.MaxWidth := 567;
 Form1.Constraints.MinWidth := 567;
 if Panel1.Height <= 560 then
 begin
   Form1.Constraints.MaxHeight := Panel1.Height+34;
   Form1.Constraints.MinHeight := Panel1.Height+34;
   Form1.Constraints.MaxWidth := 550;
   Form1.Constraints.MinWidth := 550;
 end
 else
 begin
   Form1.Constraints.MaxHeight := 600;
   Form1.Constraints.MinHeight := 600;
 end;
 SetWindowPos(Form1.Handle,HWND_TOP,round((screen.Width/2)-(form1.Width/2)),0,0,0,SWP_nosize or SWP_NOACTIVATE);
 Form1.Visible := True;
SetWindowPos(FindWindow(nil,PChar(aaa + " - Microsoft Word")) or FindWindow(nil,PChar(aaa + " [Режим ограниченной функциональности] - Microsoft Word")),HWND_TOP,0,(Form1.Height + 5),0,0,SWP_nosize or SWP_NOACTIVATE);
 W.Visible := True;
 end;
end;

......................................


 
clickmaker ©   (2011-03-04 18:00) [5]

> как мне узнать в каком окне сейчас происходит поиск.

узнать откуда?
сам же запустил поиск, и не знаешь где?


 
rodionov_uv   (2011-03-04 18:08) [6]

это я просто щас вам на кнопку повесил чтоб было понятно , а так это происходит автоматически.
ладно начну с самого начала
имеем некий прибор который опрашивает счётчики элекроэнергии и значения заносит в таблицу Exel, прога ищет значения превышающие значения находящихся в тех.условии и создаёт таблицу превышения нагрузок, а заодно создаёт тех.условия и акты разграничений и т.д


 
clickmaker ©   (2011-03-04 18:12) [7]

> заносит в таблицу Exel

опа. Новый персонаж появился. А Word тут причем?


 
rodionov_uv   (2011-03-04 18:15) [8]

просто когда идёт поиск и я создаю тех.условие у меня выскакивает ошибка,
т.к окрыто несколько документов сразу


 
Противный   (2011-03-04 18:15) [9]

Application.ActiveWindow.Caption?


 
rodionov_uv   (2011-03-04 18:21) [10]

просто раньше была написана только для снятия показаний, а теперь ещё надо сверять с тех условиями.
тех.условия в worde, акты тоже в worde
алгоритм такой сняли показания - занесли в exel - открыли word - нашли строку- сравнили - если больше - создаём новый документ, но при етом можно создавать тех условия и акты во время поиска


 
clickmaker ©   (2011-03-04 18:23) [11]

такой алгоритм наводит на мысль о БД...


 
rodionov_uv   (2011-03-04 18:25) [12]

да исли это важно то опрос идёт каждую минуту


 
rodionov_uv   (2011-03-04 18:29) [13]

речи о бд быть не может по тому что эти листы нагрузук в 00:00 формируются в отдельный файл и отправляются по почте и в течении дня могут быть просмотрены как оперативным составом так по сети, а из програмного обеспечения кроме офиса ничего нет


 
rodionov_uv   (2011-03-04 22:37) [14]

Противный СПАСИБО тебе огромное опять выручил.

Только понять не могу, а чего ник такой выбрал вроде сам то и нечего и приятно на вопросы отвечаешь.

Если чего не ругайся на меня ведь програмированию учился 13 лет назад и больше не занимался, а щас просто нужда заставила вспомнить.


 
KilkennyCat ©   (2011-03-05 00:55) [15]


> rodionov_uv   (04.03.11 18:29) [13]

да, это мощнейший аргумент против бд.

сглючит твоя возня с ехел-ворд-хрензнаетчего, да еще с такой частотой - раз в минуту.
пиши бд, пока по уши не увяз.


 
Германн ©   (2011-03-05 01:08) [16]


> тех.условия в worde, акты тоже в worde
> алгоритм такой сняли показания - занесли в exel - открыли
> word - нашли строку- сравнили - если больше - создаём новый
> документ

Что простые текстовые файлы использовать в алгоритме обработки часто поступающих данных использовать некошерно? Обязательно Ворд и Ёксель?

Ну и clickmaker ©   (04.03.11 18:23) [11] + KilkennyCat ©   (05.03.11 00:55) [15] дело говорят.


 
han_malign   (2011-03-05 09:15) [17]


> да, это мощнейший аргумент против бд.
>
> сглючит твоя возня с ехел-ворд-хрензнаетчего

- тем более, что наверняка существуют менее ректальные пути экспорта ежедневного отчета, хотя бы в том же MS Access... - учитывая, что офис таки слегка заточен под автоматизацию документооборота...

З.Ы. Причем, за исключением опроса устройства, все остальное наверняка решается скриптами.


 
rodionov_uv   (2011-03-05 12:29) [18]

Как я уже говорил сама программа опроса была написана прежним програмистом и работает вот уже почти полтора года и нареканий пока не было.А с приходом нового начальства начались новые бзики, раньше получили отчёт отправили и хрен с ним, а теперь обработай и пошли в обработанном виде.
Теперь чтоб сформировать отчёт работают 3 человека, которые вообще не имеют представления что конкретно надо сделать и для чего это надо.
Среди них и я,а я сам-то человек ленивый вот и решил дописать програму, благо исходники остались.Вроде бы всё работает, а там дальше поглядим.
Единственное, что хотелось бы доделать, так это подсветку вводимого текста в документ при создании нового документа из шаблона, текст кода из четвёртого поста.Т.е когда компонент TLabeledEdit находится в фокусе то в Worde подсвечивался текст который я ввожу.



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

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

Наверх




Память: 0.52 MB
Время: 0.011 c
15-1298291318
Baks
2011-02-21 15:28
2011.06.12
Уникальный идентификтор компьютера


2-1298919160
Fr
2011-02-28 21:52
2011.06.12
TWebBrowser + как узнать адрес ссылки


1-1256910300
webpauk
2009-10-30 16:45
2011.06.12
Размер иконки


15-1297418426
reqyz
2011-02-11 13:00
2011.06.12
Перевести 3 строчки C++ -> Delphi


1-1256725844
JekaDefer
2009-10-28 13:30
2011.06.12
Как вывести TImage поверх DXDraw.