Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2010, 22:23   #1
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
Вопрос ShowMessage

Как сделать, чтобы при нажатии на кнопку открывалась программа, а если такой программы нет, то выдавало сообщение. У меня не очень получилось с кодом!
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if (Form1.Handle, nil, PChar('msaccess.exe'))=true then
  begin
  ShellExecute(Form1.Handle, nil, PChar('msaccess.exe'), nil, nil, SW_ShowNormal);
  end
else
if (Form1.Handle, nil, PChar('msaccess.exe'))=false then
  begin
  ShowMessage('Данная программа не установлена на Вашем компьютере!');
  end;
end;
krikaved вне форума Ответить с цитированием
Старый 03.03.2010, 23:03   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Держи:

Код:
function Exec(FileName: string): Integer;
begin
 if FileExists(FileName) then
  Result:= WinExec(Pchar(FileName),SW_NORMAL)
 else
 begin
  ShowMessage('Ôàéë íå íàéäåí');
  Result:= 0;
 end;
end;
Вот функция а проверку существования файла: FileExists()
uberchel вне форума Ответить с цитированием
Старый 03.03.2010, 23:17   #3
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию

А если сделать не функцией, а процедурой по клику кнопки?
У меня таких кнопок 30. И что завести 30 функций!
krikaved вне форума Ответить с цитированием
Старый 04.03.2010, 01:09   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от krikaved Посмотреть сообщение
Как сделать, чтобы при нажатии на кнопку открывалась программа, а если такой программы нет, то выдавало сообщение. У меня не очень получилось с кодом!
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if (Form1.Handle, nil, PChar('msaccess.exe'))=true then
  begin
  ShellExecute(Form1.Handle, nil, PChar('msaccess.exe'), nil, nil, SW_ShowNormal);
  end
else
if (Form1.Handle, nil, PChar('msaccess.exe'))=false then
  begin
  ShowMessage('Данная программа не установлена на Вашем компьютере!');
  end;
end;
Совершенно дикий анализ...
Ну почитайте хотя бы встроенный хэлп по ShellExecute:
Цитата:
Return Values

If the function succeeds, the return value is the instance handle of the application that was run, or the handle of a dynamic data exchange (DDE) server application.
If the function fails, the return value is an error value that is less than or equal to 32.
Ведь все у вас под руками...
Неужели абсолютно все "букаффки" нужно разжевывать на страницах форума ?
А что, если чуть-чуть своих мозгов задействовать ?

З.Ы. И, христом-богом прошу, скачайте себе хоть одну книжку для начинающих...
http://www.programmersforum.ru/showthread.php?t=14054

Последний раз редактировалось mihali4; 04.03.2010 в 01:12.
mihali4 вне форума Ответить с цитированием
Старый 18.03.2010, 21:01   #5
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию Открытие программ и работа с ShowMessage

Вот что у меня получилось!
Код:
...
var
  F_Programms: TF_Programms;
  FileName: string;
...
function Exec(FileName: string): Integer;
begin
if not FileExists(FileName) then
  begin
  Result:=ShellExecute(F_Programms.Handle, nil, PChar(FileName), nil, nil, SW_ShowNormal);
  F_Programms.Close;
  end
else
  begin
  ShowMessage('Данная программа не установлена на Вашем компьютере!');
  Result:=0;
  end;
end;
procedure TF_Programms.SpeedButton1Click(Sender: TObject);
begin
FileName:='winword.exe';
Exec(FileName);
end;
procedure TF_Programms.SpeedButton2Click(Sender: TObject);
begin
FileName:='excel.exe';
Exec(FileName);
end;
procedure TF_Programms.SpeedButton3Click(Sender: TObject);
begin
FileName:='msaccess.exe';
Exec(FileName);
end;
// и так далее...
Вопрос в том, что строчку "if not FileExists(FileName) then" надо заменить на правильную. Получается "Если файла не существует", но он то существует.
Если сделать if not FileExists(FileName), то открывается соответствующая программа, а если поменяешь путь, к примеру, FileName:='excel.exe111', то должно срабатывать ShowMessage, а оно не срабатывает!
Если if FileExists(FileName), то всё время срабатывает ShowMessage.
Подскажите пожалуйста!!!

Последний раз редактировалось krikaved; 18.03.2010 в 21:03.
krikaved вне форума Ответить с цитированием
Старый 18.03.2010, 21:39   #6
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Если уж на то пошло, то:
if FileExists(FileName) - проверяет, если файл или нет.
Код:
function Exec(FileName: string): Boolean;
begin
 if FileExists(FileName) then //файл существует,то
 begin
  Result:= WinExec(Pchar(FileName),SW_NORMAL)
  Result:= True;
 end
 else //а если файл не существует
 begin
  ShowMessage('Файл не найден');
  Result:= False;
 end;
end;
Применение:
Код:
procedure TF_Programms.SpeedButton1Click(Sender: TObject);
begin
Exec(winword.exe);
end;
procedure TF_Programms.SpeedButton2Click(Sender: TObject);
begin
Exec('excel.exe);
end;
procedure TF_Programms.SpeedButton3Click(Sender: TObject);
begin
Exec(msaccess.exe);
или можно еще так
if Exec(msaccess.exe) then
//Если функция выполнилась
else
//если не выполнилась
end;
uberchel вне форума Ответить с цитированием
Старый 19.03.2010, 04:19   #7
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию

Всё работает, спасибо. Просто мне путь к файлу нужно было писать полностью.
Вот так правильней:
Код:
WinExec(Pchar(FileName),SW_NORMAL); // не надо Result:= 
Result:= True;
krikaved вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Showmessage извне Horus92 Общие вопросы Delphi 2 29.11.2009 15:55
Cообщение (ShowMessage) mavlon_m Общие вопросы Delphi 2 05.08.2009 02:49
showmessage Neymexa Помощь студентам 2 24.01.2009 18:00
ShowMessage DM_bite Помощь студентам 14 12.09.2008 01:02
Как в Showmessage Михаил Юрьевич Общие вопросы Delphi 2 03.07.2008 06:00