Процедуры и функции

Тема в разделе "Delphi - Система", создана пользователем slavon-x86, 15 янв 2006.

  1. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    Delphi.
    Код (Text):
    Procedure aaa;
    Begin
    End;

    Procedure bbb;
    Begin
    End;
    Из процедуры bbb процедура aaa запускается,
    a из aaa процедура bbb не запускается.
    Как зделать чтобы можно было из любой процедуры запускать другую ?
     
  2. zubr

    zubr Гость

    В интерфейсной секции модуля объяви прототипы этих процедур и будет тебе счастье.
    Код (Text):
    unit Unit1;

    interface

    uses
    SysUtils;

    Procedure aaa;
    Procedure bbb;

    implementation

    Procedure aaa;
    Begin
    End;

    Procedure bbb;
    Begin
    End;

    end.
     
  3. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    А вот ещё вопрос:

    У меня есть процедура.
    Код (Text):
    Procedure aaa;
    Begin
    Form1.Memo1.Lines.add('dfgd');
    End;
    Как можно зделать, чтобы не дописывать перед каждым компонентом "Form1".
    Только НЕ через "With Form1 do".
     
  4. DZX

    DZX Гость

    Обьяви процедуру внутри класса формы в private или public как тебе нужнее и не пиши.
     
  5. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    Код (Text):
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

    type
    TForm1 = class(TForm)
    private
     { Private declarations }
    public
     { Public declarations }
     procedure aaa;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure aaa;
    begin
    Memo1.Lines.add('xxxxxxxxxx');
    end;

    end.
    Не работает
     
  6. zubr

    zubr Гость

    Правильно вот так:
    Код (Text):
    procedure TForm1.aaa;
    begin
    Memo1.Lines.add('xxxxxxxxxx');
    end;
    Так как процедура aaa - член класса.
    З.Ы. Советую почитать литературу по объектно ориентированному программированию.
     
  7. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    0
    А если процедура ааа находится в другом модуле ?
     
  8. Smit

    Smit Гость

    1.В модуле с процедурой aaa находишь раздел uses.
    2.Прописываешь туда имя модуля, где описан Memo1.
    3.Юзаешь Memo1. Если Memo1 объявлен внутри класса TForm1 то придётся обращаться к Memo1 через него: Form1.Memo1.Lines.Add('text');

    Вообще любые переменные и процедуры (функции), если они объявлены в некотором модуле Unit1, в разделах public или published некоторого класса, будут доступны любым другим модулям, в разделе uses которых указано имя модуля Unit1. Имя модуля прописывается в Delphi автоматически, в разделе Unit, и совпадает с именем соответствующего pas-файла.
     
  9. DZX

    DZX Гость

    procedure TForm1.aaa;

    Вот так надо объявлять членов класса и все заработает.
     
Загрузка...

Поделиться этой страницей