Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 361

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Можно ли в делфи сделать так, чтобы нажимаешь на кнопку и вызывалась презентация?
(причем желательно уже просмотр)
если да, то как это сделать?
подскажите, пожалуйста.

Nastena Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Nastena (статус: Посетитель)
Вопрос отправлен: 3 ноября 2009, 21:57
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Егор

Здравствуйте, Nastena!
1. Файлы презентаций сохраняем не как презентацию, а как "демонстрация PowerPoint". Расширение файла станет pps (а не ppt, как для обычных презентаций)
2. В форме Дельфи ставим восемь кнопок - на каждую презентацию
3. Сделав двойной щелчок мышью на каждой из кнопок, в каждом обработчике прописываем команду запуска той или иной презентации (см. приложение).

вместо "C:\Мои презентации\Презентация1.pps" пишем пути и имена файлов своих презентаций

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.  
  4. end;
  5.  
  6. procedure TForm1.Button2Click(Sender: TObject);
  7. begin
  8.  
  9. end;
  10.  
  11. procedure TForm1.Button3Click(Sender: TObject);
  12. begin
  13.  
  14. end;
  15.  
  16. ...


Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 3 ноября 2009, 22:42

Ответ #2. Отвечает эксперт: Жикльор

Здравствуйте, Nastena!

Есть проще способ, чтобы не расписывать все обработчики нажатия клавиш.
На каждой кнопке есть такое свойство Tag. Вы задаете ему номер нужной вам презентации. Например, вторая презентация - Tag = 2. После этого на форму наносите нужное вам количество кнопок и присваиваете им это свойство, как я объяснил раньше. Двойным щелчком по кнопке создаете обработчик события, только в его названии стираете номер кнопки. Например создался обработчик procedure TForm1.Button1Click(Sender: TObject); а вы всего лишь стираете "1". Получим procedure TForm1.ButtonClick(Sender: TObject); После этого на каждую из кнопок вам нужно задать в обработчик события OnClick название этой процедуры, а именно в моем примере ButtonClick. А в обработчик вписываем вот этот код:

procedure TForm1.ButtonClick(Sender: TObject);
begin
case TButton(Sender).Tag of
1: ShellExecute(Handle, 'open', 'C:\Путь_к_презентации\Презентация_1.pps', nil, nil, SW_SHOW);
2: ShellExecute(Handle, 'open', 'C:\Путь_к_презентации\Презентация_2.pps', nil, nil, SW_SHOW);
3: ShellExecute(Handle, 'open', 'C:\Путь_к_презентации\Презентация_3.pps', nil, nil, SW_SHOW);
end;
end;

Только не забудьте добавить модуль ShellAPI в раздел uses.

Ответ отправил: Жикльор (статус: 5-ый класс)
Время отправки: 4 ноября 2009, 00:42
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 15; последнее сообщение — 8 февраля 2012, 12:47; участников в обсуждении: 5.
Егор

Егор (статус: 10-ый класс), 3 ноября 2009, 22:10 [#1]:

в смысле, уже подготовленная раньше презентация? отдельным файлом?
или в своём приложении?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Nastena

Nastena (статус: Посетитель), 3 ноября 2009, 22:12 [#2]:

уже приготовленную раньше.
просто нужно создать проект в который объединить 8 презентаций.
вот я и хотела это сделать в делфи.
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 3 ноября 2009, 22:44 [#3]:

Из одной презентации можно запускать другую, не знали? Я бы не стал делать программу, а сделал бы всё средствами самого PowerPoint.
Егор

Егор (статус: 10-ый класс), 3 ноября 2009, 22:45 [#4]:

блин, в ответе коряво текст вставился. вот корректно:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'C:\Мои презентации\Презентация1.pps', nil, nil, SW_SHOW);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'C:\Мои презентации\Презентация2.pps', nil, nil, SW_SHOW);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'C:\Мои презентации\Презентация3.pps', nil, nil, SW_SHOW);
end;
 
...

и ещё. программа сработает, только если на компьютере уже установлен PowerPoint (или его бесплатный аналог - например, из того же OpenOffice)
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 3 ноября 2009, 22:50 [#5]:

да, и в разделе uses нужно ещё один модуль подключить:
uses
  Windows, ... 
  ..., ShellApi;

ну или, как и написал Андрей, не писать программу на дельфи, а делать всё средствами самого PowerPoint'a.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Жикльор

Жикльор (статус: 5-ый класс), 4 ноября 2009, 00:43 [#6]:

Но я бы все сделал средствами ВЕЛИКОГО PowerPoint'a.
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
Nastena

Nastena (статус: Посетитель), 4 ноября 2009, 13:43 [#7]:

спасибо)
попробую оба варианта))
Nastena

Nastena (статус: Посетитель), 4 ноября 2009, 17:03 [#8]:

хм...а если делать в Великом PowerPoint'е
как сделать ссылку не абсолютной а относительной?
Жикльор

Жикльор (статус: 5-ый класс), 4 ноября 2009, 17:08 [#9]:

А у тебя какой Офис? 2003 или 2007?
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
Nastena

Nastena (статус: Посетитель), 4 ноября 2009, 17:10 [#10]:

open office последний )
Жикльор

Жикльор (статус: 5-ый класс), 4 ноября 2009, 17:11 [#11]:

Хотя без разницы. Допустим тебе нужно сделать ссылку в презентации № 2 на презентацию номер 5. Для этого ты вставляешь где-то текст, выделяешь его, щелкаешь правой кнопкой мыши по выделенному тексту. В этом меню выбираешь Гиперссылка. После слева будет видно Связять с файлом, веб-страницей (если не активная, активируй), а справа выбираешь файл твоей готовой демонстрации (то есть с расширением pps). Я понятно объяснил?
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
Nastena

Nastena (статус: Посетитель), 4 ноября 2009, 17:17 [#12]:

ну да....)
спасибо...
Жикльор

Жикльор (статус: 5-ый класс), 4 ноября 2009, 17:18 [#13]:

Заработало?
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
Nastena

Nastena (статус: Посетитель), 4 ноября 2009, 17:25 [#14]:

да)
очень помогли)
Anna

Anna (статус: Посетитель), 8 февраля 2012, 12:47 [#15]:

Возникла ситуация, что презентацию нужно вставить в Делфи.
Как прописать, чтобы ссылка на файл была относительной?
Ведь данную программу придется открывать не только на том компьютере, на котором делаешь...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 16 ноября 2024, 16:26
Выполнено за 0.03 сек.