Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TIntegerEdit, help 
:(
    Опции темы
Jackinua
Дата 16.7.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток, у меня такая проблема: дали проект на CBuilder 6, не могу скомпилировать его так как выдает ошибку что нет компонента TIntegerEdit, долго искал в поисковиках,нигде не встретил, может ктото его испоьзовал, подскажите где его взять и установить на CBuilder 6 
PM MAIL   Вверх
petlyura
Дата 16.7.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

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



Это может быть компонент, написанный пользователем и скомпиленный в библиотеку. Хотя, может я не прав.
Замени его TEditом и добавь проверки на ввод целых чисел, а лучше напиши свой компонент
PM MAIL   Вверх
Jackinua
Дата 16.7.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я на 90 % уверен что компонент он сам не писал  smile и похожее я встречал но для Delphi 

http://www.codebot.org/delphi/
PM MAIL   Вверх
XPyCT
Дата 16.7.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Замени его к чертям обычным Edit

а ввод/ вывод из него значения осуществляй путем коныертации 

1.ввод
Код

int cNumb=512;
 Edit1->Text=IntToStr(cNumb);


2.Вывод из едита

Код

int cResultNumb;
cResultNumb=StrToInt(Edit1->Text);

ShowMessage(IntToStr(cResultNumb));//Проверка что ввелось


к стати своиство Edit1->Name можешь поменять на IntegerEdit

а можно написать функцию которая делала бы все это!

я не давно писал компанент по учебнику именно едит


автор Никита культин

Главный модуль NkEdit.cpp
Код

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

#include <vcl.h>

#pragma hdrstop

#include "NkEdit.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//

static inline void ValidCtrCheck(TNkEdit *)
{
    new TNkEdit(NULL);
}
//------------------Крнструктор----------------------------------------------
__fastcall TNkEdit::TNkEdit(TComponent* Owner)
    : TEdit(Owner)
{
//Конструктор имеет прямой доступ к полям компанентов
Text = "0";
FMin = 0;
FMax = 100;
FEnableFloat = true;
}
//---------------------------------------------------------------------------
namespace Nkedit
{
    void __fastcall PACKAGE Register()
    {
        TComponentClass classes[1] = {__classid(TNkEdit)};
        RegisterComponents("MyPage", classes, 0);
    }
}
//---------------------------------------------------------------------------
void __fastcall TNkEdit::SetNumb(float n)
{
    Text = FloatToStr(n);
}
//---------------------------------------------------------------------------
//Возвращает значение, соответсвующее строке,
//Которая находится в поле редактирования
float __fastcall TNkEdit::GetNumb(void)
{
    if(Text.Length())
       return StrToFloat(Text);

    else return 0;
}
//---------------------------------------------------------------------------
//Функция обработки события KeyPress в поле компанента NkEdit
void __fastcall TNkEdit::KeyPress(char &Key)
{
    //Коды запрещенных клавиш заменим нулем,
    //Эти символы в поле редактирования не появятся
    switch (Key)
        {
            case '0' :
            case '1' :
            case '2' :
            case '3' :
            case '4' :
            case '5' :
            case '6' :
            case '7' :
            case '8' :
            case '9' :  break;

            case '.' :
            case ',' :
                    Key=DecimalSeparator;

          if(Text.Pos(DecimalSeparator) || (!FEnableFloat))
           Key = 0;
         break;

        case '-' : //Знак минус

                  if(Text.Length()|| (FMin >= 0))

                 //Минус уже введен или  FMin >= 0
                  Key = 0;
                  break;

        case VK_BACK : // клавиша <Backspase>
                  break;


        default : //остальные клавиши запрещены

                Key = 0;
        }


        if((Key >='0') && (Key <= '9'))
         {
         /*Прверим, не приведет ли ввод очередной цифры
         к выходу числа за границы диапазона.
         Если да то заменим введенное число на максимальное
         или минимальное  */

               AnsiString st = Text + Key;
               if(StrToFloat(st) <FMin)
               {
               Key=0;
               Text = FloatToStr(FMin);
               }
               if(StrToFloat(st) >FMax)
                {
                Key = 0;
                Text = FloatToStr(FMax);
                }

         }

         //Вызывать Функцию обработки KeyPress  базового класса

         TEdit::KeyPress(Key);

    }
//---------------------------------------------------------------------------
//Устанавливает значение поля FMin
bool __fastcall TNkEdit::SetMin(float min)
{
    if(min >FMax) return false;
       FMin=min;
       return true;
}
//---------------------------------------------------------------------------
//Устанавливает значение поля FMax
bool __fastcall TNkEdit::SetMax(float max)
{
    if(max < FMin) return false;
       FMax =max;
       return true;
}


заголовочный файл NkEdit.h

Код

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

#ifndef NkEditH
#define NkEditH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TNkEdit : public TEdit
{
private:
       bool FEnableFloat;  //Разрешен ввод дробного числа
       float FMin;         //Нижняя граница
       float FMax;         //Верхняя граница
       /*Функция SetNumb используется для изменения
                   содержимого поля редактирования*/
       void __fastcall SetNumb(float n);
           /*Функция GetNumb используется для доступа к
                    полю редактирования*/
       float __fastcall GetNumb(void);

        /*Эти функции обепечивают изменение
                             границ диапазона */

       bool __fastcall SetMin(float min);
       bool __fastcall SetMax(float max);


protected:
public:
    __fastcall TNkEdit(TComponent* Owner); //Конструктор

    /*Свойство Numb должно быть доступно только во время
      работы программы. Поэтому оно обьявленно в секции public.
      Если надо, чтобы свойство было доступно во время разрабатки формы
      и его значение можно было задать в окне Object Inspector,
      то его обьевление нужно поместить в секцию published
    */

__property float Numb = {read = GetNumb}; //, write =SetNumb};

    //Функция обработки события KeyPress

   DYNAMIC void __fastcall KeyPress(char &key);



__published:
   //Обьявленные здесь свойства доступны в Object Inspector

   __property bool EnableFloat ={read = FEnableFloat,
                                write = FEnableFloat };
   __property float Min =  {read = FMin, write = SetMin };
                                
   __property float Max =  {read = FMax,  write = SetMax };
                                

};
//---------------------------------------------------------------------------
#endif



фаил главной формы unit1.cpp

Код

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

#include <vcl.h>
#pragma hdrstop
//#include "tk_.h"
#include "nkedit.cpp"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TNkEdit *NkEdit;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
NkEdit = new TNkEdit(Form1);
NkEdit->Parent=Form1;
NkEdit->Text="0";
NkEdit->Left=10;
NkEdit->Top=100;

 NkEdit->Min= -100;
 NkEdit->Max= 100;
 NkEdit->EnableFloat = true;


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



Заголовочный файл главной формы unit1.h

Код

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

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
private:    // User declarations
public:        // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


вот вам примерно тот едит о котором вы говорили! все эти файлы должны хранится в одном каталоге

PM MAIL Skype   Вверх
Jackinua
Дата 16.7.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все что я знаю про этот компонент так это то что он есть в программе и где какие свойства его использовали, но где он расположен и какие его имена использовались .... ведь его можно было в программе назвать по разному и использовать через это имя, в крайнем случае я его конечно заменю, но хотелось бы найти его *оригинал* чтоб отталкиваться от того что сделали, а не переписывать все.
PM MAIL   Вверх
XPyCT
Дата 16.7.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



это может быть еще и компонент сторонних разработчиков! например как альфа контролс и прочие!
сори ни чем далее помочь в решении этой проблемы не смогу
PM MAIL Skype   Вверх
petlyura
Дата 17.7.2008, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

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



Jackinua, тебе XPyCT дал ответ в виде TNkEdit. Сделай FEnableFloat = false; разберись с FMin и FMax, посмотри свойства твоего TIntegerEdit'а. Если есть какие-то навороты, добавь в функциональность TNKEdit'а. Да, и можешь заменить TNkEdit на TIntegerEdit, ну и названия св-в, методов, событий подменить, и таким образом добавив это к своей проге, больше ничего менять не надо будет. И пахло духами...

XPyCT - молодец! Развернуто, ясно
PM MAIL   Вверх
Jackinua
Дата 17.7.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спешу сообщить
Все, проблема решилась, нашелся старый разработчик идал эти модули
Если кому может пригодиться пишите [email protected], скину модули для инсталяции.
Всем спасибо за внимание, а вобще в связи с темпами прогресса ооп совет не изобретать велосипед ), если честно, поступил бы также, применяя фильтры, бонуп.
PM MAIL   Вверх
petlyura
Дата 17.7.2008, 13:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

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



Цитата(Jackinua @ 17.7.2008,  11:22)
Спешу сообщить
Все, проблема решилась...

Хорошо, что все хорошо заканчивается. Но для поколения Next (тем, кто будет читать эту тему): еще можно ограничить ввод данных лишь для integer'а
Код

 SetWindowLong(Edit1->Handle, GWL_STYLE, GetWindowLong(Edit1->Handle, GWL_STYLE) | ES_NUMBER);

PM MAIL   Вверх
XPyCT
Дата 17.7.2008, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
petlyura
 спс! я просто решил показать что такое то о чем он спрашивает!

ps: велосипед конечно же не изобретаем! но учить все это надо и знать как это делать! славо богу литературы хватает!
я сижу на множестве книг Архангельского и Культина!
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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