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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2015, 11:07   #1
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Пишу код по простой базе данных(пример задачи), помогите с кодом разобраться. Как добавить "about.h", есть ли его аналог?
cpp
Код:
TForm1 *Form1;
AnsiString aFileName;
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	aFileName = "";
	SpeedButton1->OnClick = imOpenClick;
	SpeedButton2->OnClick = imSaveClick;
}

bool __fastcall TForm1::SaveText()
{
	if (aFileName == "")
	{
	 SaveDialog1->Options<<ofPathMustExist<<ofOverwritePrompt;
		if (SaveDialog1->Execute())
		{
		 aFileName = SaveDialog1->FileName;
		}
	 else
	  return false;
	}
  RichEdit1->Lines->SaveToFile(aFileName);
  return true;
}

void __fastcall TForm1::imOpenClick (TObject *Sender)
{
  int r;
  if (RichEdit1->Modified)
  {
   r = MessageDlg ("Текс был изменен.\n"
				   "Соханить изменения?",
		mtWarning,TMsgDlgButtons()<<mbYes<<mbNo<<mbCancel,0);
		if (r == mrCancel)
		{
			if ( (r == mrYes) && ( ! SaveText()))
			{
			 return;
			}
		}
   }
   OpenDialog1->FileName = "*.text";
   OpenDialog1->Options<<ofPathMustExist<<ofFileMustExist;

   if (OpenDialog1->Execute())
   {
		RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
		RichEdit1->Modified = false;
		Form1->Caption = "MEdit - " + OpenDialog1->FileName;
		aFileName = OpenDialog1->FileName;
   }
}


void __fastcall TForm1::imSaveClick (TObject *Sender)
{
	if (SaveText() )
	{
	 RichEdit1->Modified = false;
	 Form1->Caption = "MEdit - " + aFileName;
	}
}


void __fastcall TForm1::imExitClick(TObject *Sender)
{
	Form1->Close();
}


void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
   int  r;
   if (RichEdit1->Modified)
   {
		r = MessageDlg("Текст был изменен.\n"
		"Сохранить изменения?", mtWarning,
		 TMsgDlgButtons()<<mbYes<<mbNo<<mbCancel,0);
		switch (r)
		{
		case mrYes:
			if (!SaveText())
			{
			 CanClose = false;
			 break;
			}
		case mrCancel: CanClose = false;
		}
   }
}


void __fastcall TForm1::imToolBarClick (TObject *Sender)
{
	ToolBar1->Visible = ! ToolBar1->Visible;
	imToolBar->Checked = ! imToolBar->Checked;//E2451 Undefined symbol 'imToolBar'
}


void __fastcall TForm1::imAboutClick(TObject *Sender)
{
	TAboutForm *AboutForm;//E2451 Undefined symbol 'TAboutForm'
	AboutForm = new TAboutForm (this);//E2303 Type name expected
	AboutForm->ShowModal();
	delete AboutForm;//E2158 Operand of 'delete' must be non-const pointer  
}


void __fastcall TAboutForm::Button1Click(TObject *Sender)
{
	ModalResult = mrOk;
}
h
Код:


#ifndef meditH
#define meditH


#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.Buttons.hpp>
#include <Vcl.ComCtrls.hpp>
#include <Vcl.Dialogs.hpp>
#include <Vcl.Menus.hpp>
#include <Vcl.ToolWin.hpp>


class TForm1 : public TForm
{
__published:	// IDE-managed Components
	TSaveDialog *SaveDialog1;
	TOpenDialog *OpenDialog1;
	TToolBar *ToolBar1;
	TMainMenu *MainMenu1;
	TRichEdit *RichEdit1;
	TSpeedButton *SpeedButton1;
	TSpeedButton *SpeedButton2;
	void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);

private:	// User declarations
public:		// User declarations
	bool __fastcall TForm1::SaveText();
	__fastcall TForm1(TComponent* Owner);
	void __fastcall TForm1::imOpenClick (TObject *Sender);
	void __fastcall TForm1::imSaveClick (TObject *Sender);
	void __fastcall TForm1::imExitClick (TObject *Sender);
	void __fastcall TForm1::imToolBarClick(TObject *Sender);
	void __fastcall TForm1::imAboutClick(TObject *Sender);
	void __fastcall TAboutForm::Button1Click(TObject *Sender);//E2090 Qualifier 'TAboutForm' is not a class or namespace name
};


extern PACKAGE TForm1 *Form1;
Создал вторую форму AboutForm
Как ее добавить в первый проект?
Код:
class TAboutForm : public TForm
{
__published:	// IDE-managed Components
	TButton *Button1;
	TLabel *Label1;
	TImage *Image1;
	TBevel *Bevel1;
	TLabel *Label2;
private:	// User declarations
public:		// User declarations
	__fastcall TAboutForm(TComponent* Owner);
};

Последний раз редактировалось Stilet; 12.08.2015 в 22:03.
Dima-91 вне форума Ответить с цитированием
Старый 11.08.2015, 15:15   #2
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от Dima-91 Посмотреть сообщение
Создал вторую форму AboutForm
Как ее добавить в первый проект?
Если Вы форму создавали в самом проекте, тогда будет достаточно подключить ее .h файл:

Код:
#include "AboutForm.h"
И использовать:
Код:
Form2->Show();
или
Код:
Form2->ShowModal();
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 11.08.2015, 15:29   #3
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Вроде помогло, только 1 ошибка осталась в cpp
Код:
void __fastcall TAboutForm::Button1Click(TObject *Sender)//E2316 '_fastcall TAboutForm::Button1Click(TObject *)'
{
	ModalResult = mrOk;
}
Dima-91 вне форума Ответить с цитированием
Старый 11.08.2015, 15:36   #4
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Добавьте в "AboutForm.h" функцию Button1Click:
Код:
class TAboutForm : public TForm
{
...
        void __fastcall Button1Click(TObject *Sender);
...
};
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 11.08.2015, 20:07   #5
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Ошибка при компиляции.
Error reading Button1.OnClick: Invalid property value.

Пробовал изменить функцию
Код:
void __fastcall TAboutForm::Button1Click(TObject *Sender)
{
	AboutForm->Close();  //было ModalResult = mrOk;
}
Забыл еще что за комментировал строку, что бы не было ошибок.
Код:
void __fastcall TForm1::imToolBarClick (TObject *Sender)
{
	ToolBar1->Visible = ! ToolBar1->Visible;
	//imToolBar->Checked = ! imToolBar->Checked;//E2451 Undefined symbol 'imToolBar'
}

Последний раз редактировалось Dima-91; 11.08.2015 в 20:20.
Dima-91 вне форума Ответить с цитированием
Старый 11.08.2015, 20:28   #6
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Полностью удалите функцию Button1Click с .срр и .h и пересоберите проект. Дальше просто дважды нажмите на кнопку в редакторе форм (или же можно выделить кнопку и перейти во вкладку события кнопки, там 2 раза левой кнопкой мыши по полю, которая напротив OnClick), и функция должна корректно работать.

Цитата:
Сообщение от Dima-91 Посмотреть сообщение
Код:
//imToolBar->Checked = ! imToolBar->Checked;//E2451 Undefined symbol 'imToolBar'
Что такое imToolBar, и где он объявлен?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 11.08.2015 в 20:34.
Krasiosoft вне форума Ответить с цитированием
Старый 11.08.2015, 20:34   #7
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Спасибо осталось узнать как в ToolBar1 сделать дополнительные надписи в менеджере проектов, если я не ошибаюсь.
файл/параметр/справка
Dima-91 вне форума Ответить с цитированием
Старый 11.08.2015, 20:46   #8
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

ToolBar это не совсем то, а добавлять кнопки в него можно нажав правой кнопкой мыши по нему в редакторе форм и там "New Button" или "New Separator".

Вам наверно нужен TMainMenu.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 11.08.2015 в 21:04.
Krasiosoft вне форума Ответить с цитированием
Старый 11.08.2015, 21:10   #9
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Кнопки есть. Возможно лучше использовать ComboBox только как стрелочки убрать... Или ListBox со списком в низ.
Dima-91 вне форума Ответить с цитированием
Старый 11.08.2015, 21:44   #10
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

А что Вы хотите сделать?

Если панель меню с выпадающими списками (Файл, Правка, Сервис, Справка и т.п.), то делайте это с помощью TMainMenu.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 12.08.2015 в 00:55.
Krasiosoft вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поле типа "Счетчик" с размером "Код репликации" Maks1978 Microsoft Office Access 1 23.09.2014 20:29
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
нужен код "похожие статьи" для HOSTCMS - куплю готовый рабочий код для hostcms "похожие новости" hplight WordPress и другие CMS 0 26.03.2012 16:57
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04