Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Вниз

Куда пропадает кнопка?   Найти похожие ветки 

 
ищущий ответ   (2005-08-23 12:45) [0]

При выполнении данного кода все выполняется. Документ в Word полностью формируется. Но пункт меню, на который повешен данный код исчезает. Если добавить Button и на него повесить этот код, то после выполнения он тоже исчезает. Где ошибка???
procedure TForm1.N63Click(Sender: TObject);
var
Range0: OleVariant;
Direction : OleVariant;
T1,a : OleVariant;
i : integer;
vWidth : array [1..4] of OleVariant;
n : longint;
list:tstringlist;
memo: TMemo;
m: integer;//строка Мемо
s0: string;
vr:olevariant;
 separ: OleVariant;
 tcount: integer;
begin
Table1.Filtered := true;
Table1.Filter :="";
separ := wdPageBreak;
WordApplication1 := TWordApplication.Create(self);
WordApplication1.ConnectKind := ckNewInstance;
WordDocument1 := TWordDocument.Create(self);
WordFont1 := TWordFont.Create(self);
WordParagraphFormat1 := TWordParagraphFormat.Create(self);
if(StrToInt(Copy(WordApplication1.Version,0,Pos(".",WordApplication1.Version)-1))) < 9
 then
 //для Word 97
 (WordApplication1.Documents as Word97.Documents).Add(EmptyParam,EmptyParam)
 else
 begin
 //для Word 2000
 (WordApplication1.Documents as Word2000.Documents).Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
 end;
 WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  list.Free;
 list:=tstringlist.create;
 list.sorted:=true;
 list.Duplicates := dupIgnore;
 Form1.table1.First;
 while not Form1.table1.Eof do
    begin
    list.Add(table1.FieldByName("TarPl").AsString);
    Form1.Table1.Next;
    end;
  Memo := TMemo.Create(Self);
  Memo.Visible := false;
  Memo.Parent := Self;
  Memo.Clear;
  Memo.Lines.Assign(list);
  list.Free;
   for m := 0 to Memo.Lines.Count - 1 do
 BEGIN
 Range0 := WordDocument1.Range;
 s0 := "СПИСОК ...";
 Range0.InsertAfter(s0);
 //создание таблицы
 a := WordDocument1.Characters.Count - 1;
 T1 := WordDocument1.Tables.Add(WordDocument1.Range(a), 1, 4, EmptyParam, EmptyParam);
 vWidth[1] := 15;   vWidth[2] := 90;
 vWidth[3] := 30;   vWidth[4] := 55;
  for i := 1 to 4 do
    begin
    T1.Columns.Item(i).Width := Roundto(2.54*vWidth[i],0);
    end;
  T1.Cell(1, 1).Range.Text := "N пп";
  T1.Cell(1, 2).Range.Text := "Адрес";
  T1.Cell(1, 3).Range.Text := "Договор"+#13+"до";
  T1.Cell(1, 4).Range.Text := "Примечание";
  T1.Range.Font.Size := 9; //шрифт для таблицы
  i := 1;
WordApplication1.Visible:=true;
 Form1.Table1.First;
  while not Form1.table1.Eof do
    begin
  if  Form1.Table1.FieldByName("TarPl").AsString = Memo.Lines[m] then
      begin
      T1.Rows.Add(EmptyParam);
      T1.Cell(i+1, 1).Range.Text := IntToStr(i);
      T1.Cell(i+1, 2).Range.Text :=Table1.FieldByName("Ul").AsString+ " "+Table1.FieldByName("Dom").AsString + "  подъезд " +Table1.FieldByName("Pod").AsString;
      T1.Cell(i+1, 3).Range.Text := Form1.Table1.FieldByName("DataEnd").AsString;
      inc(i);
      end;
      Form1.Table1.Next;
    end;
   WordDocument1.Content.InsertAfter(" "+#13);
 //переход в конец документа
vr:=wdStory;
 WordApplication1.Selection.EndKey(vr,EmptyParam);
 if m<>memo.Lines.Count-1 then //если не последняя
 WordApplication1.Selection.InsertBreak(separ);//вставляем разрыв страницы
 END;
 Memo.Free;
 //переход в начало документа
 vr:=wdStory;
 WordApplication1.Selection.HomeKey(vr,EmptyParam);
end;


 
ищущий ответ   (2005-08-23 12:47) [1]

Если закоментарить этот кусок кода, то все нормально... В чем ошибка?
while not Form1.table1.Eof do
   begin
 if  Form1.Table1.FieldByName("TarPl").AsString = Memo.Lines[m] then
     begin
     T1.Rows.Add(EmptyParam);
     T1.Cell(i+1, 1).Range.Text := IntToStr(i);
     T1.Cell(i+1, 2).Range.Text :=Table1.FieldByName("Ul").AsString+ " "+Table1.FieldByName("Dom").AsString + "  подъезд " +Table1.FieldByName("Pod").AsString;
     T1.Cell(i+1, 3).Range.Text := Form1.Table1.FieldByName("DataEnd").AsString;
     inc(i);
     end;
     Form1.Table1.Next;
   end;


 
ищущий ответ   (2005-08-23 21:27) [2]

Помогите советом


 
Турист   (2005-08-23 21:36) [3]

Как минимум один list.Free лишний


 
ищущий ответ   (2005-08-23 21:40) [4]


> Турист   (23.08.05 21:36) [3]
> Как минимум один list.Free лишний

Да, но на исчезновение кнопки никак не влияет


 
ищущий ответ   (2005-08-24 11:49) [5]

Где же ошибка?


 
Gelax ©   (2005-08-24 17:50) [6]

Сокрее всего это связано с удаление чего-то несущестующего.
первый List.Free я бы убрал. В последнем куске вроде
криминала нет. Посомотри, может где-то есть
массивы, динамическая работа с памятью и т.д.
Либо присваивание друг другу совершенно различных типов.
Либо еще может проблема в том, что
i := 1;
потом
T1.Rows.Add(EmptyParam);
потом
T1.Cell(i+1, 1).Range.Text  здесь i+1 = 2 а строку вроде одну добавили



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

Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
3-1123481851
Layner
2005-08-08 10:17
2005.09.18
Как удалить БДЕ


1-1125150868
Duffik
2005-08-27 17:54
2005.09.18
Определение нажатой кнопки


3-1123501238
Aleksandr.
2005-08-08 15:40
2005.09.18
В чем проблема обращения к TPFibDataBase по указателю в Dll?


14-1124530493
Иксик
2005-08-20 13:34
2005.09.18
Нужна помощь при выборе старого советского холодильника


4-1122288327
Juice
2005-07-25 14:45
2005.09.18
Остановлен ли поток после TerminateThread ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский