-
Как узнать имя активного окна Word. Word запускается из Delphi количество запущенных документов может быть разным.
-
GetForegroundWindow что-ли? Или что значит "активного"?
-
того в котором происходит поиск
-
> rodionov_uv (04.03.11 16:31) Word запускается из Delphi
Вот так вот сам берет и запускается?
> rodionov_uv (04.03.11 16:31) того в котором происходит поиск
Вот, гад, сам запускается, сам ищет!
-
Вот так я запускаю и ищу что надо и могу одновременно делать это в нескольких документах(вернее по очереди, так как мне узнать в каком окне сейчас происходит поиск.
private
procedure Find;
public
i,t,t1,ch,ch1,bt,bt1,n,k : integer;
W : Variant;
ReadList: TStringList;
EditList: TStringList;
WriteList : TStringList;
end;
var
Form1: TForm1;
implementation
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;
......................................
-
> как мне узнать в каком окне сейчас происходит поиск.
узнать откуда? сам же запустил поиск, и не знаешь где?
-
это я просто щас вам на кнопку повесил чтоб было понятно , а так это происходит автоматически. ладно начну с самого начала имеем некий прибор который опрашивает счётчики элекроэнергии и значения заносит в таблицу Exel, прога ищет значения превышающие значения находящихся в тех.условии и создаёт таблицу превышения нагрузок, а заодно создаёт тех.условия и акты разграничений и т.д
-
> заносит в таблицу Exel
опа. Новый персонаж появился. А Word тут причем?
-
просто когда идёт поиск и я создаю тех.условие у меня выскакивает ошибка, т.к окрыто несколько документов сразу
-
Application.ActiveWindow.Caption?
-
просто раньше была написана только для снятия показаний, а теперь ещё надо сверять с тех условиями. тех.условия в worde, акты тоже в worde алгоритм такой сняли показания - занесли в exel - открыли word - нашли строку- сравнили - если больше - создаём новый документ, но при етом можно создавать тех условия и акты во время поиска
-
такой алгоритм наводит на мысль о БД...
-
да исли это важно то опрос идёт каждую минуту
-
речи о бд быть не может по тому что эти листы нагрузук в 00:00 формируются в отдельный файл и отправляются по почте и в течении дня могут быть просмотрены как оперативным составом так по сети, а из програмного обеспечения кроме офиса ничего нет
-
Противный СПАСИБО тебе огромное опять выручил.
Только понять не могу, а чего ник такой выбрал вроде сам то и нечего и приятно на вопросы отвечаешь.
Если чего не ругайся на меня ведь програмированию учился 13 лет назад и больше не занимался, а щас просто нужда заставила вспомнить.
-
> rodionov_uv (04.03.11 18:29) [13]
да, это мощнейший аргумент против бд.
сглючит твоя возня с ехел-ворд-хрензнаетчего, да еще с такой частотой - раз в минуту. пиши бд, пока по уши не увяз.
-
> тех.условия в worde, акты тоже в worde > алгоритм такой сняли показания - занесли в exel - открыли > word - нашли строку- сравнили - если больше - создаём новый > документ
Что простые текстовые файлы использовать в алгоритме обработки часто поступающих данных использовать некошерно? Обязательно Ворд и Ёксель?
Ну и clickmaker © (04.03.11 18:23) [11] + KilkennyCat © (05.03.11 00:55) [15] дело говорят.
-
> да, это мощнейший аргумент против бд. > > сглючит твоя возня с ехел-ворд-хрензнаетчего
- тем более, что наверняка существуют менее ректальные пути экспорта ежедневного отчета, хотя бы в том же MS Access... - учитывая, что офис таки слегка заточен под автоматизацию документооборота...
З.Ы. Причем, за исключением опроса устройства, все остальное наверняка решается скриптами.
-
Как я уже говорил сама программа опроса была написана прежним програмистом и работает вот уже почти полтора года и нареканий пока не было.А с приходом нового начальства начались новые бзики, раньше получили отчёт отправили и хрен с ним, а теперь обработай и пошли в обработанном виде. Теперь чтоб сформировать отчёт работают 3 человека, которые вообще не имеют представления что конкретно надо сделать и для чего это надо. Среди них и я,а я сам-то человек ленивый вот и решил дописать програму, благо исходники остались.Вроде бы всё работает, а там дальше поглядим. Единственное, что хотелось бы доделать, так это подсветку вводимого текста в документ при создании нового документа из шаблона, текст кода из четвёртого поста.Т.е когда компонент TLabeledEdit находится в фокусе то в Worde подсвечивался текст который я ввожу.
|