Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Builder pdf, djvu подскажите библиотеки для работы с форматами pdf и djvu https://www.cyberforum.ru/ cpp-builder/ thread338098.html Автоматические оси графика C++ Builder
void __fastcall TMainForm::CheckBox1Click(TObject *Sender) { if (CheckBox1->Checked) MainForm->View->Axes->Left->SetMinMax(ScaleFirstGraphDown,ScaleFirstGraphUp); else { MainForm->View->Axes->Left->Automatic; MainForm->View->Axes->Left->AutomaticMaximum; MainForm->View->Axes->Left->AutomaticMinimum; } }
C++ Builder Quick report для C++ Builder 2010 Где можно скачать Quick report для C++ Builder 2010 ? https://www.cyberforum.ru/ cpp-builder/ thread337996.html C++ Builder Gif в RAD https://www.cyberforum.ru/ cpp-builder/ thread337969.html
Почему файл GIf не запускается в компоненте Image???
C++ Builder Сохранение в Ini фаил стиля шрифта
как лучше сделать сохранение? Например есть: TopStringFont=Tahoma TopStringSize=8 TopStringStyle=
C++ Builder Циклическое подключение хедеров https://www.cyberforum.ru/ cpp-builder/ thread337917.html
Добрый день. Проблема такая: есть два хедера // Unit1.h #ifndef Unit1H #define Unit1H #include "Unit2.h" class c1 { c2* c2ptr; };
C++ Builder Картинка поверх картинки https://www.cyberforum.ru/ cpp-builder/ thread337803.html
Как поверх одной картинки загрузить другую картинку, юзая Bitmap? Добавлено через 26 минут Разобрался. Тему можно удалять
C++ Builder Какой приблизительно размер добавляемого компонента и влияет ли он на размер самой программы
Здравствуйте, меня интересует вопрос, когда создаешь какой нить компонент, какой приблизительно его размер и влияет ли он на размер самой программы, к примеру сколько весит компонент Image без картинки???
C++ Builder CppWebBrowser как подгрузить картинки https://www.cyberforum.ru/ cpp-builder/ thread337795.html
Доброе время суток. На форме есть CppWebBrowser, из Memo в него грузится страничка HTML, все работает но... хотелось бы загружать еще и картинки (дело в том что картинки хранятся в базе данных, пока формат PARADOX 7)
C++ Builder Помогите с переводом https://www.cyberforum.ru/ cpp-builder/ thread337767.html
писал все время на MS Visual Studio, а тут надо на Builder 5.0 вот код в MSVS 2010 #include<iostream> #include<fstream> #include<io.h> # define N 16 using namespace std; void main()
C++ Builder Умножение матриц
Здравствуйте,пишу программу ,которая выполняет действия над матрицами вот код #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;
C++ Builder Скачка файла с интернета Добрый день. Задача следующая: Необходимо по протоколу HTTP скачать и сохранить текстовый файл, для дальнейшей с ним работы. Ссылка на него известна и не меняется, просто сам файл время от времени обновляется (обновление в программе будет происходить по запросу пользователя). Как мне это реализовать? https://www.cyberforum.ru/ cpp-builder/ thread337726.html
0 / 0 / 0
Регистрация: 06.03.2014
Сообщений: 13
17.04.2016, 08:53 0

Использование TObject *Sender в своих функциях - C++ Builder - Ответ 9031358

17.04.2016, 08:53. Показов 26733. Ответов 8
Метки (Все метки)

Ответ

если вы хотите использовать в функции свойства, которые наследуются от TComponent то нет смысла извращать и передавать параметром TObject. лучше параметром TComponent и отправлять:
C++
1
void func(TComponent *Obj)
это избавит от ошибок приведения типа как допущена выше:
C++
1
Form1->Caption = Obj->Name;
то есть передавать параметром лучше тот класс, который:
1. ближайший к TObject в иерархии классов.
2. содержит в себе все требуемые функции свойства\методы.
например нам нужно создать функцию, которая будет двигать КНОПКУ по форме(я пишу на Delphi. для Builder могу ошибаться с синтаксисом). можно написать такую функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
void SetObjectPosition(TObject *myButton; int X; int Y)
{
  TControl *AControl = dynamic_cast<TControl *>(myButton);
  if (AControl ) 
  {
    AControl->Left = X;
    AControl->Top = Y;
  }
    else 
      throw Exception("Error! Got empty param or <" + Obj->ClassName() +" instead of <TComponent!>");
}
чуть правильнее будет такая:
C++
1
2
3
4
5
6
7
8
9
10
11
void SetButtonPosition(TButton *myButton; int X; int Y)
{
  if (myButton) 
  {
    myButton->Left = X;
    myButton->Top = Y;
  }
    else 
      throw Exception("Error! Got empty param in SetButtonPosition");
}
}
но тут нужна проверка на существование нужных нам свойств у объекта и название не соответствует содержанию(для 1й функции. ошибку во второй опишу позже). поэтому лучше эту функцию переписать так:
C++
1
2
3
4
5
6
7
8
9
10
11
void SetControlPosition(TControl *myControl; int X; int Y)
{
  if (myControl) 
  {
    myControl->Left = X;
    myControl->Top = Y;
  }
    else 
      throw Exception("Error! Got empty param in SetObjectPosition");
}
}
никаких dynamic_cast не нужно делать и если когда-то нам понадобится добавить подобную возможность другим объектам(некнопкам), наша функция останется красивым решением. если бы мы создали нашу функцию с именем SetButtonPosition(требовалось же двигать только кнопку), при добавлении возможности двигать НЕКНОПКИ пришлось бы переименовывать функцию либо писать подобный код:
C++
1
SetButtonPosition(myPanel, 0, 0)
согласитесь выглядит нелепо передавать компонент Panel в функцию с Button в названии.
ПЫ. СЫ имею небольшой опыт промышленного программирования и часто подобные ляпы сбивают с толку

Вернуться к обсуждению:
Использование TObject *Sender в своих функциях C++ Builder
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2016, 08:53
Готовые ответы и решения:

Откуда берется FormPaint(TObject *Sender)?
Здравствуйте! Мы только начали изучать графику, и я никак не могу разобраться откуда берется во...

Вызывается 2 раза void __fastcall TForm2::ListBox1Click(TObject *Sender)
Помогите. В чём дело? Функция void __fastcall TForm2::ListBox1Click(TObject *Sender) сробатывает...

Обработка параметром Sender as TObject
Подскажите как отладить код с параметром Sender такого типа : TForm1 = class(TForm) Shape1:...

procedure TForm1.Edit1Change(Sender: TObject);
edit должен увеличиваться ,если в него вводят больше букв,чем он однавременно может отобразить...

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

Procedure TForm1.Button3Click(Sender: TObject);
procedure TForm1.Button3Click(Sender: TObject); begin tab1.cells:=Edit1.text;...

Как создать процедуру RadioButtonClick(Sender: TObject)
общая процедура— RadioButtonClick используется одновременно для RadioButton1, RadioButton2,...

Ошибка в строке procedure Button1Click(Sender: TObject);
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Показывает ошибку в procedure Form2Button1Click(Sender: TObject);
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

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