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

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

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

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

Сообщение @lex » 19.10.2006 19:46:10

С таким вопросом меня конечно можно ткнуть в книжку "Delphi для дошкольников", но всё таки.
Ситуация:
В проекте (вернее в курсовой работе) есть несколько форм. Из основной формы нужно вызвать дополнительную (назовем ее Form2), а при выполнении какого-то действия на ней (например нажатия на кнопку), выполнить функцию на основной форме.
Не имея опыта работы с многоформенными программами, решил спросить у вас.
А проблема такова, что формы определяются в разних юнитах и друг о друге узнать одновременно не могут, потому как не может быть "круговорота uses в программе" :)
@lex
постоялец
 
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск

ответ

Сообщение cro096 » 19.10.2006 19:52:09

в главном модуле описываешь процедуру 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 12:56:46

Сообщение cro096 » 19.10.2006 19:52:39

Примерно так.
cro096
незнакомец
 
Сообщения: 5
Зарегистрирован: 31.12.2005 12:56:46

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

Сообщение SAK » 19.10.2006 20:11:15

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


Не совсем так. Достаточно поставить Uses сразу после implementation.
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Сообщение @lex » 20.10.2006 07:41:08

Спасибо! Раз пошел спор, значит вопрос не такой уж и ламерский...
@lex
постоялец
 
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск

Сообщение Джентельмен » 20.10.2006 13:43:44

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

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...

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

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

Сообщение @lex » 20.10.2006 21:12:49

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

Сообщение @lex » 06.11.2006 18:03:55

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

Как в TStringGrid можно установить определенные размеры для ячеек? То есть в моем случае пользователь самостоятельно настраивает размеры столбцов, но весь TStringGrid периодически перезаполняется (меняются местами ряды, столбцы, изменяется их количество) и мне хотелось бы перед этим вытащить всю информацию о размерах ячеек, а после перерисовки вставить заново, при этом некоторым образом подредактировав.
Просмотрел свойства и не нашел там размеров определенных столбцов, а только всех сразу. Подскажите please
@lex
постоялец
 
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск

Сообщение SAK » 07.11.2006 21:12:45

А свойство ColWidths?
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Сообщение @lex » 12.11.2006 09:46:19

Спасибо, уже нашел! :oops:
Наверное надо меньше в игры по ночам играться :)
Ато совсем ослепну.
@lex
постоялец
 
Сообщения: 180
Зарегистрирован: 19.06.2006 13:16:29
Откуда: Невинномысск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru