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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2015, 06:55   #1
Rina_Frost
Новичок
Джуниор
 
Регистрация: 27.09.2015
Сообщений: 2
По умолчанию Изменение формы в Delphi

Доброго времени суток!
При решении задачи возникла заминка с одним из условий.
Задача:
Написать приложение, состоящее из 2-х форм. На первой расположить:
- два текстовых поля, в которых задаются размеры второй формы;
- кнопку «Форма 2», при нажатии на которую открывается вторая форма заданного размера;
- кнопку «Изменить», при нажатии на которую Форма 2 то увеличивает, то уменьшает размеры до определенных пределов.
Для первых двух условий все готово, но вот на третьем условии я встала.
Имеется кусочек кода, который просто увеличивает форму в два раза. НО из условия понятно, что форма должна увеличиваться плавно.
Есть предположение, что нужно использовать таймер. А вот как его использовать, предположений нет.
Помогте, пожалуйста разобраться с задачей.

Последний раз редактировалось Rina_Frost; 27.09.2015 в 07:07.
Rina_Frost вне форума Ответить с цитированием
Старый 27.09.2015, 07:28   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

показывай.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 27.09.2015, 07:31   #3
Rina_Frost
Новичок
Джуниор
 
Регистрация: 27.09.2015
Сообщений: 2
По умолчанию

Код:
procedure TForm2.btn_SizeClick(Sender: TObject);
begin
if NewSize
  then begin
        Form3.Width := Form3.Width div 2;
        Form3.Height := Form3.Height div 2;
       end
  else begin
        Form3.Width := Form3.Width * 2;
        Form3.Height := Form3.Height * 2;
       end;
 NewSize := not NewSize;
end;
Rina_Frost вне форума Ответить с цитированием
Старый 27.09.2015, 07:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу предложить такое:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

			{ TAni }
      //Класс треада для изменения формы в анимации
      TAni=class(TThread)
        public
          w,h,step:integer;
          me:TForm;
        protected procedure execute; override;
      end;

			{ TForm1 }

      TForm1 = class(TForm)
						Button1: TButton;
						procedure Button1Click(Sender: TObject);
      procedure FormCreate(Sender: TObject);
      private
            { private declarations }
      public
            { public declarations }
      end;

var
      Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 //Включаем анимацию
  with TAni.Create(true) do begin
    me:=self;       //Указываем какую форму изменять
    w:=Width+100;   //До какой ширины
    h:=Height+500;  //До какой вышины
    step:=10;       //С каким шагом
    FreeOnTerminate:=true;
    Resume;
	end;
end;

{ TAni }

procedure TAni.execute;
var x,y:integer;
begin
 if w<me.Width then x:=-step else x:=step;
 if h<me.Height then y:=-step else y:=step;
 while (w<>me.Width) and (h<>me.Height) do begin
   if (w<>me.Width) then me.Width:=me.Width+x;
   if (h<>me.Height) then me.Height:=me.Height+y;
   sleep(10);
 end;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.09.2015, 08:25   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А че плохому учить - синхронизация где? Лучше уж таймером
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.09.2015, 08:35   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я синхор сюда специально не крутил. Он в такой задаче не нужен, и может даже мешать, поскольку тратит ресурсы на стопор других потоков.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.09.2015, 10:38   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Да, он может работать, до поры до времени. Даже если юзер изъявит желание переместить форму в это время прога может не рухнет, а может рухнет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.09.2015, 11:02   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
переместить форму
Изменить размеры. Перемещение к краху не приведет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение формы Delphi band1AJkE Общие вопросы Delphi 6 07.02.2014 20:53
прозрачность формы, при наведении мыши на кнопку реализовать изменение её положения относительно формы с невозможностью выхода за программирование Общие вопросы C/C++ 0 22.01.2014 22:31
Изменение размера формы Решетова Алена Общие вопросы Delphi 2 03.04.2013 18:45
Изменение формы. egorzenit Общие вопросы Delphi 2 13.04.2012 14:02
изменение размера формы maksim_serg Microsoft Office Excel 0 16.04.2010 04:22