Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 12.08.03 09:04

Кое-что из нашей кладовки   |x|
  • Delphi World ___Nikolay delphiworld@mail.ru   (12.08.03 08:08)
    Delphi World - самый большой архив статей по Delphi ---== 3000 РАБОТ ==---
    »»» Скачать: исходные тексты посмотреть скриншот
  • TEdit only Float or Number Dick Gonsales as400gsm@yandex.ru   (11.08.03 05:34)
    Обработчик KeyPress for TEdit чтобы вводить только цифры, знак "-", разделитель дробной части, чтобы работал BackSpase и клавиша Del(.) на NumLock всегда соответствовала разделителю дробной части установленной в системе. Соответственно нельзя ввести сивол "-" или разделитель больше чем один раз, символ минус всегда ставиться в начало строки с сохранением курсора на месте ввода. Вообщем 15 строк кода, если не считать комментарии... Удобно если надо вводить в TEdit а потом из этого собирать текст SQL запроса например... Можно использовать один обработчик на все TEdit на форме...
    »»» Скачать: исходные тексты
  • CoolTray Proger_XP bigsoft@front.ru   (11.08.03 10:38)
    Этот компонент предназначен для помещения проги в трей и все что с этим связано
    »»» Скачать: исходные тексты (14кб)
  • MP3 Parser Viktor Kushnir ViktorSupport@Mail.ru   (11.08.03 09:23)
    Программа для пофреймовой резки MP3 без потери качества.
    »»» Скачать: исходные тексты (11кб) демонстрационный EXE файл (153кб)
  • Delphi World ___Nikolay delphiworld@mail.ru   (12.08.03 08:08)
    Delphi World - самый большой архив статей по Delphi ---== 3000 РАБОТ ==---
    »»» Скачать: исходные тексты посмотреть скриншот
  • Delphi World ___Nikolay delphiworld@mail.ru   (12.08.03 08:09)
    Delphi World - самый большой архив статей по Delphi ---== 3000 РАБОТ ==---
    »»» Скачать: исходные тексты посмотреть скриншот
Лучшее из нашего FAQ   |x|
Создание отчета в MS Word
(Пример для Delphi 1.0 поскольку в Delphi 2-3 лучше
использовать:
var MsWord : variant;
MsWord := CreateOleObject('Word.Basic'); Для Delphi 3, пример ниже)

Создавать отчет в программе Word удобно если отчет имеет сложную структуру (тогда его быстрее создать в Word, чем в Qreport от Delphi, кроме того, этот QReport имеет "глюки"), либо, если после создания отчета его нужно будет изменять. Итак, первым делом в Word создается шаблон будущего отчета, это самый обыкновенный не заполненный отчет. А в места куда будет записываться информация нужно поставить метки. Например (для наглядности метки показаны зеленым цветом, реально они конечно не видны):

Накладная ? Num
























?

Пос! тавщик

Наименование
товара

Код товара

Кол-во

Цена

Сумма

Table            




Сдал_______________________ Принял________________________
М.П. М.П.





Далее в форму, откуда будут выводиться данные, вставляете компоненту DdeClientConv из палитры System. Назовем ее DDE1. Эта компонента позволяет передавать информацию между программами методом DDE. Свойства:
ConnectMode : ddeManual - связь устанавливаем вручную
DdeService : (winword) - с кем устанавливается связь
ServiceApplication : C:\MSOffice\Winword\WINWORD.EXE - полный путь доступа к программе. (Вот здесь можно наступить на грабли. Ведь Word может лежать в любой папке! Поэтому путь доступа к нему лучше взять из реестра, а еще лучше использовать OLE см.начало раздела)

Теперь пишем процедуру передачи данных:





{ Печать накладной }
procedure Form1.PrintN;
Var
S : string;
i : integer;
Sum : double; {итоговая сумма, кстати,совет: не пользуйтесь типом real!}
Tv, Ss : PChar;
beg! in
S:=GetCurrentDir+'\Накладная.doc'; { имя открываемого документа }
DDE1.OpenLink; { устанавливаем связь }
Tv:=StrAlloc(20000); Ss:=StrAlloc(300); { выделяем память }
{ даем команду открыть документ и установить курсор в начало документа }
StrPCopy(Tv, '[FileOpen "'+S+'"][StartOfDocument]');
S:=NNakl.Text; { номер накладной }
{ записываем в позицию Num номер накладной }
StrCat(Tv, StrPCopy(SS, '[EditBookmark .Name = "Num", .Goto][Insert "'+S+'"]'+
'[EditBookmark .Name = "Table", .Goto]'); { и переходим к заполнению таблицы }
{ передаем данные в Word }
if not DDE1.ExecuteMacro(Tv, false) then
begin { сообщаем об ошибке и выход }
MessageDlg('Ошибка связи с Microsoft Word.', mtError, [mbOk], 0);
StrDispose(Tv); StrDispose(Ss);
exit;
end;

{ Заполняем таблицу }
Sum:=0; Nn:=0;
for i:=0 to TCount do!
begin
inc(Nn);
{ предполагаем, что данные находятся в массиве T }
StrPCopy(Tv, '[Insert "'+IntToStr(Nn)+'"][NextCell][Insert "'+T[i].Company+'"]'+
'[NextCell][Insert "'+T.TName+'"][NextCell][Insert "'+T.Cod+'"][NextCell]'+
'[Insert "'+IntToStr(T.Count)+'"][NextCell]'+
'[Insert "'+FloatToStr(T.Cena)+'"][NextCell]'+
'[Insert "'+FloatToStr(T.Count*T.Cena)*+'"][NextCell]'));
inc(Nn);
Sum:=Sum+(T.Count*T.Cena); { итоговая сумма }
if not DDE1.ExecuteMacro(Tv, false)
then begin
MessageDlg('Ошибка связи с Microsoft Word.', mtError, [mbOk], 0);
exit;
end;
end;

{ Записываем итоговую сумму }
StrPCopy(Tv,
'[NextCell][Insert "Итого"][NextCell][NextCell][NextCell]'+
'[Insert "'+FloatToStr(Sum)+'"]'));
if not DDE1.ExecuteMacro(Tv, false) then MessageDlg('Ошибка связи с Microsoft Word.', mtError, [mbOk], 0)
else MessageDlg('Акт удачно создан. Перейдите в Microsoft Word.',
mtInformation, [mbOk], 0);

StrDispose(Tv); StrDispose(Ss);
end;





Для Delphi 2 и выше
=== Cut Пример by Sergey Arkhipov 2:5054/88.10 ===

Пример проверен только на русском Word 7.0! Может, поможет...

unit InWord;
interface
uses
... ComCtrls; // Delphi3
... OLEAuto; // Delphi2
[skip]
procedure TPrintForm.MPrintClick(Sender: TObject);
var W: Variant;
S: String;
begin
S:=IntToStr(Num);
try // А вдруг где ошибка :)
W:=CreateOleObject('Word.Basic');
// Создаем документ по шаблону MyWordDot
// с указанием пути если он не в папке шаблонов Word
W.FileNew(Template:='C:\MyPath\DB\MyWordDot',NewTemplate:=0);
// Отключение ! фоновой печати (на LJ5L без этого был пустой лист)
W.ToolsOptionsPrint(Background:=0);

// Переходим к закладке Word'a 'Num'
W.EditGoto('Num'); W.Insert(S);
//Сохранение
W.FileSaveAs('C:\MayPath\Reports\MyReport')
W.FilePrint(NumCopies:='2'); // Печать 2-х копий
finally
W.ToolsOptionsPrint(Background:=1);
W:=UnAssigned;
end;
end;
{.....}

=== Cut Конец примера ===



Спасибо Сергею :) И еще, как определить установлен ли на компьютере Word, запустить его и загрузить в него текст из программы?



Пример:




var
MsWord: Variant;
...
try
// Если Word уже запущен
MsWord := GetActiveOleObject('Word.Application');
// Взять ссылку на запущенный OLE объект
except
try
// Word не запущен, запустить
MsWord := CreateOleObject('Word.Application')! ;
// Создать ссылку на зарегистрированный OLE объект
MsWord.Visible := True;
except
ShowMessage('Не могу запустить Microsoft Word');
Exit;
end;
end;
end;
...
MSWord.Documents.Add; // Создать новый документ
MsWord.Selection.Font.Bold := True; // Установить жирный шрифт
MsWord.Selection.Font.Size := 12; // установить 12 кегль
MsWord.Selection.TypeText('Текст');



По командам OLE Automation сервера см. help по
Microsoft Word Visual Basic.

Ну вот и все.


»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
У нас большой выбор статей   |x|
Как добиться успеха в безнадежных проектах
Многим руководителям ИТ-проектов знакомы ситуации, когда прекрасно спланированный процесс не укладывается во временные рамки. Несмотря на то что сроки были определены с запасом, одни модули «забирают» все доступные ресурсы, другие сразу после появления на свет удаляются за ненадобностью, а постоянные изменения требований окончательно разрушают проект.
Новинки книжного рынка   |x|
Delphi 6/7. Базы данных и приложения. Лекции и упражнения
В книге предпринята попытка дать читателю целостное представление о процессе разработки программного обеспечения для реляционных баз данных.

В рамках поставленной цели авторами решены следующие задачи: рассмотрены основы языка Object Pascal на примере создания консольных приложений; рассмотрены объектно-ориентированные возможности языка Object Pascal и технология визуального программирования; описаны основные принципы работы с SQL-сервером InterBase; изложена методика взаимодействия программ, созданных в среде Delphi, с базами данных различного типа, в частности, SQL-сервером InterBase; рассмотрены основы проектирования баз данных с использованием программы ERwin; описана методика разработки клиентского приложения для доступа к базам данных с использованием библиотек динамической загрузки, а также популярных программ World и Excel для создания отчетов. На примере БД `Учебные компьютерные курсы` рассмотрен процесс разработки программного обеспечен! ия, начиная с вопросов проектирования и заканчивая подготовкой отчетов.

Авторы рассмотрели примеры, протестированные как в шестой, так и в седьмой версиях Delphi. Поэтому книгу можно использовать в качестве основы курсов лекций, в которых изучаются соответствующие программные продукты.

Книга предназначена для старшеклассников, студентов, аспирантов, преподавателей и пользователей ПК, интересующихся программированием.

Автор: С. П. Кандзюба, В. Н. Громов
Другие сайты о DELPHI   |x|
Дельфи Топ20
"Дельфи Топ20" - это рейтинг небольших русских сайтов о Дельфи. С помощью него Вы сможете найти много интересной информации о Delphi!

» Оценка сайта: 2
Опрос населения :)
Что мешает плохому танцору?
»»» Эти штуки... ;)
»»» Танцовщица
»»» Крылья
»»» Оппозиция
»»» Что и хорошему
»»» Ничего мне не мешает!
Для души

Хокку дня
Старый пруд.
Прыгнула в воду лягушка.
Всплеск в тишине.

Афоризмы
Множество выходов уже лабиринт.

Фраза дня
- Доктор, я жить буду? - А смысл?

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В городе Провиденсе, Род Айланд (США), в магазинах запрещено по воскресеньям продавать зубную щетку и пасту одному и тому же покупателю.
В Аризоне (США) под угрозой штрафа запрещено класть спать осла в ванной.

И на закуску коротенький анекдот
Учиться, учиться и ещё раз учиться - потому что работы вы всё равно не найдёте.

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=77773


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (delphi@mastak.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное