![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TPageControl, TPanel... [WinXP]
asm_viator © (2007-10-10 20:44:00)Здравствуйте все!!!
Есть такая проблема: у заказчика разрешение монитора жалкое (~600 x ~800). Поэтому мне надо кое-что учесть (см. далее).
Мне нужно, чтобы можно было переключаться между двумя режимами:
1) две панельки со сплиттером меж ними
2) TPageControl с двумя страницами
Находиться можно только в одном из режимов, то есть видны только панели или виден только TPageControl. При этом мне надо, чтобы все контролы, которые были в первой панели, оказались в первой странице TPageControl, а которые были во второй панели - во второй странице.
А теперь внимание вопрос: как это осуществить?
asm_viator (2007-10-11 15:24:00) [1]To Ping
Спасибо за ответ! Идею понял!
У меня интерфейс проги немного другой: там-сям разбросаны TToolBar'ы, TMainMenu и две панели (со сплиттером меж ними):
1) Panel1 с чем-то вроде информации о текущем выбранном объекте (Align=Left)
2) Panel2 (Align=Client), где и требуется разместить либо две панели (Panel3 & Panel4), либо один PageControl1.
Переключение между режимами будет посредством TToolBar
Пробовал делать как в [3], но есть неразрешенная пока проблема (в том же посте)
Ping (2007-10-11 13:10:00) [2]
Базовая форма:
На ней кнопка Button1 ("Посчитать"). Других контролов нет. Вообще, по идее, контролов вообще не надо, только свойства и методы.
unit BaseFormUnit;
{...}
type
TBaseForm = class(TForm)
procedure Button1Click(Sender: TObject);
private
FA: integer;
FB: integer;
FC: integer;
procedure DoControlData;
procedure DoCalculate;
protected
procedure BeforeAction; virtual;
procedure AfterAction; virtual;
public
property A: integer read FA write FA;
property B: integer read FB write FB;
property C: integer read FC write FC;
end;
{...}
procedure TBaseForm.AfterAction;
begin
end;
procedure TBaseForm.BeforeAction;
begin
end;
procedure TBaseForm.Button1Click(Sender: TObject);
begin
BeforeAction;
DoControlData;
DoCalculate;
AfterAction;
end;
procedure TBaseForm.DoCalculate;
begin
FC := FA div FB;
end;
procedure TBaseForm.DoControlData;
begin
if (FB = 0) then
raise Exception.Create('B should not be equial to 0');
end;
Можешь разместить форму в репозиторий.
Порожденная форма:
Размещаешь три поля ввода, Edit1, Edit2, Edit3. К ним - подписи, картиночки, сплиттеры и все, что твоей душе угодно.
unit InheritedFormUnit;
uses
BaseFormUnit;
type
TInheritedForm = class(TBaseForm)
protected
procedure BeforeAction; override;
procedure AfterAction; override;
end;
{...}
procedure TInheritedForm.BeforeAction;
begin
A := StrToInt(Edit1.Text);
B := StrToInt(Edit2.Text);
end;
procedure TInheritedForm.AfterAction;
begin
Edit3.Text := IntToStr(C);
end;
Как-то так...
app (2007-10-11 11:55:00) [3]> Правильный Вася (11.10.2007 10:48:08) [8]
В Потрепаться
Правильный Вася (2007-10-11 10:48:00) [4]
> Не путай божий дар с яичницей...
божий дар в твоемописании представляет собой типичную яичницу
asm_viator (2007-10-11 09:47:00) [5]Всем спасибо!
Домой приду - попробую!
To Ping
Объясни поподробнее, плиз!
Ping (2007-10-10 22:36:00) [6]это называется фрейм TFrame
Не путай божий дар с яичницей...
Правильный Вася (2007-10-10 22:35:00) [7]
> Ping (10.10.07 22:04) [4]
это называется фрейм TFrame
Ping (2007-10-10 22:04:00) [8]Сделать базовую форму, в которой прописать всю логику представления. И породить от нее две другие формы, в которых разместить контролы так, как надо по условиям. И когда клиент захочет третий вариант, сделать третью форму, разместив на ней контролы в третьем виде.
asm_viator (2007-10-10 21:35:00) [9]Ага, понял! Надо сделать TNotebook (Align=Client), сделать ему две страницы, в одной - панели, в др. - TPageControl (кол-во страниц - два).
потом меняем TNotebook.PageIndex, меняем парент у панелек на TPageControl.Pages[n], и готово!
Но...
В TPageControl панели не на всю страницу получаются, а такими, какими были в первом TNotebook.PageIndex
asm_viator (2007-10-10 21:09:00) [10]
> поменять свойство Parent
> ?
А что? Это идея! Пробую...
Правильный Вася (2007-10-10 20:59:00) [11]поменять свойство Parent
?