Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Потоки [D6]


Страницы:   1 2

evgenij_ ©   (2006-08-10 13:58:00) 

Помогите плиз !
Такая проблемка :
Работаю с ОЛЕ => Excel := CreateOleObject('Excel.Application'); и т.д.
все хорошо, но во время работы эхеля :) моя прога типа висит.
Шо рабить? поток или как по другому? Может кто знает где можна почитать хорошую хелпу по потокам.
сенькс.


Сергей М.   (2006-08-11 10:04:00) [1]


> Усли убрать Sheet.PrintPreview


Дай догадаюсь: при этом принтер по умолчанию - сетевой ?)


evvcom   (2006-08-11 08:55:00) [2]

И все же задумайся над:

> [11] Сергей М. ©   (10.08.06 16:12)
> Ужас !!
> Грабли на граблях)
> Фтопку такой код)

и

> [15] evvcom ©   (10.08.06 16:50)

потому как, если в DataSet у тебя будет не 3, а несколько тысяч строк, то вернешься опять к сабжевому вопросу.


evgenij_   (2006-08-10 17:30:00) [3]

Да. Я уже вроде нашел.Усли убрать Sheet.PrintPreview; то нормалёк-зничит
PrintPreview хавает..


evvcom   (2006-08-10 17:25:00) [4]

> [19] evgenij_   (10.08.06 17:19)

Какое управление передает? По твоему коду до конца метода шагает? Если всего 3 строки, то проверить это несложно.


evgenij_   (2006-08-10 17:19:00) [5]


> А отладчик чего кажет?

он нормально передает управление ехелю


evvcom   (2006-08-10 17:08:00) [6]

> [17] evgenij_   (10.08.06 17:06)

А отладчик чего кажет?
Похоже последний пост сегодня, пора домой.


evgenij_   (2006-08-10 17:06:00) [7]

так виснет уже когда отчет сформировался-там три строки в базе ёпрст и висит пока ехель не закрою- при чем тут 10 000 строк, ручками...


evvcom   (2006-08-10 16:52:00) [8]

> [14] evgenij_   (10.08.06 16:43)
> да не таскается блин

Значит не во все циклы вставил.


evvcom   (2006-08-10 16:50:00) [9]

> [10] evgenij_   (10.08.06 16:03)

И попробуй еще так: открываешь свой "ехель" через проводник, без своего приложения, и поле ну пусть в 10 столбцов и 10 000 строк по одной ячейке выделяешь и производишь форматирование. Всё руками! А потом еще и значения какие-нибудь вколоти таким же образом. А мы подождем... Годик, другой...

Попробовал, нет? Хотя бы пару строк? Как ты думаешь, твоей проге намного легче?


evgenij_   (2006-08-10 16:43:00) [10]

да не таскается блин


Сергей М.   (2006-08-10 16:29:00) [11]

Ой врешь)
Теперь ты можешь как минимум потаскать мышом свою форму по столу.


evgenij_   (2006-08-10 16:18:00) [12]


> Application.Processmessages - удивись изменениям в интерфейсе)

чето воз и ныне там


Сергей М.   (2006-08-10 16:12:00) [13]

Ужас !!
Грабли на граблях)
Фтопку такой код)

ну да ладно ... работает и фиг с ним) ...

В тела всех фигурирующих в коде циклов вставь Application.Processmessages - удивись изменениям в интерфейсе)


evgenij_   (2006-08-10 16:03:00) [14]

Гдето так

 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 14:50:00) [15]

Показывай процедуру формирования отчета ..


evgenij_   (2006-08-10 14:46:00) [16]

Форма из которой по пресу на бутон рисуется отчет в ехеле после нажатия на этот бутон принимает вид покойника- полей не видно,бутонов не видно на евенты не реагирует. Выхожу из ехеля- все ок.Вопрос тот же- шо рабить?


Сергей М.   (2006-08-10 14:42:00) [17]

Может тебе и Ехел на самом деле не нужен, может и потоки не нужны вовсе - может все гораздо проще и изящней можно реализовать) .. Потому и вопросы к тебе) .. Вот когда будут подробные и внятные ответы на них - тогда и "мош")


Сергей М.   (2006-08-10 14:39:00) [18]

Пока не объяснишь более-менее подробно свою задачу в целом - "не мош", я не телепат.


evgenij_   (2006-08-10 14:37:00) [19]


> Это все ?! Это вся работа Ехеля по-твоему ?! )

Помочь чем-то мош али нет?


Сергей М.   (2006-08-10 14:15:00) [20]


> evgenij_   (10.08.06 14:07) [3]


Это все ?! Это вся работа Ехеля по-твоему ?! )


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо