Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Определение функций кнопки или TButton::OnClick.Как сделать? (http://forum.oszone.net/showthread.php?t=164552)

Virtyaluk 24-01-2010 22:31 1328885

Определение функций кнопки или TButton::OnClick.Как сделать?
 
Помогите, пожалуйста
есть несколько кнопок (например, ВЭБ, Справка и Выход)
нада задать им необходимые функции т.е. чтоб:
- при нажатии на кнопку "Выход" закрывалось приложение;
- при нажатии на кнопку "Справка" открывался некоторый 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 1328905

Цитата:

Цитата qE+
- при нажатии на кнопку "Выход" закрывалось приложение; »

Код:

void __fastcall TForm2::Button1Click(TObject *Sender)
{
  Close();
}

Цитата:

Цитата qE+
- при нажатии на кнопку "ВЭБ" открывался браузер на страничке, например, http://mysite.com. »

Код:

void __fastcall TForm1::Label1Click(TObject *Sender)
{
  ShellExecute(Handle, NULL, "http://mysite.com/", NULL, NULL, SW_SHOWNORMAL);
}

Цитата:

Цитата qE+
- при нажатии на кнопку "Справка" открывался некоторый help.chm по пути, например, c:\\windows\help; »

Никогда не делал к сожалению, но там есть вроде бы такое - Project - Options - пункт Application - Поле Help file - указать через кнопку Browse... файл помощи. А дальше, без понятия, не ставил себе такую задачу. Нужно будет поэкспериментировать на досуге...

Virtyaluk 25-01-2010 02:55 1329045

Drongo,
спасибо за коды.

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

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


Drongo 25-01-2010 13:02 1329299

Цитата:

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

Тогда файл справки help.chm должен быть всегда на диске C:.

Virtyaluk 25-01-2010 13:48 1329345

Цитата:

Цитата Drongo
Тогда файл справки 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 1329422

Цитата:

Цитата qE+
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);

Цитата:

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

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

Virtyaluk 31-01-2010 13:58 1334897

Цитата:

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

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

Цитата:

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

конечно

Drongo 31-01-2010 15:36 1335002

Цитата:

Цитата qE+
куда это писать?? »

В обработчик OnClick, того компонента, на который вы хотите по нажатию запускать файл справки. Например в Label

El Scorpio 01-02-2010 04:56 1335600

Цитата:

Цитата qE+
- при нажатии на кнопку "Выход" закрывалось приложение; »

Установить значение ModalResult или Cancel - само закроется :)

Цитата:

Цитата qE+
Я помещу файл в директорию Windows и буду запускать, типа: »

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


Время: 08:36.

Время: 08:36.
© OSzone.net 2001-