Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.005 c
15-1263058858
GanibalLector
2010-01-09 20:40
2010.03.28
Интерфейс


15-1262805333
Fenik
2010-01-06 22:15
2010.03.28
Нелегко быть президентом Украины


15-1263131112
Студент Игорь
2010-01-10 16:45
2010.03.28
Помогите новичку


1-1246381367
Чайник
2009-06-30 21:02
2010.03.28
Delphi 2009 - запись с вариантной частью


15-1262645563
Германн
2010-01-05 01:52
2010.03.28
Работа с Project Group





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский