Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

Возможен ли обработчик в другом модуле?   Найти похожие ветки 

 
oleg1963lora   (2010-01-29 09:01) [0]

Здравствуйте уважаемые Мастера! Главный модуль программы, связанный с главной формой вырос как на дрожжах и продолжает расти дальше. Хочу навести порядок в программе. Нельзя ли определенные обработчики разнести по разным модулям? Например процедуру

TForm1.Button4Click(Sender: TObject);
begin
    LevelTemperature3:=LevelTemperature3+5;
end;
вынести в модуль SetParameter.


 
oldman ©   (2010-01-29 09:04) [1]


> Возможен ли обработчик в другом модуле?


Возможен.


 
Leonid Troyanovsky ©   (2010-01-29 09:24) [2]


> oleg1963lora   (29.01.10 09:01)  

> расти дальше. Хочу навести порядок в программе. Нельзя ли
> определенные обработчики разнести по разным модулям?

Плохой порядок. Разносить по модулям нужно не обработчики, а классы.
Ну, или регулярные процедуры.
Т.е., целиться надо в повторное использование кода.

--
Regards, LVT.


 
oleg1963lora   (2010-01-29 09:56) [3]


>
> Ну, или регулярные процедуры.
> Т.е., целиться надо в повторное использование кода.

А поподробнее можно? И не на языке кафедры :) Ну или простейший пример.


 
Jeer ©   (2010-01-29 10:04) [4]

Олег, а примеры чего Вы хотите увидеть ?
ООП ?
Так это, извините, в книжки.

В одной форме действительно мало кто сосредотачивает все - пишутся отдельные модули ( визуальные/невизуальные ), где и сосредотачивается вспомогательный функционал.
А главная форма является коллектором главного же функционала для пользователя.


 
oleg1963lora   (2010-01-29 10:15) [5]


> Разносить по модулям нужно не обработчики, а классы.

Что такое ООП я знаю, свои классы писать умею, а вот как их разнести по модулям...
Может посоветуете какую-нибудь литературу(хотя бы название) или ссылку.
А то я раполагаю только Архангельским :(


 
Медвежонок Пятачок ©   (2010-01-29 10:20) [6]

свои классы писать умею, а вот как их разнести по модулям...

мда. классы писать он умеет, а разнести их по модулям не умеет.
кто бы мог подумать.......


 
Медвежонок Пятачок ©   (2010-01-29 10:52) [7]

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

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


 
oleg1963lora   (2010-01-29 11:10) [8]

Додумался до следующего. В головной программе имею

program Project1;

uses
 Forms,
 Main in "Main.pas" {Form1},
 MainGen in "MainGen.Pas" {Главный генератор},
 Init in "Init.pas",
 SetDevice in "SetDevice.pas";

{$R *.res}

begin
 Application.Initialize;
 Application.MainFormOnTaskbar := True;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.
Для эксперимента в модуль "SetDevice.pas" перенес ButtonCloseFormClick, объявил ее в интерфейсе и подгрузил туда форму
{$R main.dfm}, компилируется и выдает сообщение, что ненайдена процедура для обработки нажатия кнопки.
Свойство OnClick не видит обработчик в модуле, отличном от главного.
Как это поправить? Вроде как на правильном пути я...


 
12 ©   (2010-01-29 11:11) [9]

LevelTemperature3:=LevelTemperature3+5;
т.е.
i:=i+5;
и предлагается жто вынести в модуль?

ну не знаааююю... :))
Ну напиши так

unit Unit2;
interface
function SumOfTwoNumber(a,b:integer):integer;
implementation
function SumOfTwoNumber(a,b:integer):integer;
begin
result:= a+b;
end;
end.

В своем uses Unit2 и

procedure TForm1.Button1Click(Sender: TObject);
begin
  i:=SumOfTwoNumber(i,5);


 
oleg1963lora   (2010-01-29 11:13) [10]


> если же в обработчике повторяется некий полезный код не
> привязанный к свойствам и методам контролов, то этот код
> следует организовать как функцию и уже ее вынести в модуль,
>  а не весь обработчик

Простите, проглядел ваше сообщение. Хорошая мысль. Буду ее думать :)


 
Anatoly Podgoretsky ©   (2010-01-29 14:30) [11]

> oleg1963lora  (29.01.2010 10:15:05)  [5]

Писать я умею, мне бы еще и алфавит изучить.


 
DVM ©   (2010-01-29 15:36) [12]


> oleg1963lora   (29.01.10 09:01) 
> Здравствуйте уважаемые Мастера! Главный модуль программы,
>  связанный с главной формой вырос как на дрожжах и продолжает
> расти дальше. Хочу навести порядок в программе. Нельзя ли
> определенные обработчики разнести по разным модулям?

Ты лучше подумай, как бы отделить функционал программы (скажем так ее движок) от интерфейса. Реализовывать функционал программы в классе самой формы, хоть и допустимая (до определенных пределов), но все же не лучшая практика. Форма она и есть форма - она должна предоставлять интерфейс, а если программа делает что-то еще кроме того что имеет интерфейс, то вот это все жедательно и вынести в отдельный класс или классы. Сильно может упростить жизнь в ряде случаев, да и аккуратнее так.



Страницы: 1 вся ветка

Текущий архив: 2010.03.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
15-1262726623
tmtlib
2010-01-06 00:23
2010.03.28
Компилятор в EXE на Delphi с исходниками.


2-1264422307
Anonim
2010-01-25 15:25
2010.03.28
доступ к списку Tlist


3-1220515408
DVM
2008-09-04 12:03
2010.03.28
ID последней добавленной записи


2-1264496780
Oleg196lora
2010-01-26 12:06
2010.03.28
Странность в работе try..except


2-1264681015
d.l.
2010-01-28 15:16
2010.03.28
Сравнить файлы двух папок