|
Вопрос # 2 337/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!Подскажите пожайлуста, как привязать класс к интерфейсной части программы?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- Button1: TButton;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Edit1: TEdit;
- Edit2: TEdit;
- Edit3: TEdit;
- Label4: TLabel;
- Label5: TLabel;
- ComboBox1: TComboBox;
- Label6: TLabel;
- Label7: TLabel;
- Button2: TButton;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- type
-
- T3Res=class
- Private
- nam1:string[5];
- nam2:string;
- nam3:string;
- nom1:integer;
- nom2:integer;
- nom3:integer;
- Public
- constructor Create(name1,name2,name3:string; nomin1,nomin2,nomin3 :integer);
- Function Info:string;
- function VelObshSoprot:real; virtual; abstract;
- end;
-
- TPosl=class(T3Res)
- private
- Function VelObshSoprot:real; override;
- end;
-
- TParall=class(T3Res)
- private
- Function VelObshSoprot:real; override;
- end;
-
- TSmesh=class(T3Res)
- private
- Function VelObshSoprot:real; override;
- end;
-
- var
- Form1: TForm1;
- Parametrs: T3Res;
- s1,s2,s3:real;
-
- implementation
-
- {$R *.dfm}
-
- constructor T3Res.Create;
- begin
- nam1:=name1;
- nam2:=name2;
- nam3:=name3;
- nom1:=nomin1;
- nom2:=nomin2;
- nom3:=nomin3;
- end;
-
- Function T3Res.Info:string;
- begin
- result:=nam1+IntToStr(nom1)+#13+nam2+IntToStr(nom2)+#13+nam3+IntToStr(nom3);
- end;
-
- Function TPosl.VelObshSoprot:real;
- begin
- result:=nom1+nom2+nom3;
- end;
-
- Function TParall.VelObshSoprot:real;
- begin
- result:=(nom1+nom2+nom3)/(nom1*nom2*nom3);
- end;
-
- Function TSmesh.VelObshSoprot:real;
- begin
- result:=((nom1+nom2)/(nom1*nom2))+nom3;
- end;
-
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- try
- Parametrs:=T3Res.Create(Label1.Caption,Label2.Caption,Label3.Caption,strtoint(Edit1.Text),
- strtoint(Edit2.Text),strtoint(Edit3.Text));
-
-
-
- end;
-
- end.
-
 |
Вопрос задала: 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™ (статус: Доктор наук), 22 января 2009, 20:01 [#1]:
Цитата:
Подскажите пожайлуста, как привязать класс к интерфейсной части программы?
Чото я не понял. Что это значит?
Объясни, чего ты хочешь, поподробнее. Что такое "интерфейсная часть программы" в твоей интерпретации?
Включить телепатор пробовать пока не буду (пива попил, напрягаться не хочу). Жду комментов, пока в онлайне. Если хошь - заползай ко мне в аську.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ученый (статус: 8-ой класс), 22 января 2009, 20:05 [#2]:
Что-то по мимо вопроса я еще не понял для чего прикреплен ехе'шник....
|
|
Milady (статус: Посетитель), 22 января 2009, 20:08 [#3]:
ну чтоб интерфейс посмотреть...........
|
|
Milady (статус: Посетитель), 22 января 2009, 20:11 [#4]:
Проблема в том, что я написала 3 класса, теперь при нажатии на кнопку в зависимости от выбранного элемента в ComboBox должны вызываться функции этих классов. (т.е. Если выбрано паралельное соединение, то расчет общего сопротивления должен производиться функцией TParall.VelObshSoprot).Вот. Помогите пожайлуста чем сможите, а то самостоятельно разобраться не получается
|
|
Ученый (статус: 8-ой класс), 22 января 2009, 20:18 [#5]:
ну почемубы не использывать ветвление? если паралельное соединение, то выполнить такую-то функцию...
|
|
Milady (статус: Посетитель), 22 января 2009, 20:19 [#6]:
я просто не понимаю как это реализовать, я понимаю что ветвления, и логику представляю, как код написать не знаю
|
|
min@y™ (статус: Доктор наук), 22 января 2009, 20:36 [#7]:
Ветвления писать не надо.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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 (статус: Посетитель), 22 января 2009, 20:56 [#10]:
Нет, он пишет ошибку
[Error] Unit1.pas(107): Statement expected, but expression of type 'Class reference' found
|
|
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 (статус: Посетитель), 22 января 2009, 20:57 [#12]:
спасибо
|
|
Milady (статус: Посетитель), 22 января 2009, 21:00 [#13]:
а что именно в public?
|
|
min@y™ (статус: Доктор наук), 22 января 2009, 21:08 [#14]:
Цитата:
а что именно в public?
Методы VelObshSoprot() наследников. Посмотри хэлп по этому хинту компилятора.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|