Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];
ВнизResize формы Найти похожие ветки
← →
Германн © (2010-09-26 02:50) [0]Д2007
Есть форма. На ней PageControl с двумя вкладками. Нужно ограничить максимальные ширину и высоту формы, но в зависимости от того какая вкладка PageControl активна.
При этом на одной вкладке TStringGrid с Align = alClient, в котором я при Resize пересчитываю ширину колонок так, чтобы ущерб информационности был минимальным. На другой вкладке TTreeView + TPanel, для которых есть свои пожелания о минимальной ширине.
Дайте совет по реализации такого чуда. У меня пока что плохо получается.
← →
Loginov Dmitry © (2010-09-26 09:27) [1]
> Дайте совет по реализации такого чуда.
Мой совет - не делать такого чуда :)
За основу взять вкладку с наибольшим размером, а на второй вкладке навести должный порядок с учетом пожеланий.
← →
Юрий Зотов © (2010-09-26 12:04) [2]Присоединяюсь к Дмитрию. Очень некрасиво это, когда размер формы "прыгает" при переключении вкладок.
← →
Юрий Зотов © (2010-09-26 14:28) [3]Но если все же есть непреодолимое желание - то см. WM_GETMINMAXINFO.
← →
Palladin © (2010-09-26 14:30) [4]Присоединяюсь к Юрию.
P.S.: Состав поезда - не нарушать!
← →
Германн © (2010-09-27 01:17) [5]
> Мой совет - не делать такого чуда :)
Я пожалуй еще помучаюсь :)
> Очень некрасиво это, когда размер формы "прыгает" при переключении
> вкладок.
Да нет. В данном конкретном случае нормально
← →
Германн © (2010-09-27 01:27) [6]Встретил интересный то ли глюк, то фичу. Не пойму.
Странно работает alClient.
Вот код
pasunit Unit26;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Grids;
type
TForm26 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
StringGrid1: TStringGrid;
TreeView1: TTreeView;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form26: TForm26;
implementation
{$R *.dfm}
end.
dfmobject Form26: TForm26
Left = 0
Top = 0
Caption = "Form26"
ClientHeight = 293
ClientWidth = 426
Color = clBtnFace
Constraints.MinWidth = 100
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "Tahoma"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object PageControl1: TPageControl
Left = 0
Top = 0
Width = 426
Height = 293
ActivePage = TabSheet1
Align = alClient
TabOrder = 0
object TabSheet1: TTabSheet
Caption = "TabSheet1"
object StringGrid1: TStringGrid
Left = 0
Top = 0
Width = 418
Height = 265
Align = alClient
TabOrder = 0
ExplicitLeft = 96
ExplicitTop = 104
ExplicitWidth = 320
ExplicitHeight = 120
end
end
object TabSheet2: TTabSheet
Caption = "TabSheet2"
ImageIndex = 1
object TreeView1: TTreeView
Left = 0
Top = 0
Width = 418
Height = 265
Align = alClient
Constraints.MinWidth = 350
Indent = 19
TabOrder = 0
ExplicitLeft = 64
ExplicitTop = 48
ExplicitWidth = 121
ExplicitHeight = 97
end
end
end
end
dprprogram Project23;
uses
Forms,
Unit26 in "Unit26.pas" {Form26};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm26, Form26);
Application.Run;
end.
Если ни разу не открывать вторую закладку, то StringGrid1 при любых размерах формы всегда alClient. Но стоит лишь хоть раз открыть вторую вкладку как сразу AlClient у StringGrid1 работает только при ширине окна большем некоторого значения.
← →
Jumbo (2010-09-27 01:43) [7]>>Нужно ограничить максимальные ширину и высоту формы, но в зависимости от того какая вкладка PageControl активна.
procedure TForm1.TabSheet1Show(Sender: TObject);
begin
Constraints.MaxWidth := 500;
// Constraints.MinWidth := 500;
Constraints.MaxHeight := 400;
// Constraints.MinHeight := 400;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
Constraints.MaxWidth := 600;
// Constraints.MinWidth := 600;
Constraints.MaxHeight := 500;
// Constraints.MinHeight := 500;
end;
← →
Германн © (2010-09-27 02:04) [8]
> Германн © (27.09.10 01:27) [6]
В Д6 такой же глюк.
← →
Германн © (2010-09-27 02:09) [9]
> Jumbo (27.09.10 01:43) [7]
Иду пока в направлении указанном ЮЗ в [3].
Т.е. плюю на VCL-ные фишки типа Constraints и обрабатываю WM_GETMINMAXINFO.
Но вышеописанный глюк обнаружил еще вчера. И как только смог, так воспроизвел его на тестовом примере, который сюда и запостил.
← →
sniknik © (2010-09-27 10:16) [10]> Т.е. плюю на VCL-ные фишки типа Constraints и обрабатываю WM_GETMINMAXINFO.
плевать можно только не используя совсем, в ином случае ты от него зависишь...
похоже ресайз не отрабатывает(/криво) у контрола, попробуй добавить типа -procedure PageControlResize(Sender: TObject);
begin
TabSheet.Width := PageControl.ClientWidth;
TabSheet.Height:= PageControl.ClientHeight;
end;
← →
Германн © (2010-09-28 01:20) [11]
> sniknik © (27.09.10 10:16) [10]
>
> > Т.е. плюю на VCL-ные фишки типа Constraints и обрабатываю
> WM_GETMINMAXINFO.
> плевать можно только не используя совсем, в ином случае
> ты от него зависишь...
>
Кажись начинаю понимать, что плевать на VCL-ные фишки не так-то просто. :(
В тестовом проекте всё шло как по маслу. В рабочем - AV.
← →
Anatoly Podgoretsky © (2010-09-28 08:56) [12]> Германн (28.09.2010 01:20:11) [11]
Доплевался :-)
← →
Jumbo (2010-09-28 10:02) [13]"Ежики ругались, плакали, но упорно продолжали лезть на кактус" (С)
Чем Constraints не угодил-то? Названием? Две строки кода - и все проблемы решены. А ты который день подряд продолжаешь изобретать велосипед.
← →
Германн © (2010-09-28 19:54) [14]
> Чем Constraints не угодил-то?
Тестовый проект приведенный выше как раз Constraints использует и имеет при этом глюк связанный явно с ними.
← →
Jumbo (2010-09-28 20:25) [15]Установи для StringGrid те же ограничения, что и для TreeView (в примере 350). Вообще можно Constraints устанавливать для всей формы. Да, глюк, но не смертельный же...
← →
Германн © (2010-09-29 03:24) [16]
> Jumbo (28.09.10 20:25) [15]
>
> Установи для StringGrid те же ограничения, что и для TreeView
> (в примере 350).
> Вообще можно Constraints устанавливать для всей формы.
Прочитай ещё раз сабж. Посмотри на мой тестовый пример. И перестань быть анонимом aka ёжиком :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.056 c