![]() |
|
|
Регистрация | << Правила форума >> | 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. |