Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 00:56   #21
abzhapparovmaxat
Пользователь
 
Регистрация: 05.10.2011
Сообщений: 33
По умолчанию

Цитата:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure SomeProc0(Sender: TObject);
procedure SomeProc1(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SomeProc0(Sender: TObject);
begin
ShowMessage('0');
end;

procedure TForm1.SomeProc1(Sender: TObject);
begin
ShowMessage('1');
end;


procedure MakeButtons;
var
Btns:array[0..1] of TButton;
begin
//run-time button 1
Btns[0]:=TButton.Create(nil);
Btns[0].Parent:=Form1;
Btns[0].Left:=10;
Btns[0].Top:=10;
Btns[0].Height:=20;
Btns[0].Width:=50;
Btns[0].Caption:='Button1';
Btns[0].OnClick:= SomeProc0; // 51

//run-time button 2
Btns[1]:=TButton.Create(nil);
Btns[1].Parent:=Form1;
Btns[1].Left:=10;
Btns[1].Top:=50;
Btns[1].Height:=20;
Btns[1].Width:=50;
Btns[1].Caption:='Button2';
Btns[1].OnClick:= SomeProc1; // 61
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MakeButtons
end;

end.
Вот так выдает ошибки
[DCC Error] Unit1.pas(51): E2003 Undeclared identifier: 'SomeProc0'
[DCC Error] Unit1.pas(61): E2003 Undeclared identifier: 'SomeProc1'
abzhapparovmaxat вне форума Ответить с цитированием
Старый 18.10.2011, 00:59   #22
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

в public секции их надо обьявлять.
Человек_Борща вне форума Ответить с цитированием
Старый 18.10.2011, 01:03   #23
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А MakeButtons нельзя тоже форме подчинить, или это некая идея таким образом опредялять?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.10.2011, 01:04   #24
abzhapparovmaxat
Пользователь
 
Регистрация: 05.10.2011
Сообщений: 33
По умолчанию

Цитата:
в public секции их надо обьявлять.
Те же самые ошибки(

Цитата:
А MakeButtons нельзя тоже форме подчинить, или это некая идея таким образом опредялять?
MakeButtons Присоединяется к уже бывшим ошибкам

[DCC Error] Unit1.pas(51): E2003 Undeclared identifier: 'SomeProc0'
[DCC Error] Unit1.pas(61): E2003 Undeclared identifier: 'SomeProc1'
[DCC Error] Unit1.pas(61): E2003 Undeclared identifier: 'MakeButtons'

Последний раз редактировалось abzhapparovmaxat; 18.10.2011 в 01:08.
abzhapparovmaxat вне форума Ответить с цитированием
Старый 18.10.2011, 01:11   #25
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Кстати Parent показывает в каком контейнере находится Button, но не задает родителя, ответственного за уничтожение объекта. Этого родителя задают в качестве параметра в методе Create, в данном случае тот же Form1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.10.2011, 08:31   #26
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Кто компоненты вообще создаёт как локальные переменные ??
Сделайте полем формы, да и саму процедуру - методом формы - тогда будут доступны someproc'и ну или
если хотите так всё оставить, то писать Btns[1].OnClick:= form1.SomeProc1;
phomm вне форума Ответить с цитированием
Старый 18.10.2011, 09:43   #27
abzhapparovmaxat
Пользователь
 
Регистрация: 05.10.2011
Сообщений: 33
По умолчанию

Всем спасибо! Наконец-то разобрался.
Вот вообщем код для тех кто пришел на форум с этим же вопросом. Я думаю таких будет много)

Этот код создает две кнопки(Btns[0,1]), и на событие ОнКлик(OnClick) этих кнопок назначает Процедуры(SomeProc[0,1]).
Цитата:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure SomeProc0(Sender: TObject);
procedure SomeProc1(Sender: TObject);
procedure MakeButtons;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SomeProc0(Sender: TObject);
begin
ShowMessage('0');
end;

procedure TForm1.SomeProc1(Sender: TObject);
begin
ShowMessage('1');
end;

procedure TForm1.MakeButtons;
var
Btns:array[0..1] of TButton;
begin
Btns[0]:=TButton.Create(nil);
Btns[0].Parent:=Form1;
Btns[0].Left:=10;
Btns[0].Top:=10;
Btns[0].Height:=20;
Btns[0].Width:=50;
Btns[0].Caption:='Button0';
Btns[0].OnClick:= Form1.SomeProc0;

Btns[1]:=TButton.Create(nil);
Btns[1].Parent:=Form1;
Btns[1].Left:=10;
Btns[1].Top:=50;
Btns[1].Height:=20;
Btns[1].Width:=50;
Btns[1].Caption:='Button1';
Btns[1].OnClick:= Form1.SomeProc1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.MakeButtons;
end;

end.

Последний раз редактировалось abzhapparovmaxat; 18.10.2011 в 09:47.
abzhapparovmaxat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рабочий стол shrek1993 Софт 6 27.02.2011 11:22
Рабочий стол ZvEr_HaCkEr Общие вопросы Delphi 6 21.10.2010 07:13
рабочий стол sf911 Операционные системы общие вопросы 3 09.08.2009 12:38
Рабочий стол maladoy Свободное общение 0 01.02.2009 13:07
Рабочий стол masterdela Win Api 3 31.01.2008 19:03