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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2009, 21:52   #1
gakuseix
Новичок
Джуниор
 
Регистрация: 15.06.2009
Сообщений: 3
По умолчанию TForm1 изменить размер

формы при нажатии кнопки Button.
Т.е. мне надо изменить размер формы с левой стороны, было допустим 500 стало 400 при нажатии кнопки. что то похожее на выплывающее меню.
gakuseix вне форума Ответить с цитированием
Старый 15.06.2009, 23:40   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Не совсем понял чем именно оно должно быть похоже на "выплывающее меню"...
Код:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Form1.Width:=Form1.Width-100;
Form1.Left:=Form1.Left+100;
End;
Но лучше делать с правой стороны...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 16.06.2009, 13:06   #3
gakuseix
Новичок
Джуниор
 
Регистрация: 15.06.2009
Сообщений: 3
По умолчанию

Спасибо. Но не совсем то что хотелось бы. Уточню, мне надо чтобы при нажатии кнопки левая часть формы как бы отрезалась, а с этим кодом форма сужается и сдвигает с собой все содержимое. ( Отрезалась и пропадала, точнее просто пропадала)
С правой стороны конечно можн так сделать, а вот с левой проблема.

Последний раз редактировалось gakuseix; 16.06.2009 в 13:09.
gakuseix вне форума Ответить с цитированием
Старый 16.06.2009, 13:14   #4
Vladya
Форумчанин
 
Аватар для Vladya
 
Регистрация: 04.11.2008
Сообщений: 360
По умолчанию

А Вы попробуйте ту часть формы которая должна "отпасть" просто сделать прозрачной и все. А насчет левой, как вам уже писали, оно и будет просто сужать форму.
Мой скромненький сайт
Vladya вне форума Ответить с цитированием
Старый 16.06.2009, 13:30   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а с этим кодом форма сужается и сдвигает с собой все содержимое.
Ну уменьшай только Width и Height, а Left и Top не трогай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.06.2009, 14:29   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вот посмотрел разные функции в Delphi по работе с прозрачностью (введя Transparent в хелпе) и нашел TransparentBlt, я не отвечу на вопрос, но может быть вам это подойдет. Хотя не уверен. Тут создается интересный эффект.

Создайте сначала новый проект и посмотрите что это из себя представляет.
Установите BorderStyle у формы в bsNone, киньте на форму таймер и установите у него интервал в 10
Вот весь исходный код:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    bt_1: TButton;
    Timer1: TTimer;
    procedure bt_1Click(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    //Перетаскивание формы за любую часть
    procedure WMLButtonDown(var Msg: TMessage); message WM_LBUTTONDOWN;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.bt_1Click(Sender: TObject);
begin
 Close;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
 //Canvas.Handle - HDC, на который надо переводить изображение
 //0, 0, 100, Height - координаты, куда надо переводить изображение
 //GetDC(0) - HDC экрана за формой
 //Left, Top, 100, Height - координаты, откуда надо брать изображение
 //100 - не знаю что такое, просто поставил 100, но и с 0 работает также
 TransparentBlt(Canvas.Handle, 0, 0, 100, Height, GetDC(0), Left, Top, 100, Height, 100);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Repaint;
end;

procedure TForm1.WMLButtonDown(var Msg: TMessage);
begin
 Perform(WM_NCLBUTTONDOWN, HTCAPTION, Msg.LParam);
end;

end.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 16.06.2009 в 14:33.
Neeter вне форума Ответить с цитированием
Старый 16.06.2009, 15:32   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
С правой стороны конечно можн так сделать, а вот с левой проблема.
У компонентов есть свойство "Anchors"... Если поменять у всех компонентов "akLeft" (который по умолчанию) на "akRight", то будет наоборот...

Вообще странное свойство... Как-то криво работает (или я не правильно понимаю как оно должно себя вести)...

А может просто две разные формы делать? Когда понадобится - одну скрывать...

Цитата:
Вот весь исходный код:
У меня ничего особенного не заметно... Вообще...
Просто обычная форма с кнопкой...
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 16.06.2009 в 15:39.
DomiNick вне форума Ответить с цитированием
Старый 16.06.2009, 15:51   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как-то криво работает
Нормательно оно фунциклирует, просто не всегда удобно )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.06.2009, 17:24   #9
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Код:
У меня ничего особенного не заметно... Вообще... 
Просто обычная форма с кнопкой...
Хм... Может быть вы сделали что-то не так?
У вас делфи какой версии?
Можете скинуть исходник.

Или вы просто не заметили...
Подвигайте форму.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 16.06.2009, 18:58   #10
gakuseix
Новичок
Джуниор
 
Регистрация: 15.06.2009
Сообщений: 3
По умолчанию

DomiNick
Цитата:
А может просто две разные формы делать? Когда понадобится - одну скрывать...
Да, пробовал так но не очень удобно. Спасибо.
gakuseix вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить размер формы Dr.Badnezz Общие вопросы Delphi 1 28.01.2009 20:51
Изменить размер объекта Comment Васкинс Microsoft Office Excel 4 16.07.2008 14:11
изменить размер кнопки badfilin JavaScript, Ajax 2 12.04.2008 17:04
Как изменить размер Видео PilGrim Компоненты Delphi 1 19.11.2007 23:03
Как изменить размер поля БД Алёна БД в Delphi 5 07.05.2007 10:06