+ Ответить в теме
Показано с 1 по 6 из 6

Тема: В чём ошибка?

  1. #1
    coder scorpi.on is on a distinguished road
    Регистрация
    03.06.2005
    Адрес
    Могилёв, Беларусь
    Сообщений
    32
    Вес репутации
    14

    По умолчанию В чём ошибка?

    Подскажите В чём ОШИБКА?

    unit Unit1;

    interface

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

    type
    TForm1 = class(TForm)
    Label1: TLabel;
    Image1: TImage;
    Label2: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Form1.Hide;
    Form2.Show;
    end;

    end.

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    coder scorpi.on is on a distinguished road
    Регистрация
    03.06.2005
    Адрес
    Могилёв, Беларусь
    Сообщений
    32
    Вес репутации
    14

    По умолчанию

    Совсем забыл сказать, что компилятор пишет: Undeclared identifier: 'Form2'

  4. #3
    coder AndreykA is on a distinguished road
    Регистрация
    15.11.2004
    Адрес
    Москва
    Сообщений
    48
    Вес репутации
    15

    По умолчанию

    Необходимо прописать Form2 в uses. Иначе Делфя просто не видит кто такой Form2.
    То есть в Uses пишешь физиеское имя файла где храниться юнит (ессестно без расширения - просто имя). А в процедуре procedure TForm1.Button1Click(Sender: TObject); в переменных надо написать var Form2 : TForm2 (то есть класс второй формы). В дальнейшем можно использовать переменную Form2.

    Должно выглядеть примерно так:

    Код :
    1. unit Unit1;
    2.  
    3. interface
    4.  
    5. uses
    6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    7. Dialogs, StdCtrls, jpeg, ExtCtrls;
    8.  
    9. type
    10. TForm1 = class(TForm)
    11. Label1: TLabel;
    12. Image1: TImage;
    13. Label2: TLabel;
    14. Button1: TButton;
    15. procedure Button1Click(Sender: TObject);
    16. private
    17. { Private declarations }
    18. public
    19. { Public declarations }
    20. end;
    21.  
    22. var
    23. Form1: TForm1;
    24. implementation
    25.  
    26. {$R *.dfm}
    27.  
    28. uses Unit2;
    29.  
    30. procedure TForm1.Button1Click(Sender: TObject);
    31. var Form2 : TForm2;
    32. begin
    33. Form1.Hide;
    34. Form2.Show;
    35. end;
    36.  
    37. end.

  5. #4
    senior developer LAngel is on a distinguished road Аватар для LAngel
    Регистрация
    30.03.2005
    Адрес
    Ульяновск
    Возраст
    37
    Сообщений
    277
    Вес репутации
    14

    По умолчанию

    А в процедуре procedure TForm1.Button1Click(Sender: TObject); в переменных надо написать var Form2 : TForm2 (то есть класс второй формы)
    Не стоит. ошибка будет, однако...
    экземпляр класса TForm2 обычно объявляется в Unit2. Если, конечно ты сам не хочешь динамечески создавать ещё один экземпляр этой формы. (да и тогда нужен дополнительный код:
    Код :
    1. Form2 := TForm2.Create(application)
    А так - вполне достаточно
    Код :
    1. uses unit2
    С уважением, Lost Angel...

  6. #5
    coder AndreykA is on a distinguished road
    Регистрация
    15.11.2004
    Адрес
    Москва
    Сообщений
    48
    Вес репутации
    15

    По умолчанию

    Если вторая форма автокриейтиться при запуске приложения то конечно ее достаточно прописать в uses, а вообще (по крайней мере я сам всегда так делаю) в автокриейте у меня только главная форма, а остальные создаются по мере необходимости (а после использования грохаются).
    Так вот при втором варианте ее естественно перед использованием необходимо создать:
    Код :
    1.  Form2 := TForm2.Create(self);

  7. #6
    coder VirusXP is on a distinguished road
    Регистрация
    07.06.2005
    Адрес
    Москва
    Сообщений
    12
    Вес репутации
    14

    По умолчанию

    чтобы функцию увидели другие модули её нужно объявлять в разделе interface и соответственно включать этот модуль в uses других модулей.

    unit Unit1;

    interface
    ----
    procedure WriteIni;
    ----
    implementation

    {$R *.dfm}

    procedure WriteIni;
    var MyIni:TIniFile;
    begin
    MyIni:=TIniFile.Create(IniPath);
    MyIni.WriteBool('sound','cbSound',Form1.cbSound.Ch ecked);
    MyIni.WriteBool('Title','timer', Form1.cbTimer.Checked);
    MyIni.Free;
    Form1.Close
    end;

    end.

+ Ответить в теме

Похожие темы

  1. в чем ошибка?
    если папка Test уже есть, то файл должен сохранятся туда. если ее нету, то пользователь может выбрать папку куда он хочет сохранить этот файл....
    от FATE в разделе JScript, VBScript, DHTML...
  2. ошибка IIS
    Здравствуйте! На сервере, где поднят IIS, в журнале событий системы постоянно появляется одно и то же предупреждение: источник V3SVC, код - 100 "не...
    от Rinne в разделе Apache, IIS...
  3. Ошибка 500 (Apache)
    Привет всем, у меня есть маленький вопросик по Apache При попытке вызвать CGI скрипт forum.pl сервер выдает ошибку 500. Чем может быть это вызвано? ...
    от Bloody ST@R в разделе Perl, PHP, ASP ...
  4. Ошибка с Charset'ом
    При обращении с БД на MySQL 4.1.5 из php (установлен как модуль Apache) в файле Apache\logs\error.log появляется сообщение: File...
    от Пацак с планеты Земля в разделе SQL
  5. Ошибка
    Failed sending email :: PHP :: DEBUG MODE Line : 235 File : /home/developingru/www/forum/includes/emailer.php
    от DeeJayC в разделе Жалобная книга

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения