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

RusFAQ.ru: Программирование на Delphi


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


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 215
от 13.09.2003, 20:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 918
Отправлено ответов: 1708
Активность: 186.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Apricot
Статус: Начальный
Общий рейтинг: 107.38
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.33
URL: Программирование
[Подробней >>]
Cybernetic Creature
Статус: Опытный
Общий рейтинг: 121.57
Телефон: +99412386744
[Подробней >>]
 
Marouder
Статус: Профессиональный
Общий рейтинг: 122.11
URL: Первый Хабаровский Форум
Телефон: (4212) 21-93-65
[Подробней >>]
Илья
Статус: Профессиональный
Общий рейтинг: 102.85
[Подробней >>]
ART_43
Статус: Опытный
Общий рейтинг: 122.26
URL: ART_43 Home Site
[Подробней >>]
 
Andy
Статус: Опытный
Общий рейтинг: 102.23
[Подробней >>]
URiS
Статус: Профессиональный
Общий рейтинг: 129.75
URL: Бесплатный любительский софт, игры
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.78
URL: Пристанище неодинокого программиста
[Подробней >>]
 
The propheT
Статус: Доверительный
Общий рейтинг: 119.76
[Подробней >>]
kvINT
Статус: Профессиональный
Общий рейтинг: 104.32
Телефон: (34316)2-31-45
[Подробней >>]
Vdr
Статус: Опытный
Общий рейтинг: 110.6
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 904. Как преобразовать файл .ico в .bmp? Добрый день, ув. эксперты. После ответа Marouder'а (Thanks) ошиб... (ответов: 5)
Вопрос № 905. Добрый день, у меня вопрос : 1) Нужно написать прогу для электронной бегущей строки, в инете 2 часа... (ответов: 2)
Вопрос № 906. Как называются строковые функции в SQL? Прочел сейчас в "Инф. технологиях" Петрова такое п... (ответов: 3)
Вопрос № 907. Здравствуйте эксперты. Помогите пожайлуста, не могу разобраться что за метод такой Seek????? Мне нуж... (ответов: 2)
Вопрос № 908. Здравствуйте Господа Эксперты, Хотел бы написать приложение для отправки и получения сообщений прот... (ответов: 1)
Вопрос № 909. Здравствуйте, уважаемые эксперты !!! Помогите разобраться с проблемой: в программе есть всего 3 форм... (ответов: 5)
Вопрос № 910. Здравствуйте уважаемые эксперты ! У меня такой вопрос: могу ли я при помощи VarArrayCreate создать м... (ответов: 3)
Вопрос № 911. Здравствуйте, уважаемые Эксперты. Вот какая проблема приключилась. Она не совсем по программированию... (ответов: 2)
Вопрос № 912. Добрый день! Хотелось бы управлять документами MS Office (Word, Excel, Outlook) из программы, написа... (ответов: 5)

Вопросов: 9, ответов: 28


 Вопрос № 904

Как преобразовать файл .ico в .bmp?
Добрый день, ув. эксперты.
После ответа Marouder'а (Thanks) ошибка исчезла, но еще долго пришлось повозиться (рисование картинок в StringGrid), пока опытным путем не пришел к тому, что нарисовать что-либо в ячейку StringGrid возможно лишь в обработчике OnDrawCell. Теперь проблема - лошади мои по диагонали рисуются, но размером большим, чем размер ячеек. Функция StretchDraw не помогает. Сейчас нашел утверждение, что она с иконками не работает, похоже верно. Художник из меня никакой - второй раз я эту лошадь не нарисую. Как уже нарисованную перевести в формат bmp? ImageEditor в Delphi вроде сохраняет как bmp, но ни Paint, ни ACDSee его открыть не могут - неверный формат. Открыть иконку в Paint и сохранить как bmp тоже не могу - не работает Paint с иконками. Плиз не советуйте воспользоваться фотошопом или еще чем-либо подобным - как уже написал, художник я от слова "худо" и не держу этого.



Вопрос отправлен: 08.09.2003, 20:45
Отправитель: Loko

[Следующий вопрос >>] [Список вопросов]

Отвечает Apricot

Приветствую Вас, Loko!
У типа TImage есть свойство Proportional оно устанавливает прорисовку .bmp в размеры Image. Возможно можно поступить от обратного, попробуй.

Ответ отправлен: 10.09.2003, 09:12
Отправитель: Apricot


Отвечает Bob Johnson

Добрый день, Loko!
> и не держу этого.
А photoshop и не создан для художников... Художник использует кисть и, возможно, мольберт...
В общем, если тебе нужна хоть какая-то графика, поставь либо фото (о), либо Corel Photopaint. Последний понимает формат ico и может сохранять в bmp.
Если же вообще ничего нет, то просто нажми printscreen в то время, когда на экране отображается твоя иконка в нужном виде, после чего запусти, например, MS Photo Editor и нажми "paste as new" или что-то такое - получишь копию экрана как картинку, после чего можешь из нее вырезать что хочешь и сохранять в любом формате.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 08.09.2003, 23:42
Отправитель: Bob Johnson


Отвечает Cybernetic Creature

Доброе время суток, Loko!
Можно так.
Открываете иконку например на Имидж едитор.
Select All>Copy
Откройте Пейнт и вставте.
а можно и програмным способом.
Преобразование ICO в BMP
Решение 1
Попробуйте:

--------------------------------------------
var
Icon : TIcon;
Bitmap : TBitmap;
begin
Icon := TIcon.Create;
Bitmap := TBitmap.Create;
Icon.LoadFromFile('c:picture.ico');
Bitmap.Width := Icon.Width;
Bitmap.Height := Icon.Height;
Bitmap.Canvas.Draw(0, 0, Icon);
Bitmap.SaveToFile('c:picture.bmp');
Icon.Free;
Bitmap.Free;
end;

Решение 2
Способ преобразования изображения размером 32x32 в иконку.

--------------------------------------------
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms,Dialogs,ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Image2: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var winDC, srcdc, destdc : HDC;
oldBitmap : HBitmap;
iinfo : TICONINFO;
begin
GetIconInfo(Image1.Picture.Icon.Handle, iinfo);

WinDC := getDC(handle);
srcDC := CreateCompatibleDC(WinDC);
destDC := CreateCompatibleDC(WinDC);
oldBitmap := SelectObject(destDC, iinfo.hbmColor);
oldBitmap := SelectObject(srcDC, iinfo.hbmMask);

BitBlt(destdc, 0, 0, Image1.picture.icon.width,
Image1.picture.icon.height,
srcdc, 0, 0, SRCPAINT);
Image2.picture.bitmap.handle := SelectObject(destDC, oldBitmap);
DeleteDC(destDC);
DeleteDC(srcDC);
DeleteDC(WinDC);

image2.Picture.Bitmap.savetofile(ExtractFilePath(Application.ExeName)
+ 'myfile.bmp');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
image1.picture.icon.loadfromfile('c:myicon.ico');
end;
end.


Ответ отправлен: 10.09.2003, 18:58
Отправитель: Cybernetic Creature


Отвечает Marouder

Доброе время суток, Loko!
А ты не пробовал в AcdSee открыть и сохр. в BMP.
Если не получится, дай иконку мне (marouder@list.ru), я сделаю BMP (в XP Paint понимает .ico).
Попробовал сейчас сделать преобразователь из .ico в .bmp на Delphi - не получается. Не хочет метод Assign TBitmap'а работать с TIcon. Главное, BMP в JPG таким методом конвертируется, а ICO - хрен.

Ответ отправлен: 10.09.2003, 10:18
Отправитель: Marouder


Отвечает --- Нет данных ---

Доброе время суток, Loko!
тот же ACDSee умеет конвертить что угодно, куда угодно, по крайней мере после 3ей версии


Ответ отправлен: 09.09.2003, 17:47
Отправитель: --- Нет данных ---


 Вопрос № 905

Добрый день, у меня вопрос :
1) Нужно написать прогу для электронной бегущей строки,
в инете 2 часа искал, конкретного описания работы с LPT
нет, накачал примеров апи-функций через createFile,
но реально ничего не получается, подскажите пример
R/W в порты Com & LPT, заранее благодарен.
З.Ы. Может кто-нить подскажет как с Хаспа что-нибудь прочитать ?



Вопрос отправлен: 09.09.2003, 11:39
Отправитель: Jiny (zhas-trz@nursat.kz)

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Приветствую Вас, Jiny!
var
BitMap: TBitmap;
TW,X,Y: Integer;
Txt : String;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
txt := '??? ??????? ??????.';
BitMap := TBitmap.Create;
Bitmap.Width := Form1.Width;
Bitmap.Height := 100;
Bitmap.Canvas.Brush.Color := clBlack;
Bitmap.Canvas.Font.Name := 'Times New Roman';
Bitmap.Canvas.Font.Size := 35;
Bitmap.Canvas.Font.Color := clWhite;
TW := Bitmap.Canvas.TextWidth(txt);
X := Form1.Width;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Bitmap.Width := Form1.Width;
Bitmap.Height := Form1.Height;
Bitmap.Canvas.Polygon([Point(0, 0), Point(799, 0),
Point(799, 599), Point(0, 599)]);
X := X - 3;
If X <= -TW then
X := Form1.Width;
Bitmap.Canvas.TextOut(X,10,txt);
Form1.Canvas.Draw(0,0,Bitmap);
end;

Ответ отправлен: 10.09.2003, 19:14
Отправитель: Cybernetic Creature


Отвечает Илья

Доброе время суток, Jiny!
IMHO работать через CreateFile очень неудобно. Лучше попробуй использовать одну dll'ку позволяющую работать с портами из всех (почти) Win осей. Найти её можешь на http://programmersheaven.com/d/click.aspx?ID=F22947
завется эта фишка Io.dll 2002. Описалово на http://www.geekhideout.com/iodll.shtml
Далее все просто. Определяешься с чем работать с LPT или COM . Далее внимательно читаешь описание интерфейсов, пробуешь - если не получается, спрашивай, ответим.

Ответ отправлен: 09.09.2003, 20:36
Отправитель: Илья


 Вопрос № 906

Как называются строковые функции в SQL?
Прочел сейчас в "Инф. технологиях" Петрова такое примечание:
"Кроме мат. операций в SQL поддерживается ряд строковых ф-ций, ..., конкатенация строк, выделение подстроки, поиск подстроки внутри строки и ряд других"
Если это ||, LIKE - вопрос снимается, я знаю, как с их помощью что-либо проделать. Мне надо не по части слова получить его целиком, а наоборот, чтобы запрос возвратил часть слова, например, инициал вместо полного имени. Сейчас это делаю в Delphi, но если можно это переложить на сервер, то почему бы и нет, переделаю, тем более в Delphi это слегка громоздко выглядит. Знаю, что можно написать UDF, если ответов не будет, так и сделаю (хотя никогда еще их не писал), но может быть, такие ф-ции уже имеются?
В Грубере не нашел, в справке InterBase тоже, т.к. не знаю по какому имени искать, да может их и нет вовсе...
Спасибо Bob Johnson, CasP за ответы про лошадь, Zormax - попробуй сам переименуй и открой хотя бы в Paint, я по-моему в вопросе писал, что это не катит.
P.S. Я уже писал, но ответа не получил - был вопрос про выделение нескольких строк в StringGrid, я там прилагал три махонькие процедурки, которые хоть коряво, но работают. У меня они не сохранились почему-то, видимо, машинально нажал "Не сохранять". Там делалось все методом тыка, снова подбирать не хочется, хоть они и простые, плиз, кто-нибудь, ответьте на тот вопрос хоть пустым письмом, чтобы я их обратно смог получить, вроде его срок еще не истек.



Вопрос отправлен: 09.09.2003, 17:48
Отправитель: Loko

[Следующий вопрос >>] [Список вопросов]

Отвечает Apricot

Добрый день, Loko!
Я надеюсь, что базу разрабатывал не ты.
Значения в полях должны быть атомарными. Поэтому теоретически таких функций быть не должно. Я посмотрел в Дж. Р. Гроффе "SQL. Полное руководство" ничего подобного ненашел.

Ответ отправлен: 10.09.2003, 09:28
Отправитель: Apricot


Отвечает Bob Johnson

Добрый день, Loko!
А под какой сервер запрос пишешь? В MS Access есть, например, функция left (field, q), которое возвращает первые q символов поля field. В Interbase пока такого не нашел...
> ответьте на тот вопрос хоть пустым письмом
Так тебе же в ответ на вопрос 902 их выслали... Ну да ладно, могу еще раз...

* EMan1.5: ---===*** The game we play ***===---

Приложение:


Ответ отправлен: 10.09.2003, 00:11
Отправитель: Bob Johnson


Отвечает ART_43

Добрый день, Loko!
В MSSQL Server есть LEFT, RIGHT, SUBSTRING и еще целая куча всяких полезных функций, если пишешь под InterBase посмотри что-нибудь подобное, может пройдет.
Вот твои функции, но непонятно зачем dgMultiSelect то включать то выключать. Установи один раз и выделяй с Ctrl сколько угодно.
//выделение строки при нажатии Shift
procedure TMain.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssShift in Shift) and (Tag = 0) then
begin
Tag := 1;
DBGrid1.Options := DBGrid1.Options +
[dgRowSelect, dgAlwaysShowSelection, dgMultiSelect];
end;
end;
//снятие выделения, если второго выбора не произошло
procedure TMain.DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Tag = 1 then
begin
Tag := 0;
DBGrid1.Options := DBGrid1.Options -
[dgRowSelect, dgAlwaysShowSelection, dgMultiSelect];
end;
end;
//снятие выделения при его наличии
procedure TMain.DBGrid1CellClick(Column: TColumn);
begin
if Tag = 1 then
Tag := Tag + 1
else if Tag > 1 then
begin
Tag := 0;
DBGrid1.Options := DBGrid1.Options -
[dgRowSelect, dgAlwaysShowSelection, dgMultiSelect];
end;
end;


Ответ отправлен: 11.09.2003, 14:01
Отправитель: ART_43


 Вопрос № 907

Здравствуйте эксперты. Помогите пожайлуста, не могу разобраться что за метод такой Seek????? Мне нужно с его помощью сделать поиск в БД(ADO).Как это реализовать с помощью этого метода???


Приложение:


Вопрос отправлен: 09.09.2003, 18:59
Отправитель: николай (chuprin_kolya@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Andy

Здравствуйте, николай!
Seek - (англ. Поиск) Поиск чего либо. Если Имелось введу метод (терминология ООП) ADO, то нет такого метода.

Ответ отправлен: 10.09.2003, 07:40
Отправитель: Andy


Отвечает ART_43

Приветствую Вас, николай!
На сколько я помню в ADO поиск делается следующим образом:
1. В Filter прописываем условие поиска
2. Запускаем FindFirst потом добиваем FindNext.
Или делать Locate

Ответ отправлен: 11.09.2003, 15:26
Отправитель: ART_43


 Вопрос № 908

Здравствуйте Господа Эксперты,
Хотел бы написать приложение для отправки и получения сообщений протоколами POP3 и SMTP. Так же узнал, что это реализуется при помощи Socket'ов. Не мог ли бы Вы пожалуйста дать (Выслать на email) исходники с примерами использования Socket'ов для работы с протоколами POP3 и SMTP? Я буду так же очень благодарен ссылкам на эту тему, а так же документами (если есть возможность) на мой email.
Большое Спасибо!!




Вопрос отправлен: 09.09.2003, 21:05
Отправитель: DUDE (salihovar@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, DUDE!
Если ты именно хочешь работать через сокеты, то все необходимые исходники можешь взять из моих программ - http сервера и E-Man. Там нет ничего сложного - протоколы текстовые, т.е. ты устанавливаешь соединение, посылаешь серверу в текстовом виде некоторую команду, а он в текстовом же виде присылает тебе ответ. Только тебе нужно будет изучить эти протоколы. Пример того, что ты должен отправлять smtp-серверу:
helo dude
mail from: salihovar@mail.ru
rcpt to: admin@rusfaq.ru
data
subject: rusfaq
Hello dear admin! I like rusfaq very much and I am so glad that such a wonderful system exists! Could you be so pleased to send me as a your biggest fan a little raward of a $1000? Thank you!
.
quit
 8
(o)
 /\

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 10.09.2003, 00:13
Отправитель: Bob Johnson


 Вопрос № 909

Здравствуйте, уважаемые эксперты !!!
Помогите разобраться с проблемой: в программе
есть всего 3 формы. Мне бы хотелось сделать, чтобы каждое
появляющееся окно принимало размеры предыдущего окна
(это чтобы придать эффект работы с одним окном, размеры
которого задал пользователь). Но это новое окно появляется
в том месте и тех размеров, какие были заданы еще при
конструировании. Я объявил 4 глобальные переменные в модуле
главной формы Gl_Top, Gl_Left, Gl_Height и Gl_Width,
соотвественно свойствам формы. Я придумал делать так:

// При "выходе" сохраняем свойства
procedure TForm1.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
Gl_Top:=Top;
Gl_Left:=Left;
Gl_Height:=Height;
Gl_Width:=Width;
end;
// При "показе" принимаем уже сохраненные свойства
procedure TForm1.FormShow(Sender: TObject);
begin
Top:=Gl_Top;
Left:=Gl_Left;
Height:=Gl_Height;
Width:=Gl_Width;
end;

Ну и так для всех трех форм. Где моя ошибка, ткните носом :)
Всем заранее спасибо !!! С уважением SATAN aka NAPALM.



Вопрос отправлен: 10.09.2003, 09:49
Отправитель: SATAN aka NAPALM

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Здравствуйте, SATAN aka NAPALM!
Даете всем формам в свойстве PositionpoDesigned
а после вот так:
Form2.Left:=Form1.Left;
Form2.Top:=Form1.Top;
Form2.Width:=Form1.Width;
Form2.Height:=Form1.Height;
Form3.Left:=Form1.Left;
Form3.Top:=Form1.Top;
Form3.Width:=Form1.Width;
Form3.Height:=Form1.Height;

Ответ отправлен: 10.09.2003, 19:14
Отправитель: Cybernetic Creature


Отвечает Marouder

Здравствуйте, SATAN aka NAPALM!
А ты уверен, что форма закрывается? Может, ты убираешь ее с помощью Hide, а не с помощью Close. Тогда обрабатывай OnHide. Вроде все должно работать.

Ответ отправлен: 10.09.2003, 10:29
Отправитель: Marouder


Отвечает Andy

Приветствую Вас, SATAN aka NAPALM!
Скорее всего ты НЕ закрываешь форму при переходе от одной к другой, а просто делаешь её невидимой (Hide) и поэтому тебе надо обрабатывать OnHide... Т.е. делаешь всё так же, но только сохраняешь положение в обработчике OnHide вместо OnCloseQuery.

Ответ отправлен: 11.09.2003, 06:01
Отправитель: Andy


Отвечает ART_43

Здравствуйте, SATAN aka NAPALM!
А какая ошибка? В этом месте вроде все правильно. Что хоть не получается-то?

Ответ отправлен: 11.09.2003, 16:32
Отправитель: ART_43


Отвечает URiS

Приветствую Вас, SATAN aka NAPALM!
А в чём проблема? Что не работает?
Переменные Gl_* должны быть глобальными для каждой формы.

Expert: URiS


Ответ отправлен: 11.09.2003, 17:44
Отправитель: URiS


 Вопрос № 910

Здравствуйте уважаемые эксперты !
У меня такой вопрос:
могу ли я при помощи VarArrayCreate создать
массив своего типа. Тип описан как
type MyType = record
...
end;
Если нет, то как это сделать ?
Не хотелось бы возиться с динамическими переменными.
Delphi 3.
Заранее спасибо.
Радик.



Вопрос отправлен: 10.09.2003, 11:18
Отправитель: Радик (rdk78@nightmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Артём Шегеда

Добрый день, Радик!

Лучше создать таким образом:
type MyType = record
// ...
end;
var
i : integer;
MyArray : array of MyType;
begin
SetLength(MyArray, 5);
for i:=0 to Length(MyArray)-1 do
with MyArray[i] do begin
// ...
end;
// ...
end.


Ответ отправлен: 10.09.2003, 12:05
Отправитель: Артём Шегеда


Отвечает The propheT

Доброе время суток, Радик!
Тебе нужен динамический массив?
if YES then
TMArray : Array of MyType;
else
TMArray : Array [Byte] of MyType

Ответ отправлен: 10.09.2003, 22:06
Отправитель: The propheT


Отвечает Cybernetic Creature

Приветствую Вас, Радик!
type
TMyArray=array of MyType;
var MyArray:TMyArray;
..............
SetLength(MyArray,4);
MyArray[0].-----:=----;
..................
MyArray[3].-----:=-----;


Ответ отправлен: 10.09.2003, 19:02
Отправитель: Cybernetic Creature


 Вопрос № 911

Здравствуйте, уважаемые Эксперты.
Вот какая проблема приключилась. Она не совсем по программированию, но возникла в ходе создания программы.
Мне необходимо выдать отчет по данным из одной таблицы, для чего используется SQL запрос, но он почему-то выдает неверные результаты. Вот сам запрос:
Select a.Line, Sum(a.Kol),b.line, Sum(b.kol)
From Storehouse a, Storehouse b
Where a.Skald=2 and b.Skald=3 and A.Line=b.line and a.Kol>=0 and b.kol>=0
Group by a.Line,b.Line
По сути мне нужно просумировать значения Kol по линиям для разных складов.
В чем ошибка?
Заранее спасибо за ответ!



Вопрос отправлен: 10.09.2003, 13:28
Отправитель: VDR

[Следующий вопрос >>] [Список вопросов]

Отвечает Apricot

Добрый день, VDR!
Бросилось в глаза несовпадение того, что ты выбираеш Select и то, что ты группируеш.
Select a.Line, Sum(a.Kol),-->b.line, Sum(b.kol)
...
Group by a.Line,--->b.Line
Но если это правильно, тогда возможно необходимо расставить скобочки в Where, этого может требовать твоя СУБД.


Ответ отправлен: 11.09.2003, 13:28
Отправитель: Apricot


Отвечает kvINT

Добрый день, VDR!
Навскидку:
не знаю, какой реализацией SQL ты пользуешься, но в той, к-рой пользуюсь я, выражение "From Storehouse a, Storehouse b" означает, что ты присваиваешь одной и той же таблице (Storehouse) два разных псевдонима, т.е. все данные у тебя выбираются из одной таблицы. Не могу понять, как СУБД тебе позволила создать две таблицы с одинаковыми именами. Впрочем, может быть они у тебя так и называются - ... a, ... b? В таком случае, как тебе СУБД позволила использовать в именах пробелы?
Если я что-то не так понял - опиши структуру таблиц и повтори вопрос.

Ответ отправлен: 11.09.2003, 00:10
Отправитель: kvINT


 Вопрос № 912

Добрый день!
Хотелось бы управлять документами MS Office (Word, Excel, Outlook) из программы, написанной в Delphi.
И вот что интересно, а где же можно найти описание всех функций приложений Office, что-то вроде Office API (не знаю как сказать правильно)?
Я догадываюсь, что есть наверное некий Office SDK, но что-то мне кажется, навряд ли он бесплатный...



Вопрос отправлен: 10.09.2003, 16:07
Отправитель: Игги

[Следующий вопрос >>] [Список вопросов]

Отвечает Vdr

Добрый день, Игги!
Если я правильно тебя понял, то могу сказать следующее:
Управлять документами от MS не получится,т.к. форматы их файлов скрыты от глаз простых программеров. Упровлять пожно только через сам Word(на пример), а для этого есть компоненты на соответствующей панели...почитай описание к ним.
Удачи!

Ответ отправлен: 10.09.2003, 16:46
Отправитель: Vdr


Отвечает kvINT

Доброе время суток, Игги!
Я бы тоже хотел найти что-то подобное. Но пока в разных источниках я встречаю лишь инфу, что подобные ф-ции очень плохо документированы. Могу посоветовать следующее: синтаксис этих ф-ций похож на их синтаксис в VBA (хотя и отличается), используй справку Excel по VBA. Иногда полезно написать макрос, выполняющий что-то похожее на то, что ты собираешься делать, а потом рассмотреть его код в редакторе макросов в Excel.

Ответ отправлен: 11.09.2003, 00:10
Отправитель: kvINT


Отвечает ART_43

Приветствую Вас, Игги!
Смотри справку по Microsoft Visual Basic ( (Word, Excel, Outlook)->Menu->Сервис->Макрос->Редактор Visual Basic->F1)

Ответ отправлен: 11.09.2003, 15:40
Отправитель: ART_43


Отвечает Bob Johnson

Приветствую Вас, Игги!
В MSDN есть целая категория "Office Developer Documentation" - там это все есть. MSDN, конечно, не бесплатный (что-то около $6000), но разве ты думаешь, что кто-то здесь за него платил? :)

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 12.09.2003, 18:19
Отправитель: Bob Johnson


Отвечает Cybernetic Creature

Здравствуйте, Игги!
С помошью компонентов на странице Servers. На панели компонентов. А про этих компонентов в интернете полно информации

Ответ отправлен: 12.09.2003, 20:57
Отправитель: Cybernetic Creature



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (34)
C / C++ (28)
Perl (6)
Builder / Delphi (18)
Pascal (21)
Basic / VBA (9)
Java / JavaScript (12)
PHP (11)
Криптография (9)
WinAPI (16)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (61)
"Железо" (37)
Поиск информации (24)
Администратору
Windows NT/2000/XP (27)
Linux / Unix (11)
Юристу
Гражданское право (8)
Семейное право (5)
Трудовое право (6)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

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

В избранное