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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2007, 23:32   #1
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию Вызов процедуры

Добрый вечер!

У меня такая проблема у меня есть некая процедура:


Код:
 private
    { Private declarations }
  public
    procedure ChangeLang(LangSection: string);



end;


    { Public declarations }


var
  Form1: TForm1;

implementation

uses Unit2;
 procedure TForm1.ChangeLang(LangSection: string);
var
  .......
 ........
begin
 .....................
...................... 
{$R *.dfm}
    end;

Данная процедура размещаеться на первой форме
Вызываеться она следующем образом:

Код:
procedure TForm1.Button4Click(Sender: TObject);

begin
Form1.ChangeLang('RUSSIAN');
end;
Вся проблема в том что пытаясь вызвать эту процедуру во второй форме

Код:
begin
Form2.ChangeLang('RUSSIAN');
end;
Она на это ругаеться аргуметируя что ChangeLang ей неизвестна так вот вопрос такой можно ли каким нибудь образом вызвать ее во второй форме не прописывая саму процедуру.. как мы это зделали в первой форме каким образом зделать чтоб эта процедура была применима ко всему проекту?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 22.11.2007, 00:40   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Вся проблема в том что пытаясь вызвать эту процедуру во второй форме

begin
Form2.ChangeLang('RUSSIAN');
end;
Так почему же Form2??? Нужно-то Form1!!!
mihali4 вне форума Ответить с цитированием
Старый 22.11.2007, 08:35   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Конечно. Процедура же в первой форме описана, так что и вызывай её с первой формы!
FaTaL вне форума Ответить с цитированием
Старый 22.11.2007, 16:58   #4
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Дело в том что эта процедура по переводу компонентов (Label, Checkbox и т.д) с английский на русский я хотел зделать так:

begin
Form1.ChangeLang('RUSSIAN');
Form2.ChangeLang('RUSSIAN');
end;

Значит нельзя зделать так чтоб одна процедура была доступна во всех формах проэкта?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 22.11.2007, 17:04   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Значит нельзя зделать так чтоб одна процедура была доступна во всех формах проэкта?
Можно. В отдельный юнит спихни ее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2007, 17:09   #6
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Можно. В отдельный юнит спихни ее.
Можно пояснить что значит спихнуть ее в отдельный юнит?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 22.11.2007, 17:15   #7
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Какой отдельный юнит? Form1.ChangeLang('RUSSIAN'); везде пиши и всё. Если не работает, то код в студию, косяк в функции. Я даже догадываюсь где. (1.5 года модерирования развили телепатию...)
zetrix вне форума Ответить с цитированием
Старый 22.11.2007, 17:25   #8
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
Какой отдельный юнит? Form1.ChangeLang('RUSSIAN'); везде пиши и всё. Если не работает, то код в студию, косяк в функции. Я даже догадываюсь где. (1.5 года модерирования развили телепатию...)
А можно отправлю в личку причину могу объяснить....
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 22.11.2007, 18:48   #9
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
Дело в том что эта процедура по переводу компонентов (Label, Checkbox и т.д) с английский на русский я хотел зделать так:
begin
Form1.ChangeLang('RUSSIAN');
Form2.ChangeLang('RUSSIAN');
end;
Наверное имелось ввиду, что требуется "русифицировать/англинизировать" компоненты, расположенные на разных формах, так?
Тогда можно процедуру ChangeLang создать в отдельном модуле и передавать ей в параметрах не только название языка, но и ссылку на нужную форму. Вроде того:
Код:
procedure ChangeLang(Form: TForm; const LangSection: string);
var
  I: Integer;
begin
  ........................
  for I := 0 to Form.ComponentCount - 1 do
    begin
      Form.Components[I] .....
      ........................
    end;
  ........................
end;
И вызывать ее
Form1.ChangeLang(Form1, 'RUSSIAN');
Form2.ChangeLang(Form2, 'RUSSIAN');
Jeni вне форума Ответить с цитированием
Старый 22.11.2007, 19:01   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
И вызывать ее
Form1.ChangeLang(Form1, 'RUSSIAN');
Form2.ChangeLang(Form2, 'RUSSIAN');
Пардон, конечно, но этот кусок кода однозначно подразумевает наличие обработчика ChangeLang и в Unit1, и в Unit2, соответствующих формам Form1 и Form2...
Единственный бесспорно правильный вариант предложил наш З. Модератор - Zetrix.
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов процедуры igbizon Общие вопросы Delphi 5 02.09.2008 10:44
Вызов процедуры Kashp Общие вопросы Delphi 4 31.03.2008 16:22
вызов процедуры из exe? Volkogriz Общие вопросы Delphi 9 16.11.2007 22:34
Вызов процедуры Илья Кибель Помощь студентам 7 17.09.2007 19:43
Вызов процедуры Monoflextor Общие вопросы Delphi 2 28.04.2007 17:32