Конференция "Начинающим" » Имя активного окна [D7, WinXP]
 
  • rodionov_uv (04.03.11 16:31) [0]
    Как узнать имя активного окна Word.
    Word запускается из Delphi количество запущенных документов может быть разным.
  • clickmaker © (04.03.11 16:32) [1]
    GetForegroundWindow что-ли? Или что значит "активного"?
  • rodionov_uv (04.03.11 16:35) [2]
    того в котором происходит поиск
  • Противный (04.03.11 17:10) [3]
    > rodionov_uv   (04.03.11 16:31) Word запускается из Delphi

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

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

    Вот, гад, сам запускается, сам ищет!
  • rodionov_uv (04.03.11 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 © (04.03.11 18:00) [5]
    > как мне узнать в каком окне сейчас происходит поиск.

    узнать откуда?
    сам же запустил поиск, и не знаешь где?
  • rodionov_uv (04.03.11 18:08) [6]
    это я просто щас вам на кнопку повесил чтоб было понятно , а так это происходит автоматически.
    ладно начну с самого начала
    имеем некий прибор который опрашивает счётчики элекроэнергии и значения заносит в таблицу Exel, прога ищет значения превышающие значения находящихся в тех.условии и создаёт таблицу превышения нагрузок, а заодно создаёт тех.условия и акты разграничений и т.д
  • clickmaker © (04.03.11 18:12) [7]
    > заносит в таблицу Exel

    опа. Новый персонаж появился. А Word тут причем?
  • rodionov_uv (04.03.11 18:15) [8]
    просто когда идёт поиск и я создаю тех.условие у меня выскакивает ошибка,
    т.к окрыто несколько документов сразу
  • Противный (04.03.11 18:15) [9]
    Application.ActiveWindow.Caption?
  • rodionov_uv (04.03.11 18:21) [10]
    просто раньше была написана только для снятия показаний, а теперь ещё надо сверять с тех условиями.
    тех.условия в worde, акты тоже в worde
    алгоритм такой сняли показания - занесли в exel - открыли word - нашли строку- сравнили - если больше - создаём новый документ, но при етом можно создавать тех условия и акты во время поиска
  • clickmaker © (04.03.11 18:23) [11]
    такой алгоритм наводит на мысль о БД...
  • rodionov_uv (04.03.11 18:25) [12]
    да исли это важно то опрос идёт каждую минуту
  • rodionov_uv (04.03.11 18:29) [13]
    речи о бд быть не может по тому что эти листы нагрузук в 00:00 формируются в отдельный файл и отправляются по почте и в течении дня могут быть просмотрены как оперативным составом так по сети, а из програмного обеспечения кроме офиса ничего нет
  • rodionov_uv (04.03.11 22:37) [14]
    Противный СПАСИБО тебе огромное опять выручил.

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

    Если чего не ругайся на меня ведь програмированию учился 13 лет назад и больше не занимался, а щас просто нужда заставила вспомнить.
  • KilkennyCat © (05.03.11 00:55) [15]

    > rodionov_uv   (04.03.11 18:29) [13]

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

    сглючит твоя возня с ехел-ворд-хрензнаетчего, да еще с такой частотой - раз в минуту.
    пиши бд, пока по уши не увяз.
  • Германн © (05.03.11 01:08) [16]

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

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

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

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

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

    З.Ы. Причем, за исключением опроса устройства, все остальное наверняка решается скриптами.
  • rodionov_uv (05.03.11 12:29) [18]
    Как я уже говорил сама программа опроса была написана прежним програмистом и работает вот уже почти полтора года и нареканий пока не было.А с приходом нового начальства начались новые бзики, раньше получили отчёт отправили и хрен с ним, а теперь обработай и пошли в обработанном виде.
    Теперь чтоб сформировать отчёт работают 3 человека, которые вообще не имеют представления что конкретно надо сделать и для чего это надо.
    Среди них и я,а я сам-то человек ленивый вот и решил дописать програму, благо исходники остались.Вроде бы всё работает, а там дальше поглядим.
    Единственное, что хотелось бы доделать, так это подсветку вводимого текста в документ при создании нового документа из шаблона, текст кода из четвёртого поста.Т.е когда компонент TLabeledEdit находится в фокусе то в Worde подсвечивался текст который я ввожу.
 
Конференция "Начинающим" » Имя активного окна [D7, WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0.003]