Войти

Показать полную графическую версию : [решено] Определение функций кнопки или TButton::OnClick.Как сделать?


Virtyaluk
24-01-2010, 22:31
Помогите, пожалуйста
есть несколько кнопок (например, ВЭБ, Справка и Выход)
нада задать им необходимые функции т.е. чтоб:
- при нажатии на кнопку "Выход" закрывалось приложение;
- при нажатии на кнопку "Справка" открывался некоторый help.chm по пути, например, c:\\windows\help;
- при нажатии на кнопку "ВЭБ" открывался браузер на страничке, например, http://mysite.com.

Код программы:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Label1Click(TObject *Sender)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{

}
//---------------------------------------------------------------------------


использую C++ Builder от CodeGear RAD studio 2007

как, все выше указанное, осуществить?
и можно ли все это осуществить в Делфи и насколько изменится код?

Drongo
24-01-2010, 22:51
- при нажатии на кнопку "Выход" закрывалось приложение; »
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Close();
}
- при нажатии на кнопку "ВЭБ" открывался браузер на страничке, например, http://mysite.com. »
void __fastcall TForm1::Label1Click(TObject *Sender)
{
ShellExecute(Handle, NULL, "http://mysite.com/", NULL, NULL, SW_SHOWNORMAL);
}
- при нажатии на кнопку "Справка" открывался некоторый help.chm по пути, например, c:\\windows\help; »
Никогда не делал к сожалению, но там есть вроде бы такое - Project - Options - пункт Application - Поле Help file - указать через кнопку Browse... файл помощи. А дальше, без понятия, не ставил себе такую задачу. Нужно будет поэкспериментировать на досуге...

Virtyaluk
25-01-2010, 02:55
Drongo,
спасибо за коды.

вот нашел для открытия файла:

void __fastcall TForm2::Button4Click(TObject *Sender)
{
ShellExecute(Handle, "open", "C:\\help.chm",NULL,NULL,SW_SHOWNORMAL);
}

Drongo
25-01-2010, 13:02
вот нашел для открытия файла: »Тогда файл справки help.chm должен быть всегда на диске C:.

Virtyaluk
25-01-2010, 13:48
Тогда файл справки help.chm должен быть всегда на диске C:. »
Я помещу файл в директорию Windows и буду запускать, типа:

void __fastcall TForm2::Button4Click(TObject *Sender)
{
ShellExecute(Handle, "open", "C:\\windows\help\help_zzz.chm",NULL,NULL,SW_SHOWNORMAL);
}

-*---*-
Только, вот проблема в том, что справка не будет запускаться по нажатию кнопки F1!
Вот код для запуска chm-справки:

HWND hwnd =
HtmlHelp(
GetDesktopWindow(),
"c:\\Help.chm::/Intro.htm>Mainwin",
HH_DISPLAY_TOPIC,
NULL) ;

или это:

CHAR buffer[100];
GetCurrentDirectory(sizeof(buffer),buffer);
WideString Help = WideString(buffer) + "\\R11_HELP.chm";
Application->HelpFile = Help;
Application->HelpCommand(HELP_CONTENTS, 0);

Но выдает ошибку о том, что данный файл не является Win-справкой.

Но я не заню "с какой стороны" ЭТО добавить в код моей программы и работает ли оно в самом то деле.
Помогите кто может.

Drongo
25-01-2010, 15:10
ShellExecute(Handle, "open", "C:\\windows\help\help_zzz.chm",NULL,NULL,SW_SHOWNORMAL); »Нет двойных слешей в путях \\, но я бы сделал так(простой способ). Поместил файл help.chm в папку с программой и определял бы каталог запуска данной программы, получая путь к нему цеплял бы файл справки.
String PathCHM = ExtractFilePath(Application->ExeName) + "Builder.chm";
ShellExecute(Handle, "open", PathCHM.c_str(), NULL, NULL, SW_SHOWNORMAL);
Но выдает ошибку о том, что данный файл не является Win-справкой. »Сам файл открывается на Windows 7 ?

Virtyaluk
31-01-2010, 13:58
Поместил файл help.chm в папку с программой и определял бы каталог запуска данной программы, получая путь к нему цеплял бы файл справки.
Код:
String PathCHM = ExtractFilePath(Application->ExeName) + "Builder.chm";
ShellExecute(Handle, "open", PathCHM.c_str(), NULL, NULL, SW_SHOWNORMAL); »

куда это писать??

Сам файл открывается на Windows 7 ? »

конечно

Drongo
31-01-2010, 15:36
куда это писать?? »В обработчик OnClick, того компонента, на который вы хотите по нажатию запускать файл справки. Например в Label

El Scorpio
01-02-2010, 04:56
- при нажатии на кнопку "Выход" закрывалось приложение; »
Установить значение ModalResult или Cancel - само закроется :)

Я помещу файл в директорию Windows и буду запускать, типа: »
Вот так - одни в папку windows всякую хрень кидают, а другие потом с ней разбираются :(
Правильнее будет считывать файл из текущего каталога программы. Определить текущий каталог очень просто - ExtractFileDir (Application->Exename)




© OSzone.net 2001-2012