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

Вниз

Разделение программы на модули   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
3-1086764520
LittleGirly
2004-06-09 11:02
2004.07.04
Как обуздать большой dbf файл


1-1087881907
Дарья
2004-06-22 09:25
2004.07.04
Помогите пожалуйста !


1-1087453402
MVA
2004-06-17 10:23
2004.07.04
Версия программы


1-1087802374
zep
2004-06-21 11:19
2004.07.04
TStrings


3-1086340730
Draught
2004-06-04 13:18
2004.07.04
QuickReport - отображаются не все строки из Query...