Ламерсий вопрос по работе с формами.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
@lex
постоялец
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск
Контактная информация:

Ламерсий вопрос по работе с формами.

Сообщение @lex »

С таким вопросом меня конечно можно ткнуть в книжку "Delphi для дошкольников", но всё таки.
Ситуация:
В проекте (вернее в курсовой работе) есть несколько форм. Из основной формы нужно вызвать дополнительную (назовем ее Form2), а при выполнении какого-то действия на ней (например нажатия на кнопку), выполнить функцию на основной форме.
Не имея опыта работы с многоформенными программами, решил спросить у вас.
А проблема такова, что формы определяются в разних юнитах и друг о друге узнать одновременно не могут, потому как не может быть "круговорота uses в программе" :)
cro096
незнакомец
Сообщения: 5
Зарегистрирован: 31.12.2005 11:56:46

Сообщение cro096 »

в главном модуле описываешь процедуру F,которая совершает нужные тебе действия с формой1.
Во втором модуле описываешь процедурную переменную.
var
fff: procedure;
При инициализации главного модуля, (зависящего, кстати, от модуля2)

initialization
unit2.fff := @F;
end;

unit2
.....
Form2.onBtn1Click;
begin
if @fff <> nil
then
fff();
end;
cro096
незнакомец
Сообщения: 5
Зарегистрирован: 31.12.2005 11:56:46

Сообщение cro096 »

Примерно так.
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

@lex писал(а):... формы определяются в разних юнитах и друг о друге узнать одновременно не могут, потому как не может быть "круговорота uses в программе"


Не совсем так. Достаточно поставить Uses сразу после implementation.
@lex
постоялец
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск
Контактная информация:

Сообщение @lex »

Спасибо! Раз пошел спор, значит вопрос не такой уж и ламерский...
Джентельмен
постоялец
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск
Контактная информация:

Сообщение Джентельмен »

не...
надо делать так:

Form1 а на ней Button1, Button2
Form2 а на ней Button1, Button2

вот в Unit1 в implementation пропишем Unit2, а в Unit1 в implementation пропишем Unit2...

и допустим, что при нажатии на Form1 Button1 должна появлятса Form2...

это делаем так:
в свойстве Button1 при нажатии пишем:

Form2.Show;
Form1.Hide;

теперь на Form2 при нажатии на ней Button1 должна выполнитса процедура Form1 а на ней Button2...

пишем так:
в процедуре на нажатии на кнопку на второй форме Button1:

Form1.Button1(nil);

и выполнитса процедура Form1 Button1...

я всегда так делаю...
и пока не жаловался...

доступно и понятно...
@lex
постоялец
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск
Контактная информация:

Сообщение @lex »

Да, спасибо! Я уже разобрался. Причем опробовал это на Delphi сегодня на паре по Информатике, а потом и с Lazarus-ом все без проблем получилось.
Скоро выложу результат совей работы. Задание было написать прогу просмотра/редактирования баз данных. Предлагалось воспользоваться готовыми компонентами от MS Access, а я начал велосипед изобретать и изобрел!
@lex
постоялец
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск
Контактная информация:

Сообщение @lex »

Не хочу по всяким пустякам создавать новые темы, поэтому продолжу старую. Думаю, что модераторы меня поймут :)

Как в TStringGrid можно установить определенные размеры для ячеек? То есть в моем случае пользователь самостоятельно настраивает размеры столбцов, но весь TStringGrid периодически перезаполняется (меняются местами ряды, столбцы, изменяется их количество) и мне хотелось бы перед этим вытащить всю информацию о размерах ячеек, а после перерисовки вставить заново, при этом некоторым образом подредактировав.
Просмотрел свойства и не нашел там размеров определенных столбцов, а только всех сразу. Подскажите please
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

А свойство ColWidths?
@lex
постоялец
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск
Контактная информация:

Сообщение @lex »

Спасибо, уже нашел! :oops:
Наверное надо меньше в игры по ночам играться :)
Ато совсем ослепну.
Ответить