Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 337

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!Подскажите пожайлуста, как привязать класс к интерфейсной части программы?

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Button1: TButton;
  12. Label1: TLabel;
  13. Label2: TLabel;
  14. Label3: TLabel;
  15. Edit1: TEdit;
  16. Edit2: TEdit;
  17. Edit3: TEdit;
  18. Label4: TLabel;
  19. Label5: TLabel;
  20. ComboBox1: TComboBox;
  21. Label6: TLabel;
  22. Label7: TLabel;
  23. Button2: TButton;
  24. procedure Button1Click(Sender: TObject);
  25. private
  26. { Private declarations }
  27. public
  28. { Public declarations }
  29. end;
  30.  
  31. type
  32.  
  33. T3Res=class
  34. Private
  35. nam1:string[5];
  36. nam2:string;
  37. nam3:string;
  38. nom1:integer;
  39. nom2:integer;
  40. nom3:integer;
  41. Public
  42. constructor Create(name1,name2,name3:string; nomin1,nomin2,nomin3 :integer);
  43. Function Info:string;
  44. function VelObshSoprot:real; virtual; abstract;
  45. end;
  46.  
  47. TPosl=class(T3Res)
  48. private
  49. Function VelObshSoprot:real; override;
  50. end;
  51.  
  52. TParall=class(T3Res)
  53. private
  54. Function VelObshSoprot:real; override;
  55. end;
  56.  
  57. TSmesh=class(T3Res)
  58. private
  59. Function VelObshSoprot:real; override;
  60. end;
  61.  
  62. var
  63. Form1: TForm1;
  64. Parametrs: T3Res;
  65. s1,s2,s3:real;
  66.  
  67. implementation
  68.  
  69. {$R *.dfm}
  70.  
  71. constructor T3Res.Create;
  72. begin
  73. nam1:=name1;
  74. nam2:=name2;
  75. nam3:=name3;
  76. nom1:=nomin1;
  77. nom2:=nomin2;
  78. nom3:=nomin3;
  79. end;
  80.  
  81. Function T3Res.Info:string;
  82. begin
  83. result:=nam1+IntToStr(nom1)+#13+nam2+IntToStr(nom2)+#13+nam3+IntToStr(nom3);
  84. end;
  85.  
  86. Function TPosl.VelObshSoprot:real;
  87. begin
  88. result:=nom1+nom2+nom3;
  89. end;
  90.  
  91. Function TParall.VelObshSoprot:real;
  92. begin
  93. result:=(nom1+nom2+nom3)/(nom1*nom2*nom3);
  94. end;
  95.  
  96. Function TSmesh.VelObshSoprot:real;
  97. begin
  98. result:=((nom1+nom2)/(nom1*nom2))+nom3;
  99. end;
  100.  
  101.  
  102. procedure TForm1.Button1Click(Sender: TObject);
  103. begin
  104. try
  105. Parametrs:=T3Res.Create(Label1.Caption,Label2.Caption,Label3.Caption,strtoint(Edit1.Text),
  106. strtoint(Edit2.Text),strtoint(Edit3.Text));
  107.  
  108.  
  109.  
  110. end;
  111.  
  112. end.
  113.  


Milady Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Milady (статус: Посетитель)
Вопрос отправлен: 22 января 2009, 19:44
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Ученый

Здравствуйте, Milady! просто для клика кнопки пишите:


if Combobox1.ItemIndex=0 then {выполнить такуюто функцию}
lif Combobox1.ItemIndex=1 then {выполнить другую функцию функцию}
if Combobox1.ItemIndex=2 then {выполнить третью функцию функцию}

Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 22 января 2009, 20:26

Ответ #2. Отвечает эксперт: min@y™

Люблю делиться знаниями!
Держи примерчик (в прицепе). Жду респектов :)
Я там твои классы перенёс в отдельный модуль и хорошенько обработал напильником. Как говорится, найди 10 отличий! :)
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 22 января 2009, 21:26
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 14; последнее сообщение — 22 января 2009, 21:08; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 22 января 2009, 20:01 [#1]:

Цитата:


Подскажите пожайлуста, как привязать класс к интерфейсной части программы?


Чото я не понял. Что это значит?
Объясни, чего ты хочешь, поподробнее. Что такое "интерфейсная часть программы" в твоей интерпретации?

Включить телепатор пробовать пока не буду (пива попил, напрягаться не хочу). Жду комментов, пока в онлайне. Если хошь - заползай ко мне в аську.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ученый

Ученый (статус: 8-ой класс), 22 января 2009, 20:05 [#2]:

Что-то по мимо вопроса я еще не понял для чего прикреплен ехе'шник....
Milady

Milady (статус: Посетитель), 22 января 2009, 20:08 [#3]:

ну чтоб интерфейс посмотреть...........
Milady

Milady (статус: Посетитель), 22 января 2009, 20:11 [#4]:

Проблема в том, что я написала 3 класса, теперь при нажатии на кнопку в зависимости от выбранного элемента в ComboBox должны вызываться функции этих классов. (т.е. Если выбрано паралельное соединение, то расчет общего сопротивления должен производиться функцией TParall.VelObshSoprot).Вот. Помогите пожайлуста чем сможите, а то самостоятельно разобраться не получается
Ученый

Ученый (статус: 8-ой класс), 22 января 2009, 20:18 [#5]:

ну почемубы не использывать ветвление? если паралельное соединение, то выполнить такую-то функцию...
Milady

Milady (статус: Посетитель), 22 января 2009, 20:19 [#6]:

я просто не понимаю как это реализовать, я понимаю что ветвления, и логику представляю, как код написать не знаю
min@y™

min@y™ (статус: Доктор наук), 22 января 2009, 20:36 [#7]:

Ветвления писать не надо.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Milady

Milady (статус: Посетитель), 22 января 2009, 20:51 [#8]:

[Hint] Unit1.pas(54): Overriding virtual method 'TParall.VelObshSoprot' has lower visibility (private) than base class 'T3Res' (public)

что это такое?
Ученый

Ученый (статус: 8-ой класс), 22 января 2009, 20:53 [#9]:

Может попробывать в if Combobox1.ItemIndex=0 then написать вместо TParall.VelObshSoprot просто TParall....
Milady

Milady (статус: Посетитель), 22 января 2009, 20:56 [#10]:

Нет, он пишет ошибку
[Error] Unit1.pas(107): Statement expected, but expression of type 'Class reference' found
min@y™

min@y™ (статус: Доктор наук), 22 января 2009, 20:56 [#11]:

Цитата:


[Hint] Unit1.pas(54): Overriding virtual method 'TParall.VelObshSoprot' has lower visibility (private) than base class 'T3Res' (public)


Ну правильно, они ж у тебя private, а надо public.
Пример почти готов.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Milady

Milady (статус: Посетитель), 22 января 2009, 20:57 [#12]:

спасибо
Milady

Milady (статус: Посетитель), 22 января 2009, 21:00 [#13]:

а что именно в public?
min@y™

min@y™ (статус: Доктор наук), 22 января 2009, 21:08 [#14]:

Цитата:


а что именно в public?

Методы VelObshSoprot() наследников. Посмотри хэлп по этому хинту компилятора.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 20 февраля 2020, 12:34
Выполнено за 0.04 сек.
Рейтинг@Mail.ru