Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проблемма с BorderStyle:= bsNone; [D7, XP]


novai ©   (2013-04-22 14:12:00) 

почему если:
procedure TForm1.FormCreate(Sender: TObject);
begin
 BorderStyle:= bsNone;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 label1.Caption:= IntToStr(ClientWidth) + 'x' + IntToStr(ClientHeight);  
end;

то я вижу, что ClientWidth=Width и ClientHeight=Height ?
Соответственно, сама форма чуть больше, чем должна быть...
Как сделать, ClientWidth и ClientHeight содержащими значения, что были выставлены в обжект инспекторе?


Inovet   (2013-04-22 16:39:00) [1]

> [13] Ega23 ©   (22.04.13 16:11)
> и, вроде как, от темы может зависеть

В каких-то версиях Вин, вроде как, можно было ширину даже из интерфайса настраивать.


novai   (2013-04-22 16:36:00) [2]

странно, но 11 заработал как надо, хотя я подобное пробовал... хм
всем спасибо!


Ega23   (2013-04-22 16:11:00) [3]


> что-то можно сделать?


Что нужно-то? Есть Width. есть ClientWidth. Они не одно и то же. Значение ClientWidth не большезначения Width. Различия варьируются от значения BorderStyle (и, вроде как, от темы может зависеть).


Inovet   (2013-04-22 16:02:00) [4]

> [10] Плохиш ©   (22.04.13 15:52)

> [11] icWasya ©   (22.04.13 15:54)

Это слишком тривиально.


icWasya   (2013-04-22 15:54:00) [5]

Ну а по простому?
procedure TForm1.FormCreate(Sender: TObject);
var
 SavClientHeight,SavClientWidth:Integer;
begin
 SavClientHeight := ClientHeight;
 SavClientWidth  := ClientWidth;
 BorderStyle       := bsNone;
 ClientHeight      := SavClientHeight;
 ClientWidth       := SavClientWidth;
end;

или
procedure TForm1.FormCreate(Sender: TObject);
var
 SavClientRect:TRect;
begin
 SavClientRect := ClientRect;
 BorderStyle    := bsNone;
 ClientRect     := SavClientRect;
end;


Плохиш   (2013-04-22 15:52:00) [6]


> novai   (22.04.13 15:23) [8]
> дело в том, что ClientHeight подгоняется под Height  и аналогично
> с шириной

Ну так и выстави требуемые размеры формы. Иначе, нафига оно тебе это программирование?


Inovet   (2013-04-22 15:40:00) [7]

> [8] novai   (22.04.13 15:23)

Ну и?

procedure TForm1.Button1Click(Sender: TObject);
begin
 BorderStyle:= bsNone;
 Width := Width - ClientWidth + 200;
 Height := Height - ClientHeight + 100;
 Label1.Caption := IntToStr(ClientWidth) + 'x' + IntToStr(ClientHeight);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 BorderStyle:= bsSizeable;
 Width := Width - ClientWidth + 200;
 Height := Height - ClientHeight + 100;
 Label1.Caption := IntToStr(ClientWidth) + 'x' + IntToStr(ClientHeight);
end;


novai   (2013-04-22 15:23:00) [8]

дело в том, что ClientHeight подгоняется под Height  и аналогично с шириной


Inovet   (2013-04-22 15:17:00) [9]

> [6] novai   (22.04.13 14:59)
> что-то можно сделать?

А так?
Height := Height - ClientHeight + СколькоТамНадоВысоты;
Width := Width - ClientWidth + СколькоТамНадоШирины;


novai   (2013-04-22 14:59:00) [10]

что-то можно сделать?


Плохиш   (2013-04-22 14:57:00) [11]

Он просто не понимает, что клиентная область зависит от размеров формы и наличия рамки, а не наоборот.


Ega23   (2013-04-22 14:36:00) [12]

С чем не сталкивались? Я что-то решительно не понимаю.


novai   (2013-04-22 14:23:00) [13]

и что характерно, в инете решения данной проблемы не нашел, не сталкивались видимо?


novai   (2013-04-22 14:21:00) [14]

это как положит туда шаблон? но ведь скорее всего можно без этих танцев?


Ega23   (2013-04-22 14:19:00) [15]

Положить туда фрейм, а привязку делать уже с него.


Наверх

Титульная страница Поиск, карта сайта Написать письмо