Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
ВнизПотоки Найти похожие ветки
← →
evgenij_ (2006-08-10 13:58) [0]Помогите плиз !
Такая проблемка :
Работаю с ОЛЕ => Excel := CreateOleObject("Excel.Application"); и т.д.
все хорошо, но во время работы эхеля :) моя прога типа висит.
Шо рабить? поток или как по другому? Может кто знает где можна почитать хорошую хелпу по потокам.
сенькс.
← →
Сергей М. © (2006-08-10 14:01) [1]
> во время работы эхеля
Надо понимать, "работа эхеля" - это не иначе как CreateOleObject() ?
← →
Kolan © (2006-08-10 14:02) [2]
> Может кто знает где можна почитать хорошую хелпу по потокам.
>
> сенькс.
Текстра и Пачеко
http://www.podgoretsky.com/ddp.html
← →
evgenij_ (2006-08-10 14:07) [3]
> Надо понимать, "работа эхеля" - это не иначе как CreateOleObject()
> ?
неа Excel.Visible := True;
← →
Сергей М. © (2006-08-10 14:15) [4]
> evgenij_ (10.08.06 14:07) [3]
Это все ?! Это вся работа Ехеля по-твоему ?! )
← →
evgenij_ (2006-08-10 14:37) [5]
> Это все ?! Это вся работа Ехеля по-твоему ?! )
Помочь чем-то мош али нет?
← →
Сергей М. © (2006-08-10 14:39) [6]Пока не объяснишь более-менее подробно свою задачу в целом - "не мош", я не телепат.
← →
Сергей М. © (2006-08-10 14:42) [7]Может тебе и Ехел на самом деле не нужен, может и потоки не нужны вовсе - может все гораздо проще и изящней можно реализовать) .. Потому и вопросы к тебе) .. Вот когда будут подробные и внятные ответы на них - тогда и "мош")
← →
evgenij_ (2006-08-10 14:46) [8]Форма из которой по пресу на бутон рисуется отчет в ехеле после нажатия на этот бутон принимает вид покойника- полей не видно,бутонов не видно на евенты не реагирует. Выхожу из ехеля- все ок.Вопрос тот же- шо рабить?
← →
Сергей М. © (2006-08-10 14:50) [9]Показывай процедуру формирования отчета ..
← →
evgenij_ (2006-08-10 16:03) [10]Гдето так
Excel := CreateOleObject("Excel.Application");
try
Excel.SheetsInNewWorkbook := 1;
WorkBook :=Excel.WorkBooks.Open(Path+"Templates\nakl.xlt");
Sheet := WorkBook.WorkSheets[1];
Sheet.Cells.VerticalAlignment := $FFFFEFF4;// xlCenter
with tmp do
try
DisableControls;
Row := 10;
Col := 2;
for i := 0 to DBGrid1.Columns.Count-1 do
if DBGrid1.Columns[i].Visible then
begin if ((i=3)or(i=4)) then Continue;
Sheet.Cells[Row, Col] := DBGrid1.Columns[i].Title.Caption;
Sheet.Cells[Row, Col].Borders[L_Top].LineStyle:= 1;
Sheet.Cells[Row, Col].Borders[L_Top].Weight := 3;
Sheet.Cells[Row, Col].Borders[L_Bot].LineStyle:= 1;
Sheet.Cells[Row, Col].Borders[L_Bot].Weight := 3;
Sheet.Cells[Row, Col].Borders[L_Left].LineStyle:= 1;
Sheet.Cells[Row, Col].Borders[L_Left].Weight := 3;
Sheet.Cells[Row, Col].Borders[L_Right].LineStyle:= 1;
Sheet.Cells[Row, Col].Borders[L_Right].Weight := 3;
Inc(Col);
end;
Inc(Row);
Last;
while NOT BOF do
begin
Col := 2;
for i := 0 to DBGrid1.Columns.Count-1 do
if DBGrid1.Columns[i].Visible then
begin
if ((i=3)or(i=4)) then Continue;
v := DBGrid1.Columns[i].Field.Value;// Fields[i].Value;
Sheet.Cells[Row, Col] := VarToStr(v);
//Sheet.Cells[Row, Col].Borders[L_Top].LineStyle:= 1;
//Sheet.Cells[Row, Col].Borders[L_Top].Weight := 2;
Sheet.Cells[Row, Col].Borders[L_Bot].LineStyle:= 1;
Sheet.Cells[Row, Col].Borders[L_Bot].Weight := 2;
Sheet.Cells[Row, Col].Borders[L_Left].LineStyle:= 1;
Sheet.Cells[Row, Col].Borders[L_Left].Weight := 2;
Sheet.Cells[Row, Col].Borders[L_Right].LineStyle:= 1;
Sheet.Cells[Row, Col].Borders[L_Right].Weight := 2;
Inc(Col);
end;
Prior;
Sheet.Rows[11].Copy;
if not bof then Sheet.Rows[11].Insert;
Sheet.Rows[11].PasteSpecial(-4122,-4142,False,False);
end; //while
finally
EnableControls;
end; //try 1
finally
Sheet.Cells.Columns.AutoFit;
// Sheet.Protect;
Excel.Visible := True;
if FileExists(Path+"Reports\nakl.xls") then DeleteFile(Path+"Reports\nakl.xls");
Excel.ActiveWorkbook.SaveAs(Path+"Reports\nakl.xls",43,"","",false,false);
Sheet.PrintPreview;
Excel.ActiveWorkbook.Close
end;//try 2
end;
← →
Сергей М. © (2006-08-10 16:12) [11]Ужас !!
Грабли на граблях)
Фтопку такой код)
ну да ладно ... работает и фиг с ним) ...
В тела всех фигурирующих в коде циклов вставь Application.Processmessages - удивись изменениям в интерфейсе)
← →
evgenij_ (2006-08-10 16:18) [12]
> Application.Processmessages - удивись изменениям в интерфейсе)
чето воз и ныне там
← →
Сергей М. © (2006-08-10 16:29) [13]Ой врешь)
Теперь ты можешь как минимум потаскать мышом свою форму по столу.
← →
evgenij_ (2006-08-10 16:43) [14]да не таскается блин
← →
evvcom © (2006-08-10 16:50) [15]> [10] evgenij_ (10.08.06 16:03)
И попробуй еще так: открываешь свой "ехель" через проводник, без своего приложения, и поле ну пусть в 10 столбцов и 10 000 строк по одной ячейке выделяешь и производишь форматирование. Всё руками! А потом еще и значения какие-нибудь вколоти таким же образом. А мы подождем... Годик, другой...
Попробовал, нет? Хотя бы пару строк? Как ты думаешь, твоей проге намного легче?
← →
evvcom © (2006-08-10 16:52) [16]> [14] evgenij_ (10.08.06 16:43)
> да не таскается блин
Значит не во все циклы вставил.
← →
evgenij_ (2006-08-10 17:06) [17]так виснет уже когда отчет сформировался-там три строки в базе ёпрст и висит пока ехель не закрою- при чем тут 10 000 строк, ручками...
← →
evvcom © (2006-08-10 17:08) [18]> [17] evgenij_ (10.08.06 17:06)
А отладчик чего кажет?
Похоже последний пост сегодня, пора домой.
← →
evgenij_ (2006-08-10 17:19) [19]
> А отладчик чего кажет?
он нормально передает управление ехелю
← →
evvcom © (2006-08-10 17:25) [20]> [19] evgenij_ (10.08.06 17:19)
Какое управление передает? По твоему коду до конца метода шагает? Если всего 3 строки, то проверить это несложно.
← →
evgenij_ (2006-08-10 17:30) [21]Да. Я уже вроде нашел.Усли убрать Sheet.PrintPreview; то нормалёк-зничит
PrintPreview хавает..
← →
evvcom © (2006-08-11 08:55) [22]И все же задумайся над:
> [11] Сергей М. © (10.08.06 16:12)
> Ужас !!
> Грабли на граблях)
> Фтопку такой код)
и
> [15] evvcom © (10.08.06 16:50)
потому как, если в DataSet у тебя будет не 3, а несколько тысяч строк, то вернешься опять к сабжевому вопросу.
← →
Сергей М. © (2006-08-11 10:04) [23]
> Усли убрать Sheet.PrintPreview
Дай догадаюсь: при этом принтер по умолчанию - сетевой ?)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.036 c