![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Зыкрыть Excel можно еще так, я так делаю при закрытии формы(окна) инморта
на всякий случай дам функцию DelProb
Это сообщение отредактировал(а) dsergey - 28.12.2004, 11:04 |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Еще несколько примеров, используя Ole
Excel:Variant - глобальная переменная
|
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Всем спасибо!
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
я не закончил
удаляем лишние столбцы (по умолчанию со сдвигом влево)
если будут какие-нибудь вопросы или поправки, с удовольствием рассмотрю, исправлю Это сообщение отредактировал(а) dsergey - 28.12.2004, 11:03 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
запустить внешнее приложение и подождать, пока оно отработает
такая функция тоже будет полезна
|
|||
|
||||
Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
dsergey, http://vingrad.ru/VF-DLP-000765
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
вопросов больше не имею
![]() |
|||
|
||||
tcomponent |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 4.1.2005 Где: таганрог Репутация: нет Всего: 1 |
в разделе мультимедии -> мегаплеер, валяются примеры id3(1.0-2.x)редкая штука
надо вклычит в базу |
|||
|
||||
Slawanix |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Vit и всем привет!
![]() Ситемные функции и WinApi->Процессы, потоки...->Как увеличить процессорное время, выделяемое программе и тема оттуда же но Как поменять приоритет моего приложения. Поехали дальше. Нашел несколько темок по потокам(API & Delphi) Все взято с проекта DelphiWorld. №1 Как при создании объекта TThread передать ему некоторое значение
№2 Помещение формы в поток
№3 Несколько функций для TStream
Самих линков дать не могу, т.к. давно эту инфу отрыл, беру уже с винта ![]() Добавлено @ 23:02 Да, кстати, хочу заметить: это я не тестировал. Добавлено @ 23:08 Тоже с Delphi World Поток с доступом к глобальной переменной основной программы
Это сообщение отредактировал(а) Slawanix - 18.1.2005, 23:04 --------------------
моск кипит |
||||||||
|
|||||||||
Slawanix |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Имеется ввиду DRKB ![]() --------------------
моск кипит |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Продолжаю тему об MS Excel.
------------------------------------------------------- Относительно LOCALE_USER_DEFAULT Теоретически, в MSDN написано: "Indicates that the parameter is a locale ID (LCID)". Одни (Чарльз Калверт) предлагают в качестве его использовать 0, как идентификатор языка по умолчанию, другие - результат функции GetUserDefaultLCID. В некоторых случаях, чаще в связке Windows 2000 + Excel 2000, оба решения не проходят. Причем, выдается сообщение о попытке "использовать библиотеку старого формата..." Поэтому, рекомендуем в качестве lcid использовать значение константы LOCALE_USER_DEFAULT. --------------------------------------------------------------------------------- Относительно открытия существующих рабочих книг Вот как описан метод Open в импортированной библиотеке типов: function Open(const Filename: WideString; UpdateLinks: OleVariant; ReadOnly: OleVariant; Format: OleVariant; Password: OleVariant; WriteResPassword: OleVariant; IgnoreReadOnlyRecommended: OleVariant; Origin: OleVariant; Delimiter: OleVariant; Editable: OleVariant; Notify: OleVariant; Converter: OleVariant; AddToMru: OleVariant; lcid: Integer): Workbook; safecall; Что вам из всего этого может понадобиться: · FileName Имя открываемого файла, желательно с полным путем, иначе Excel будет искать этот файл в каталоге по умолчанию; · AddToMru True - если необходимо запомнить файл в списке последних открытых файлов; · IgnoreReadOnlyRecommended Если файл рекомендован только для чтения, то при открытии Excel выдает соответствующее предупреждение. Чтобы его игнорировать, передайте в качестве данного параметра True. Используя позднее связывание При позднем связывании не нужно указывать все дополнительные параметры или LCID, можно просто написать вот так: var Workbook: OLEVariant; ... Workbook := Excel.WorkBooks.Open('C:\Test.xls'); Примечание: Если вы хотите получше узнать метод Open, например, как с его помощью открывать файлы текстовых форматов с разделителями, воспользуйтесь "пишущим" плеером VBA. Запишите макросы, а затем поправьте их по необходимости. Создание новой книги Используя раннее связывание var IWorkbook: Excel8_TLB._Workbook; ... IWorkbook := IExcel.Workbooks.Add(EmptyParam, xlLCID); Передача в качестве первого параметра EmptyParam означает, что будет создана новая книга с количеством пустых листов, выставленным по умолчанию. Если в первом параметре вы передадите имя файла (с полным путем, иначе поиск осуществляется в каталоге по умолчанию), этот файл будет использован как шаблон для новой книги. Вы можете также передать одну из следующих констант: xlWBATChart, xlWBATExcel4IntlMacroSheet, xlWBATExcel4MacroSheet, или xlWBATWorksheet. В результате будет создана новая книга с единственным листом указанного типа. Внимание - важно! Excel не может держать открытыми несколько книг с одинаковыми названиями, даже если они лежат в разных каталогах, поэтому при создании файла по шаблону добавляет к имени файла новой книги номер (шаблон "test.xls" - новый файл "test1.xls"). ---------------------------------- Закрытие книги Используя раннее связывание var SaveChanges: boolean; ... SaveChanges := True; IWorkbook.Close(SaveChanges, EmptyParam, EmptyParam, xlLCID); Если в качестве параметра SaveChanges вы передадите EmptyParam, Excel задаст вопрос, сохранять ли рабочую книгу. Второй параметр позволяет вам определить имя файла, а третий указывает, нужно ли отправлять книгу следующему получателю. Используя позднее связывание При позднем связывании нет необходимости указывать дополнительные параметры, поэтому вы можете просто написать: Workbook.Close(SaveChanges := True); или Workbook.Close; ------------------------------------------------------------- Как передать абсолютный адрес ячейки? Нужно использовать символ $ - Лист1!$A$1:$D$3' ------------------------------------------------------------- Так можно добавить новый модуль: var IModule: VBIDE8_TLB.VBComponent; //с эти нужно поэксперементировать ... IModule := IWorkbook.VBProject.VBComponents.Add( TOLEEnum(VBIDE8_TLB.vbext_ct_StdModule) ); IModule.Name :='MyModule1'; ,поместить в него новую процедуру VBA: IModule.CodeModule.AddFromString('PUBLIC SUB MySub1()'#13'Msgbox "Hello, World!"'#13'End sub'#13); и запустить эту процедуру OLEVariant(Excel).Run('MyModule1.MySub1'); ----------------------------------------------------------- Различные способы обращения к ячейкам Var Value:Variant; ... try //различные способы Value := ISheet.Cells.Item[2, 1].Value; Value := ISheet.Range['A2', EmptyParam].Value; Value := ISheet.Range['TestCell', EmptyParam].Value; Value := IWorkbook.Names.Item('TestCell', EmptyParam, EmptyParam).RefersToRange.Value; finally ISheet := nil; end; ----------------------------------------------------------- Копирование данных в буфер обмена var ISheetSrc, ISheetDst: Worksheet;//в разных версиях IRangeSrc, IRangeDst: Range; //могут объявляться по разному ... IRangeSrc.Copy(IRangeDst); Метод Copy интерфейса Range принимает в качестве параметра любой другой Range, совпадение размеров источника и получателя необязательно. При копировании области убедитесь, что не редактируете ячейку, иначе возникнет исключение "Call was rejected by callee". Использование метода Copy без указания параметра destination скопирует ячейки в буфер обмена. Это сообщение отредактировал(а) dsergey - 19.1.2005, 11:22 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |