powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / задача ООП
7 сообщений из 7, страница 1 из 1
задача ООП
    #32185026
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите решить задачу:
Приложение MDI, для Child создаю потомка от tform для обращения к свойствам из главной формы через (fMain.ActiveMDIChild as TFormExt).fMode := fRead (как пример).
Как создать процедуру (или что-то другое), тело которой для каждой MDIChild было бы своим и ее можно было бы вызывать из главной формы по принципу как (fMain.ActiveMDIChild as TFormExt)....

Нужно для обновления DataSet-ов используемых в MDIChild.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
type
  TFormExt = class(TForm)
  private
   FfMode: fModeType;
   ***
  protected
    { Protected declarations }
  public
   property fMode: fModeType read FfMode write FfMode default fRead;
  ***
   constructor Create(AOwner : TComponent);override;
   destructor Destroy; override;
  published
   { Published declarations }
  end;
...
Рейтинг: 0 / 0
задача ООП
    #32185108
Hammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
type
TFormExt = class(TForm)
private
***
protected
{ Protected declarations }
public
***
procedure Doanything( var Value: Variant ) virtual; abstract;
***
published
{ Published declarations }
end;

***
procedure Doanything1( var Value: Variant );
begin
***
end;

procedure Doanything2( var Value: Variant );
begin
***
end;

***
procedure TForm.Btn1Click( ... )
var
Value: Variant
begin
(fMain.ActiveMDIChild as TFormExt).Doanything( Value ) := Doanything1( Value );
end;

procedure TForm.Btn1Click( ... )
var
Value: Variant
begin
(fMain.ActiveMDIChild as TFormExt).Doanything( Value ) := Doanything2( Value );
end;
***
...
Рейтинг: 0 / 0
задача ООП
    #32185190
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hammer идет ошибка
Код: plaintext
1.
2.
(fMain.ActiveMDIChild as TFormExt).Doanything( Value ) := Doanything1( Value );
Left side cannto be assigned to
...
Рейтинг: 0 / 0
задача ООП
    #32185281
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че то я не догоняю! По вашему опусанию вполне подходит обычный class member...
...
Рейтинг: 0 / 0
задача ООП
    #32185326
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если можно поподробнее о class member...
...
Рейтинг: 0 / 0
задача ООП
    #32185327
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
TMyMDIForm = class(TMDIForm)
...
public
  procedure refreshDataSet; virtual; abstract;
end;

TMyConcreteMDIForm = class(TMyMDIForm)
...
public
  procedure refreshDataSet; override;
end;
...
TMyConcreteMDIForm.refreshDataSet;
begin
  ShowMessage(TMyConcreteMDIForm.refreshDataSet);
end;

TMyConcrete2MDIForm = class(TMyMDIForm)
...
public
  procedure refreshDataSet; override;
end;
...
TMyConcrete2MDIForm.refreshDataSet;
begin
  ShowMessage(TMyConcrete2MDIForm.refreshDataSet);
end;

В главной форме

procedure TForm.Btn1Click( ... ) 
begin 
(fMain.ActiveMDIChild as TMyMDIForm).refreshDataSet;
end; 
В зависимости от того, что сейчас в ActiveMDIChild,
экземпляр TMyConcreteMDIForm или TMyConcrete2MDIForm
будут разные действия.

Правильно понял вопрос?

А Hammer просто пытался присвоить результат выполнения одной функции результату выполнения другой.
Это ерунда, суть его примера от этого не изменилась, IMHO.
ЗЫ: Сорри за синтаксис, не проверял. В общих чертах так.
...
Рейтинг: 0 / 0
задача ООП
    #32185367
Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Артем1 БОЛЬШОЕ спасибо то, что надо...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / задача ООП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]