Форум: "Основная";
Текущий архив: 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