Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.03;
Скачать: CL | DM;

Вниз

Потоки   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.071 c
1-1153488370
koven
2006-07-21 17:26
2006.09.03
Извлечение ссылок из интернет страницы


2-1155641597
Zilog
2006-08-15 15:33
2006.09.03
Как в ListBox программно поменять цвет выделенной строчки?


2-1155225004
Fu
2006-08-10 19:50
2006.09.03
Функция


2-1155287461
Demand
2006-08-11 13:11
2006.09.03
строка заголовка формы.


2-1155027490
ArtemESC
2006-08-08 12:58
2006.09.03
TFileStream...