Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2010, 08:03   #1
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
По умолчанию Выбор сохранения

Новая проблема после отмены сохранения я заметил что в диспетчере задач остаются процессы EXCEL.EXE. Они создаются при нажатии кнопки при сохранении все нормально а вот при от мене остаются. Что делать?
Цитата:
unit Unit5;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ComObj, Buttons, OleServer, ExcelXP, DateUtils,
ComCtrls, ExtCtrls, Gauges, FileCtrl;

type
TForm5 = class(TForm)
StringGrid1: TStringGrid;
BitBtn1: TBitBtn;
ea: TExcelApplication;
Gauge1: TGauge;
SaveDialog1: TSaveDialog;
Splitter1: TSplitter;
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);




private
{ Private declarations }
public
{ Public declarations }
end;

var
Form5: TForm5;
dir_:string;
implementation

uses Unit3, Unit1, Unit2;

{$R *.dfm}
procedure TForm5.BitBtn1Click(Sender: TObject);
var
Excel, WorkBook, Sheet:variant;
i, j: integer;
GridPrevFile,extens: string;

begin
Excel:=CreateOleObject('Excel.Appli cation');
Excel.DisplayAlerts:=False;
Excel.Visible:= False;
Workbook:=Excel.
Workbooks.Add;
if (SaveDialog1.Execute) then
Workbook.SaveAs(Filename:=SaveDialo g1.FileName)
else abort;

Sheet:= Workbook.ActiveSheet;
Gauge1.MaxValue:=100;
Gauge1.Progress:=0;
for i:= 0 to StringGrid1.RowCount - 1 do // ñòðî÷êó íîìåð 0 íå ýêñïîðòèðóåì - ýòî çàãëàâèå ñòîëáöîâ

// Åñëè íóæíî ýêñïîðòèðîâàòü ñ çàãëàâèåì ñòîëáöîâ òî ïèøåì: for i:= 0 to StringGrid1.RowCount - 1 do

begin
for j:= 0 to StringGrid1.ColCount - 1 do
Sheet.Cells[i+1, j+1]:= StringGrid1.Cells[j, i];
// Åñëè íóæíî ýêñïîðòèðîâàòü âìåñòå ñ çàãëàâèåì ñòîëáöîâ òî ïèøåì: Sheet.Cells[i+1, j+1]:= StringGrid1.Cells[j, i];

Excel.WorkBooks[1].WorkSheets[1].Name := 'Ëèñò1';
Excel.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 33;
Excel.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 15;
Excel.WorkBooks[1].WorkSheets[1].Columns[3].ColumnWidth := 10;
Excel.WorkBooks[1].WorkSheets[1].Columns[4].ColumnWidth := 23;
if StringGrid1.RowCount>0 then
Gauge1.Progress:=Round(((i+1)*100)/StringGrid1.RowCount);
end;

Workbook.Save;
Workbook.Close;
Excel.Quit;
Excel:= UnAssigned;
end;



procedure TForm5.FormActivate(Sender: TObject);
var i:integer;
begin

try
DM.dbs.Open;
dm.query.Open;
DM.query.First;
except
on e: exception do showmessage(e.Message);
end;
stringgrid1.Visible:=false;
i:=0;

DM.query.SQL.Text:='select (select F+'+char(39)+' '+char(39)+'+I+'+char(39)+' '+char(39)+'+O from owner where card_id=card.card_id),spiski.card_n umber,(select mobile_phone from owner where card_id=card.card_id),(select email_address from owner where card_id=card.card_id)'+
'from spiski inner join card on card.card_number=spiski.card_number where act_'+Form1.StringGrid1.cells[0,form1.StringGrid1.row]+'=1';


StringGrid1.Cells[0,0]:= 'Ô.È.Î.';
StringGrid1.Cells[1,0]:= 'Íîìåð êàðòî÷êè';
StringGrid1.Cells[2,0]:= 'Òåëåôîí';
StringGrid1.Cells[3,0]:= 'Ïî÷òà';

StringGrid1.ColWidths[0] := 220;
StringGrid1.ColWidths[1] := 100;
StringGrid1.ColWidths[2] := 70;
StringGrid1.ColWidths[3] := 130;

DM.query.Open;
DM.query.First;
while not DM.query.Eof do
begin
inc(i);
stringgrid1.Cells[0,i]:=DM.query.Fields[0].AsString;
stringgrid1.Cells[1,i]:=DM.query.Fields[1].AsString;
stringgrid1.Cells[2,i]:=DM.query.Fields[2].AsString;
stringgrid1.Cells[3,i]:=DM.query.Fields[3].AsString;



stringgrid1.RowCount:=i+1;
DM.query.Next;
end;
stringgrid1.FixedRows:=1;
stringgrid1.Visible:=true;
DM.query.Close;

end;
end.

Последний раз редактировалось slai; 19.10.2010 в 11:14.
slai вне форума Ответить с цитированием
Старый 19.10.2010, 08:16   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Код:
Workbook.SaveAs(dir_ + '\temp_' + IntToStr(DayOfTheMonth(Date)) + '.' + IntToStr(MonthOfTheYear(Date)) + '.' + IntToStr(YearOf(Date)) + '.xls');
Код:
if (SaveDialog1.Execute) then
Workbook.SaveAs(Filename:=SaveDialog1.FileName)
else
Workbook.SaveAs(Filename:=dir_ + '\temp_' + IntToStr(DayOfTheMonth(Date)) + '.' + IntToStr(MonthOfTheYear(Date)) + '.' + IntToStr(YearOf(Date)) + '.xls');
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 19.10.2010, 08:29   #3
slai
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 21
По умолчанию

Новая проблема после отмены сохранения я заметил что в диспетчере задач остаются процессы EXCEL.EXE. Они создаются при нажатии кнопки при сохранении все нормально а вот при от мене остаются. Что делать?

Последний раз редактировалось slai; 19.10.2010 в 10:59.
slai вне форума Ответить с цитированием
Старый 19.10.2010, 10:13   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
if (SaveDialog1.Execute) then
Истинная ветвь условия - в случае кнопки ОК, ложная в случае кнопки Отмена

ЗЫ Есть кнопка Правка - предназначена для изменения твоих сообщений. Не пиши несколько сообщений подряд - правь последнее. Иначе модераторы тебя не оценят и получишь красную карточку.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 19.10.2010, 10:17   #5
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от slai Посмотреть сообщение
Появился еще один вопрос. При открытие окна сохранения если нажать кнопку отмена то операция все равно выполняется это заметно по загрузки полоски Gauge. Как сделать так чтобы так не происходило?
Код:
if (SaveDialog1.Execute) then
Workbook.SaveAs(Filename:=SaveDialog1.FileName)
else abort;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отмена сохранения в SaveDialog Shouldercannon Общие вопросы Delphi 2 15.09.2010 23:28
Сохранения параметров программы Davidow Общие вопросы .NET 5 16.02.2010 16:52
Дата сохранения analyst Microsoft Office Excel 4 10.02.2010 20:10
Сохранения программы niva622 Помощь студентам 8 21.01.2007 09:10