Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 418

Раздел: Delphi » Прочее
/ вопрос решён /

Здравствуйте! Вопрос достаточно простой, но я не могу разобраться :) Как вызвать функцию из другой формы?

Hi-tek Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Hi-tek (статус: 1-ый класс)
Вопрос отправлен: 15 марта 2008, 20:02
Состояние вопроса: решён, ответов: 3.

Ответ #1. Отвечает эксперт: Drozdov D.V.

Здравствуйте, Hi-tek!
Я бы порекомендовал использовать DLL. Это самый простой способ.
Не заварачивать себе мозги, и можно экономить память если это необходимо.
Удачи!

Ответ отправил: Drozdov D.V. (статус: 4-ый класс)
Время отправки: 15 марта 2008, 20:38
Оценка за ответ: 4

Комментарий к оценке: спасибо, так наверное и поступлю! :)

Ответ #2. Отвечает эксперт: Dron

Здравствуйте, Hi-tek!
Если функция создана как метод формы, т.е. присутствует её заголовок в разделе public или private и она описана в разделе реализации (implementation), то вызвать её можно как метод объекта, а объектом выступает форма: Form2.MyFunc(...);.

Ответ отправил: Dron (статус: Студент)
Время отправки: 15 марта 2008, 20:43
Оценка за ответ: 5

Комментарий к оценке: спасибо :) сейчас разберусь...

Ответ #3. Отвечает эксперт: Вадим К

Здравствуйте, Hi-tek!
М-да, с dll это конечно жестокий вариант.
Начну с того, что форма не имеет функций. Она имеет методы.
Но могу предположить, что юнит, где находиться ваша форма содержит функцию в разделе implementation, которую хочеться вызвать с другого юнита. Для того, что бы это стало возможно, нужно сделать два шага.
- добавить объявление в раздел interface
- добавить этот модуль в список uses того модуля, где нужна форма.
Посмотрите на пример юнита ниже и должно стать понятно

unit UnitX;
uses  Forms,.....;
interface
  type
   TFormX = class(TForm)
   ...
   end;
  function Foo():integer;//<-- здесь нужно добавить
var FormX:TFormX;
implementation
{$R *.DFM}
 
function Foo():integer;//<-- это реализация, она должна уже быть
begin
 
end;
end.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 15 марта 2008, 22:35
Оценка за ответ: 5

Комментарий к оценке: Спасибо, пошел пробовать :)

Мини-форум вопроса

Всего сообщений: 0.

31 января 2011, 20:02: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:54
Выполнено за 0.02 сек.