Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перетаскивание файлов мышью, код из книги 
:(
    Опции темы
Rekah
Дата 17.9.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.7.2007

Репутация: нет
Всего: нет



Все добрый день.
У меня непонятка в коде из книги. В книге сказано создать вторую форму, назвать ее ChildForm.
Мне как-то надо включать его в основной код? 
Вобщем выдает ошибку и некомпилица:

MainForm.cpp
Код

#include <vcl.h>
#pragma hdrstop

#include "MainForm.h"

#include "ChildForm.h"
#include "ChildForm.cpp"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 DragAcceptFiles(Handle, True);
};


void __fastcall TForm1:: WMDropFiles(TWMDropFiles &message)
{
  AnsiString FileName;
  FileName.SetLength(MAX_PATH);
  int Count = DragQueryFile((HDROP) message.Drop,
                             0xFFFFFFFF, NULL, MAX_PATH);

  for(int index=0; index<Count; ++index)
{
   FileName.SetLength(DragQueryFile((HDROP) message.Drop,
                                    index, FileName.c_str(), MAX_PATH)
                     );

   if(UpperCase(ExtractFileExt(FileName))==".TXT" ||
      UpperCase(ExtractFileExt(FileName))==".RTF")
   {
    TForm2 *Viewer = new TForm2(Application);
    Viewer->Caption  =FileName;
    Viewer->RichEdit1->Lines->LoadFromFile(FileName);
    Viewer->Show();
   }
 }
 DragFinish((HDROP) message.Drop);

};


MainForm.h
Код

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

#ifndef MainFormH
#define MainFormH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>


//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
 void __fastcall FormCreate(TObject *Sender);

private:    // User declarations
void __fastcall TForm1:: WMDropFiles(TWMDropFiles &message);


public:        // User declarations
        __fastcall TForm1(TComponent* Owner);
      BEGIN_MESSAGE_MAP
       MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WMDropFiles)
      END_MESSAGE_MAP(TForm);

};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif







PM MAIL   Вверх
Lazin
Дата 17.9.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



cpp файл не надо подключать - это дикость

Добавлено через 3 минуты
прежде чем лезть в GUI нужно поучиться на консоли, написать свои велосипеды, вроде списка, динамического массива итд, а потом уже ставить на комп продукцию фирмы Borland и читать Архангельского.
PM MAIL Skype GTalk   Вверх
Mihhail
Дата 17.9.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 13.9.2007

Репутация: нет
Всего: 9



Цитата(Rekah @  17.9.2007,  19:37 Найти цитируемый пост)
   if(UpperCase(ExtractFileExt(FileName))==".TXT" ||
          UpperCase(ExtractFileExt(FileName))==".RTF") { 
    TForm2 *Viewer = new TForm2(Application);
    Viewer->Caption  =FileName;
    Viewer->RichEdit1->Lines->LoadFromFile(FileName);
    Viewer->Show();
   }

Здесь в цикле создаётся несколько объектов(окон) TForm2, следовательно должно быть столько же и указателей. Необходимо объявить массив указателей до цикла for - TForm2 *Viewer[Count];

PM MAIL WWW   Вверх
Rekah
Дата 17.9.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.7.2007

Репутация: нет
Всего: нет



Цитата

Необходимо объявить массив указателей до цикла for - TForm2 *Viewer[Count];

Ясно, сейчас исправлю.

Добавлено через 13 минут и 57 секунд
У меня код стал компилиться, после того как я убрал из заголовочного файла void __fastcall FormCreate(TObject *Sender);, но не знаю как подключить правильно вторую форму к проекту?
PM MAIL   Вверх
Lazin
Дата 18.9.2007, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



Сеачала нужно её создать: меню Faile->New, затем в мастере выбрать форму.
затем подключить заголовочный файл:
#include "ChildForm.h"
потом можно использовать

Код

TChildForm* f = new TChildForm(this);
f->Parent = this;
f->Show();


PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.