![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Помогите пожалуйста. почему закрывается моя форма при открытии Exel?
|
|
#2
|
||||
|
||||
|
Цитата:
Код:
procedure TForm26.suiButton22Click(Sender: TObject);
const Months:array [1..12] of string[8]=('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');
Var y:Word;
i, s, s1:integer;
XL: variant;
data1, data2: string;
begin
if (Form26.QueryPoliMes.RecordCount<=0) then begin
Application.MessageBox('Извините, Заказов нет!','Предупреждение',MB_OK);
end
else if (Form26.QueryPoliMes.RecordCount>0) then begin try
if Application.MessageBox('Вы уверены?'+#13+'Сделать расчет для Бухгалтера?',
'Расчет Полиграфия',MB_OKCANCEL)=1 then
Close;
XL := CreateOleObject('Excel.Application');
XL.DisplayAlerts := false;
XL.WorkBooks.Add;
XL.Visible := true;
// XL.Selection.WrapText:=True; // перенос по словам
XL.Worksheets[1].PageSetup.Orientation := 1; // Ориентация бумаги: 1=Книжная, 2=Альбомная
XL.Worksheets[1].PageSetup.PaperSize := 9; // Указать размер бумаги. 8=А3, 9=А4, 11=А5
XL.WorkBooks[1].WorkSheets[1].PageSetup.LeftMargin := 70;
XL.WorkBooks[1].WorkSheets[1].PageSetup.RightMargin := 10;
XL.WorkBooks[1].WorkSheets[1].Name := 'Расчет' ;
XL.WorkBooks[1].WorkSheets[1].PageSetup.PrintTitleRows := '$3:$3';
XL.WorkBooks[1].WorkSheets[1].PageSetup.PrintTitleColumns := '$A:$A';
XL.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 9;
XL.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 25;
XL.WorkBooks[1].WorkSheets[1].Columns[3].ColumnWidth := 4;
XL.WorkBooks[1].WorkSheets[1].Columns[4].ColumnWidth := 7;
XL.WorkBooks[1].WorkSheets[1].Columns[5].ColumnWidth := 7;
XL.WorkBooks[1].WorkSheets[1].Columns[6].ColumnWidth := 7;
// XL.WorkBooks[1].WorkSheets[1].Columns[7].ColumnWidth := 6;
XL.WorkBooks[1].WorkSheets[1].Rows[2].Font.Bold := True;
// XL.WorkBooks[1].WorkSheets[1].Rows[2].Font.Bold := True;
XL.WorkBooks[1].WorkSheets[1].Rows[2].Font.Size := 14;
XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Color := clBlack;
XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Size := 13;
XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Name := 'Monotype Corsiva';
XL.WorkBooks[1].WorkSheets[1].Rows[6].Font.Underline := True;
XL.WorkBooks[1].WorkSheets[1].Rows[6].Font.Color := clBlack;
XL.WorkBooks[1].WorkSheets[1].Rows[6].Font.Size := 8;
XL.WorkBooks[1].WorkSheets[1].Rows[6].Font.Name := 'Times New Roman';
XL.WorkBooks[1].WorkSheets[1].Cells[1, 1] := 'Расчет '+ Months[MonthOf(Now)]+' '+IntToStr(YearOf(Now))+' года';
XL.WorkBooks[1].WorkSheets[1].Cells[2, 1] := 'ФИО/Организация';
XL.WorkBooks[1].WorkSheets[1].Cells[3, 1] := 'Контактное Лицо';
XL.WorkBooks[1].WorkSheets[1].Cells[3, 5] := 'Телефон';
XL.WorkBooks[1].WorkSheets[1].Cells[4, 1] := 'Реквизиты';
XL.WorkBooks[1].WorkSheets[1].Cells[6, 1] := 'Дата зак.';
XL.WorkBooks[1].WorkSheets[1].Cells[6, 2] := 'Описание';
XL.WorkBooks[1].WorkSheets[1].Cells[6, 3] := 'Колич.';
XL.WorkBooks[1].WorkSheets[1].Cells[6, 4] := 'Стоим.';
XL.WorkBooks[1].WorkSheets[1].Cells[6, 5] := 'Себест.';
XL.WorkBooks[1].WorkSheets[1].Cells[6, 6] := 'Приб.';
Form26.QueryPoliMes.First;
s1:=0;
For i:=0 to Form26.QueryPoliMes.RecordCount-1 do begin
XL.WorkBooks[1].WorkSheets[1].Cells[i+2,3]:=Form26.QueryPoliMes.FieldByName('FIO').AsString;
XL.WorkBooks[1].WorkSheets[1].Cells[i+3,3]:=DataModule3.Tklient.FieldByName('КонтактноеЛицо').AsString;
XL.WorkBooks[1].WorkSheets[1].Cells[i+3,6]:=DataModule3.Tklient.FieldByName('Номертел').AsString;
XL.WorkBooks[1].WorkSheets[1].Cells[i+4,4]:=DataModule3.Tklient.FieldByName('Реквизиты').AsString;
XL.WorkBooks[1].WorkSheets[1].Cells[i+4,4].WrapText:=True;//перенос по словам
XL.WorkBooks[1].WorkSheets[1].Cells[i+7,1]:=Form26.QueryPoliMes.FieldByName('Data').AsString;
XL.WorkBooks[1].WorkSheets[1].Cells[i+7,2]:=Form26.QueryPoliMes.FieldByName('Описание').AsString;
XL.WorkBooks[1].WorkSheets[1].Cells[i+7,2].WrapText:=True;//перенос по словам
XL.WorkBooks[1].WorkSheets[1].Cells[i+7,3]:=Form26.QueryPoliMes.FieldByName('КолВо').AsString;
// XL.WorkBooks[1].WorkSheets[1].Cells[i+7,3]:=Form26.QueryPoliMes.FieldByName('КолВо').AsInteger;
XL.WorkBooks[1].WorkSheets[1].Cells[i+7,4]:=Form26.QueryPoliMes.FieldByName('Стоимость').AsCurrency;
XL.WorkBooks[1].WorkSheets[1].Cells[i+7,5]:=Form26.QueryPoliMes.FieldByName('Себестоимость').AsCurrency;
XL.WorkBooks[1].WorkSheets[1].Cells[i+7,6]:=Form26.QueryPoliMes.FieldByName('Прибыль').AsCurrency;
end;
except
end;
end;
end;Последний раз редактировалось Admin, 14.03.2018 в 21:49. |
|
#3
|
||||
|
||||
|
Оффтоп:
Цитата:
Потеме: Видимо в таком куске ответ Код:
...
if Application.MessageBox('Вы уверены?'+#13+'Сделать расчет для Бухгалтера?',
'Расчет Полиграфия',MB_OKCANCEL)=1 then
Close;
... |
|
#4
|
||||
|
||||
|
Хочу еще добавить, что Excel лучше всего показывать (XL.Visible := true) после того, как в него будут переданы все данные. Это позволит увеличить быстродействие.
P.S.: если у Вас все данные хранятся в базе данных, то разумнее всего, было бы научиться работать с конструкторами отчетов (FastReport, коим пользуюсь я сам, QuickReport). Последний раз редактировалось Kailon, 16.03.2018 в 01:30. |