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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 14:10   #1
include
Пользователь
 
Аватар для include
 
Регистрация: 14.04.2009
Сообщений: 42
По умолчанию После сохранения формы не работают Button`ы

Здравствуйте! У меня такая ситуация: скачал недавно пример программы на делфи где можно сохранить всё что находится на форме в файл и потом загрузить. Всё было идеально до тех пор, когда я столкнулся с такой проблемой: после сохранения и последующего открытия сохранённой формы, на ней перестают работать кнопки button, хотя кнопки находящиеся в MainMenu продолжают нормально работать.
В примере я разместил на форме кнопку Close которая после сохранения->загрузки перестанет работать.
Подскажите можно ли заставить работать button`ы после открытия сохранённой формы.
Вложения
Тип файла: zip Сжатая ZIP-папка.zip (245.0 Кб, 12 просмотров)
include вне форума Ответить с цитированием
Старый 22.12.2010, 14:25   #2
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

у мя дельфя все нормально запустила и отработала, мб ты в кнопке забыл постать процедеру выполнения в onclic() прописать в инспекторе
dosha вне форума Ответить с цитированием
Старый 22.12.2010, 14:35   #3
include
Пользователь
 
Аватар для include
 
Регистрация: 14.04.2009
Сообщений: 42
По умолчанию

да нет незабыл, в onclick для button прописано: form1.Close;
программа действительно компилится нормально, я говорю о том что именно при последовательности действий File->SaveAs а потом File->Open, и именно в моей программе, а не в delphi, button перестаёт работать.

Последний раз редактировалось include; 22.12.2010 в 14:38.
include вне форума Ответить с цитированием
Старый 22.12.2010, 14:49   #4
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

нз, всё работает у меня
dosha вне форума Ответить с цитированием
Старый 22.12.2010, 16:01   #5
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Сохраняется та информация, которая доступна во время выполнения. А это есть Name, Caption, Heght, Width и т.д. Методы не сохраняются. Т.е по сути сохраняется только внешний облик. В данном примере ты сохраняешь в файл только компоненты, принадлежащие форме ( и то не все). Поэтому у тебя и остается после загрузки реакция на клик по форме. Ее-то ты не трогал. Если уж очень хочется, чтобы работало, то перепиши код так:

Код:
var
  S: TFileStream;
  New: TComponent;
  Reader1: TReader; // new line
  Size: integer;
  cmp: TComponent;
begin
  if OpenDialog1.Execute then
  begin
    {remove existing controls}
    New1Click (self);

    {open the stream}
    S := TFileStream.Create (OpenDialog1.FileName,
      fmOpenRead);
    try
      while S.Position < S.Size do
      begin
        {read a component and add it to the form}

        // old code:
//        New := S.ReadComponent (nil);
//        InsertControl (New as TControl);

        // new code:
        Reader1 := TReader.Create (S, 4096);
        try
          Reader1.Parent := self;
          New := Reader1.ReadRootComponent (nil);
          InsertComponent (New);
        finally
          Reader1.Free;
        end;

        Inc (Counter);
      end;
    finally
      S.Free;
    end;
  end;

  cmp := FindComponent('Button1');
  if cmp <> nil  then (cmp as TButton).OnClick :=  Button1Click;

end;

Последний раз редактировалось Баламут; 22.12.2010 в 16:36.
Баламут вне форума Ответить с цитированием
Старый 22.12.2010, 22:19   #6
include
Пользователь
 
Аватар для include
 
Регистрация: 14.04.2009
Сообщений: 42
По умолчанию

Баламут, огромнейшее тебе спасибо. Теперь всё работает так как я и хотел. Я вообще догадывался что программа сохраняет просто визуально форму, расположение обьектов, размеры, надписи на них и т.п., и что button надо где-то указать. Теперь буду знать как.
Проблема решена, спасибо!
include вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможность сохранения и открытия при нажатии на кнопку Button prikolist Общие вопросы C/C++ 8 10.06.2011 13:04
восстановление после сохранения weeK Microsoft Office Excel 7 26.08.2010 13:51
Button после выполнения ProgressBar }{oт@бь)ч Общие вопросы Delphi 7 25.01.2009 12:33
Сохранения файла после передачи albatros Работа с сетью в Delphi 2 26.12.2008 21:07
Макрос сохранения после печати lala_white Microsoft Office Word 2 10.08.2008 12:50