Главная страница
    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.011 c
14-1124811657
Windows
2005-08-23 19:40
2005.09.18
Следить за процессом закачки файла по GUAGE


9-1116598261
Кефир87
2005-05-20 18:11
2005.09.18
Поворот объекта. Очень просто. Опять туплю...


1-1124956540
dest81
2005-08-25 11:55
2005.09.18
Деление с остачей


14-1124880528
Korvet
2005-08-24 14:48
2005.09.18
Где скачать "Ras"


3-1123148932
Koralnik
2005-08-04 13:48
2005.09.18
Запрос в базу данных удаленного сервера





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский