Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1154881418
Pazitron_Brain
2006-08-06 20:23
2006.09.03
Как определить положение абонента


6-1145357682
валет
2006-04-18 14:54
2006.09.03
комп выбрасывает из сети


2-1155311676
ArtemESC
2006-08-11 19:54
2006.09.03
Хочу написать компонент...


15-1154502103
Суслик
2006-08-02 11:01
2006.09.03
Удобный клиент для новостных групп (ищу)


2-1155529937
Yel
2006-08-14 08:32
2006.09.03
Создать новые объекты в рантайме





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский