Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизРазделение программы на модули Найти похожие ветки
← →
DelPHist © (2004-06-15 00:18) [0]Возникла такая проблема: программа должна находиться в одном окне (т.е. форма у неё - одна), но вот реализация обработчиков всех компонентов занимает очень уж много места - неудобно (всё, что можно было сделать в другом модуле, я сделал). Нельзя ли объявление какого-либл метода/обработчика и т.д. разместить в главном модуле, а его реализацию - в другом?
← →
Fay © (2004-06-15 00:21) [1]можно
← →
DelPHist © (2004-06-16 00:37) [2]Спасибо за толковый ответ. А если серьёзно, то как?
← →
DrPass © (2004-06-16 01:19) [3]Разбей модуль на несколько файлов. Аналог сишного #include выглядит так:
{$i my_realization.inc}
← →
Ozone © (2004-06-16 05:18) [4]New->Unit
← →
DelPHist © (2004-06-17 00:20) [5]Нет, вы не поняли - я не такой тормоз, каким, наверное, кажусь.
Вы сами-то пробовали, скажем, обработчик нажатия кнопки вынести в другой модуль (при этом этот обработчик ещё пол-формы изменяет). Он ведь поля класса из другого Unit не увидит :(
← →
Andy BitOff © (2004-06-17 01:01) [6]Помоему это ты не понял.
DrPass © (16.06.04 01:19) [3]
Это как раз то, что тебе надо. Надеюсь понятно, что с $i можно использовать любое имя нужного тебе файла.
← →
Германн © (2004-06-17 03:09) [7]И кстати
2 DelPHist © (17.06.04 00:20) [5]
> Он ведь поля класса из другого Unit не увидит :(
А это - смотря какие!
← →
PVOzerski © (2004-06-17 12:27) [8]IMHO, разбиение по модулям не слишком много удобств добавит. Так, в design-time назначить обработчик из другого модуля уже не выйдет. Вынести реализацию методов в include-файлами - мысль занятная (и работает, надо сказать), но уж больно неудобно в design-time "кликом" новые обработчики делать: стирать, переписывать (вставлять из буфера) в другом файле... И как-то нетрадиционно, что ли.
Вот примерчик с юнитами (работает в D3):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
unit2;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.OnClick:=FakeForm.myHandler;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
tFakeForm=class(TForm)
public
procedure MyHandler(AOwner:tObject);
end;
var
FakeForm:tFakeForm;
implementation
procedure tFakeForm.MyHandler(AOwner:tObject);
begin
ShowMessage("Hello!");
end;
initialization
FakeForm:=tFakeForm.CreateNew(nil);
end.
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "d:\pas\Borland\Delphi 3\Unit2.pas";
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
object Form1: TForm1
Left = 200
Top = 108
Width = 544
Height = 375
Caption = "Form1"
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 208
Top = 112
Width = 75
Height = 25
Caption = "Button1"
TabOrder = 0
end
end
← →
Sandman25 © (2004-06-17 12:35) [9]>реализация обработчиков всех компонентов занимает очень уж много места
Скорее всего, идет большая обработка данных. В таком случае следует вынести всю обработку в отдельную процедуру.
типа
Button1Click
begin
Edit1.Text := GetAnalyzeResults(Edit2.Text);
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.032 c