![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблемма с 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]Положить туда фрейм, а привязку делать уже с него.