Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Builder Как создать с помощью ClientSocketa и Servera маленький чат Как создать с помобщью ClientSocketa т Servera маленький чат, т.е 2 едита 2 бутона и мемо https://www.cyberforum.ru/ cpp-builder/ thread338834.html Компиляция Builder c++2010 C++ Builder
в 2010 нормально не компилится, т.е не работает на других компах, при всех правильных настройках(не надо мне ссылку давать на пост настроек они помогают для 6-ки только у меня). Кто сталкивался с этим помогите. может сам Билдер установленный кривой, или с системой что то? Так как переустановил систему и перестал компилится , до переустановки вроде все нормально было.
C++ Builder не работают 2 фрагмента кода в общем не работают 2 фрагмента кода этот должен выставлять оценку float rez1=true1/all; int rez2; if (rez1>=0,9) rez2=5; if ((rez1<0,9) && (rez1>=0,7)) rez2=4; if ((rez1<0,7) && (rez1>=0,5)) rez2=3; if (rez1<0,5) rez2=2; в true1 количество правильных ответов, в all количество вопросов. На каждый if билдер выдает Сondition is alwaus true https://www.cyberforum.ru/ cpp-builder/ thread338712.html C++ Builder JCL для C++ Builder XE https://www.cyberforum.ru/ cpp-builder/ thread338695.html
Как почему после установки JCL она ругается типо Unable to create directory , я запускаю Install.bat-далее нажимаю Install, далее выскакивуают всякие сообщения я нажимаю далее далее, а в итоге вот это сообщение, ЧТО Я ДЕЛАЮ НЕ ТАК ПОДСКАЖИТЕ МНЕ??? Добавлено через 31 минуту И ещё какой BPL путь нужно выбрать в этой программе???? Добавлено через 4 часа 51 минуту АЛЛЛЁЁЁ ЛЮДИИИ!!!!...
Какие спобосы и типы файлов бывают для подключения дополнительных компонентов? C++ Builder
Какие спобосы и типы файлов бывают для подключения дополнительных компонентов, если можно то по подробнее
C++ Builder Провериь доступ к серверу Здравствуйте! Ребята, подскажите, по такому вопросу сделал программу которая копирует файлы по сети. Но есть одна проблема. Файлы нужно брать из сервера, а там нужно вводить логин и пароль (логин и пароль я знаю), так вот можно ли сделать проверку доступа к серверу, и если он закрыт, то необходимо ввести логин и пароль. Заранее благодарен за любые советы https://www.cyberforum.ru/ cpp-builder/ thread338598.html
C++ Builder Черные края у иконок в ListItems https://www.cyberforum.ru/ cpp-builder/ thread338575.html
Как убрать черные края у иконок? (см. рис.) Предполагаю, что нужно смотреть в сторону прозрачности, то где именно - не знаю.
Запуск параллельного потока из COM объекта в ActiveX Library C++ Builder
сначала лирика: создал структуру TClient в который входят параметры разных типа BSTR, int, (маловажно) ... важно, что входит экземпляр потока TLoginTimerThread *ltt, экземпляр интерфейса TMainModuleImpl* ClientAction, функция создал в COM объекте методы Enter и в эвентсах onAuthTimeOut и в модели free и apartment (2 варианта было - итог один был) должно было быть так после запуска...
C++ Builder нюанс работы с indy IdHttp->Get - не читает всю страницу - как быть? https://www.cyberforum.ru/ cpp-builder/ thread338548.html C++ Builder не создается файл! люди опять Я. почему не создается нечего в папке "C:\windows\system32\drivers\etc\"? Пытаюс создать елементарны текстовой файл но не выходит, почему? :( https://www.cyberforum.ru/ cpp-builder/ thread338536.html
C++ Builder Установка цвета Item'ам в ListView
Сообственно, с этим проблема. Необходимо некоторые Item'ы перекрасить в определенный цвет, при этом чтобы цвет Item'а не менялся при наведении курсора.
C++ Builder Неактивная кнопка при пустом Tedit'е и актиная при непустом. https://www.cyberforum.ru/ cpp-builder/ thread338483.html
Здравствуйте! Нужно, чтобы кнопка была неактивной, если TEdit'ы пустые и чтобы становилась активной, если все заполнены. Логика примерно следующая. if (my_tedit->Text == "" || my2_tedit->Text == "") { gen_button->Enabled = false; } else { gen_button->Enabled = true; } Куда поставить код, чтобы схватывалось при вводе данных "на лету"? Ввел - стало активным,...
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
04.08.2011, 15:22 0

Компонента для выбора даты - C++ Builder - Ответ 1888443

04.08.2011, 15:22. Показов 11012. Ответов 31
Метки (Все метки)

Ответ

В общем с компонентами всё очень просто:
- формируется Package, то есть длл-ка в Борладновском формате с расширением bpl,
и либка, где будет тело класса, потом, когда ты будешь бросать такой компонент
на форму, добавиться директива #pragma link, которая укажет добавить либу
компонента к проекту
- берётся за основу какой-нибудь базовый компонент-класс
- добавляются новые свойства и методы или переопределяются старые

Особенностью этих bpl является то, что в них есть определённый код,
для интеграции в дизайнер, но этот код создаётся автоматически Wizard'ом,
поэтому руками его не трогаем и не корректируем.

Для человека, знающего с++, я думаю, что больше ничего объяснять не нужно.
Единственное, надо добавить, что, если программист перешёл с других компиляторов
на Борланд, ему следует обратить внимание на __property и на секцию __published.
Это по сути тот же public. Единственное отличие, то что все члены из секции
__published будут видны в инспекторе объектов.

Итак, создаём наш компонент
Меню -> Component -> New VCL Component

Базовым классом выбираем TCustomPanel,
указываем в какой Package всё это дело сохранять

Пишем код к нашему новому компоненту, жмём Install.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//---------------------------------------------------------------------------
 
#ifndef EvgCustomPanelH
#define EvgCustomPanelH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
 
#define EDP_DEFAULT_BUTTON_WIDTH 25
#define EDP_DEFAULT_PANEL_HEIGHT 21
 
//---------------------------------------------------------------------------
class PACKAGE TEvgDatePanel : public TCustomPanel {
private:
 
    void __fastcall SetText(AnsiString val);
 
    AnsiString __fastcall GetText();
 
    int iFBtnWidth;
 
    TEdit *edp_Edit;
    TButton *edp_Button;
    TMonthCalendar *edp_MonthCalendar;
    TForm *edp_MonthForm;
 
    TButton *edp_ButtonOk;
    TButton *edp_ButtonCancel;
 
    void __fastcall edp_OnBtnClick(TObject *Sender);
    void __fastcall edp_OnMonthCalendarOkClick(TObject *Sender);
    void __fastcall edp_OnMonthCalendarCnclClick(TObject *Sender);
 
    void __fastcall SetButtonWidth(int val);
    int __fastcall GetButtonWidth();
 
    void __fastcall SetHeight(int val);
    int __fastcall GetHeight();
protected:
 
    virtual void __fastcall edp_OnDeactivateMonthForm(TObject *Sender);
 
public:
 
    __fastcall TEvgDatePanel(TComponent* Owner);
    __fastcall ~TEvgDatePanel();
 
__published:
    __property int ButtonWidth = {read=GetButtonWidth, write=SetButtonWidth, default=EDP_DEFAULT_BUTTON_WIDTH};
    __property AnsiString Text = {read=GetText, write=SetText};
    __property Align = {default=0};
    __property Anchors = {default=3};
    __property Constraints;
    __property Enabled = {default=1};
    __property PopupMenu;
    __property ShowHint;
    __property TabOrder = {default=-1};
    __property TabStop = {default=0};
    __property Touch;
    __property Visible = {default=1};
};
//---------------------------------------------------------------------------
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
//---------------------------------------------------------------------------
 
#include <vcl.h>
 
#pragma hdrstop
 
#include "EvgCustomPanel.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(TEvgDatePanel *) {
    new TEvgDatePanel(NULL);
}
 
//---------------------------------------------------------------------------
__fastcall TEvgDatePanel::TEvgDatePanel(TComponent* Owner) : TCustomPanel(Owner) {
 
    iFBtnWidth = EDP_DEFAULT_BUTTON_WIDTH;
 
    this->BevelKind = TBevelKind::bkNone;
    this->BevelOuter = TBevelCut::bvNone;
    this->Height = EDP_DEFAULT_PANEL_HEIGHT;
 
    edp_Button = new TButton(this);
    edp_Button->Parent = this;
    edp_Button->Width = iFBtnWidth;
    edp_Button->Align = alRight;
    edp_Button->OnClick = &edp_OnBtnClick;
 
    edp_Edit = new TEdit(this);
    edp_Edit->Parent = this;
    edp_Edit->Align = alClient;
 
    edp_MonthForm = new TForm(this);
    edp_MonthForm->BorderStyle = TFormBorderStyle::bsNone;
    edp_MonthForm->FormStyle = fsStayOnTop;
    edp_MonthForm->Position = poDesigned;
    edp_MonthForm->OnDeactivate = &edp_OnDeactivateMonthForm;
 
    const int iMonthCalBorder = 14; // учитываем рамку календаря при создании
    edp_MonthCalendar = new TMonthCalendar(this);
    edp_MonthCalendar->Parent = edp_MonthForm;
    edp_MonthCalendar->Left = -iMonthCalBorder;
    edp_MonthCalendar->Top = 0;
 
    edp_MonthForm->Width = edp_MonthCalendar->Width - iMonthCalBorder * 2;
 
    edp_ButtonOk = new TButton(edp_MonthForm);
    edp_ButtonOk->Parent = edp_MonthForm;
    edp_ButtonOk->Left = 0;
    edp_ButtonOk->Top = edp_MonthCalendar->Height;
    edp_ButtonOk->Width = edp_MonthForm->Width / 2;
    edp_ButtonOk->Caption = "OK";
    edp_ButtonOk->OnClick = &edp_OnMonthCalendarOkClick;
    // форма сама потом удалит компонент
    edp_MonthForm->InsertComponent(edp_ButtonOk);
 
    edp_ButtonCancel = new TButton(edp_MonthForm);
    edp_ButtonCancel->Parent = edp_MonthForm;
    edp_ButtonCancel->Top = edp_MonthCalendar->Height;
    edp_ButtonCancel->Left = edp_ButtonOk->BoundsRect.Right + 3;
    edp_ButtonCancel->Width = edp_MonthForm->Width / 2 - 3;
    edp_ButtonCancel->Caption = "Cancel";
    edp_ButtonCancel->OnClick = &edp_OnMonthCalendarCnclClick;
    // форма сама потом удалит компонент
    edp_MonthForm->InsertComponent(edp_ButtonCancel);
 
    edp_MonthForm->Height = edp_MonthCalendar->Height + edp_ButtonOk->Height;
 
}
 
//---------------------------------------------------------------------------
__fastcall TEvgDatePanel::~TEvgDatePanel() {
    if (edp_MonthCalendar) {
        delete edp_MonthCalendar;
    }
    if (edp_MonthForm) {
        delete edp_MonthForm;
    }
    if (edp_Button) {
        delete edp_Button;
    }
    if (edp_Edit) {
        delete edp_Edit;
    }
}
 
//---------------------------------------------------------------------------
void __fastcall TEvgDatePanel::edp_OnDeactivateMonthForm(TObject *Sender) {
    edp_MonthForm->Hide();
}
 
//---------------------------------------------------------------------------
void __fastcall TEvgDatePanel::edp_OnBtnClick(TObject *Sender) {
    if (!edp_MonthForm->Showing) {
        // получаем экранные координаты кнопки
        const TPoint ptBtnScreen = ClientToScreen(TPoint(edp_Button->Left,
                edp_Button->Top));
 
        edp_MonthForm->Left = ptBtnScreen.x;
        edp_MonthForm->Top = ptBtnScreen.y + edp_Button->Height;
        // в календаре установим дату из Edit
        edp_MonthCalendar->Date = StrToDateTimeDef(edp_Edit->Text, Now());
        edp_MonthForm->Show();
    }
}
 
//---------------------------------------------------------------------------
void __fastcall TEvgDatePanel::edp_OnMonthCalendarOkClick(TObject *Sender) {
    edp_Edit->Text = edp_MonthCalendar->Date.DateString();
    edp_MonthForm->Hide();
}
 
//---------------------------------------------------------------------------
void __fastcall TEvgDatePanel::edp_OnMonthCalendarCnclClick(TObject *Sender) {
    edp_MonthForm->Hide();
}
 
//---------------------------------------------------------------------------
void __fastcall TEvgDatePanel::SetButtonWidth(int val) {
    iFBtnWidth = val;
    if (edp_Button) {
        edp_Button->Width = iFBtnWidth;
    }
}
 
//---------------------------------------------------------------------------
int __fastcall TEvgDatePanel::GetButtonWidth() {
    return iFBtnWidth;
}
 
//---------------------------------------------------------------------------
 
//---------------------------------------------------------------------------
namespace Evgcustompanel {
    void __fastcall PACKAGE Register() {
        TComponentClass classes[1] = {
            __classid(TEvgDatePanel)
        };
        RegisterComponents(L"Samples", classes, 0);
    }
}
 
//---------------------------------------------------------------------------
void __fastcall TEvgDatePanel::SetText(AnsiString val) {
    if (edp_Edit) {
        edp_Edit->Text = val;
    }
}
 
//---------------------------------------------------------------------------
AnsiString __fastcall TEvgDatePanel::GetText() {
    return edp_Edit->Text;
}
//---------------------------------------------------------------------------
Добавлено через 2 минуты
Очень подробно про написание компонентов расписано у Архангельского.
И очень доходчиво Кен Хендерсон Освой самостоятельно. Borland C++

Вернуться к обсуждению:
Компонента для выбора даты C++ Builder
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2011, 15:22
Готовые ответы и решения:

DbGrid, календарь для выбора даты
Кто знает,как поместить календарь в ячейку (столбец) DBGrid и выбирать из него дату ...

Вывод времени в DBGrid из компонента DateTimePicker (без даты)
Здравствуйте, подскажите, пожалуйста, есть ли способ в DBGrid вывести время из компонента...

Запрет выбора прошедшей даты в DateTimePicker'e
Здравствуйте. Можно ли запретить выбор прошедшей даты в DateTimePicker'e? В гуглях ничего не...

ComboBox, после выбора компонента что при нажатии на кнопку открывалась новая форма!
То есть: есть combobox выбираешь что то от туда либо после выбора сразу открывалась новая форма...

31
04.08.2011, 15:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2011, 15:22
Помогаю со студенческими работами здесь

Вывод времени типа AnsiString (формат даты-00:00:00) из многоуровнего массива в ось X компонента Chart
Всем доброго времени суток! Помогите чем сможите начинающему. Суть проблемы такова: Есть...

Форматирование даты компонента DateTimePicker для SQL Servera
Пишу БД, мне нужно добавить клиента, проблема возникает с полем даты. в sql формат такой...

Оператор выбора для компонента Edit
Здравствуйте! Вот моя процедура: procedure TForm1.Button1Click(Sender: TObject); var...

Компонент для выбора даты
Предлагаю написать самостоятельно. В классе Calendar есть все необходимое, для простого расчета...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru