Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.04;
Скачать: CL | DM;

Вниз

TPageControl, TPanel...   Найти похожие ветки 

 
asm_viator ©   (2007-10-10 20:44) [0]

Здравствуйте все!!!
Есть такая проблема: у заказчика разрешение монитора жалкое (~600 x ~800). Поэтому мне надо кое-что учесть (см. далее).
Мне нужно, чтобы можно было переключаться между двумя режимами:
1) две панельки со сплиттером меж ними
2) TPageControl с двумя страницами
Находиться можно только в одном из режимов, то есть видны только панели или виден только TPageControl. При этом мне надо, чтобы все контролы, которые были в первой панели, оказались в первой странице TPageControl, а которые были во второй панели - во второй странице.
А теперь внимание вопрос: как это осуществить?


 
Правильный Вася   (2007-10-10 20:59) [1]

поменять свойство Parent
?


 
asm_viator ©   (2007-10-10 21:09) [2]


> поменять свойство Parent
> ?

А что? Это идея! Пробую...


 
asm_viator ©   (2007-10-10 21:35) [3]

Ага, понял! Надо сделать TNotebook (Align=Client), сделать ему две страницы, в одной - панели, в др. - TPageControl (кол-во страниц - два).
потом меняем TNotebook.PageIndex, меняем парент у панелек на TPageControl.Pages[n], и готово!

Но...
В TPageControl панели не на всю страницу получаются, а такими, какими были в первом TNotebook.PageIndex


 
Ping   (2007-10-10 22:04) [4]

Сделать базовую форму, в которой прописать всю логику представления. И породить от нее две другие формы, в которых разместить контролы так, как надо по условиям. И когда клиент захочет третий вариант, сделать третью форму, разместив на ней контролы в третьем виде.


 
Правильный Вася   (2007-10-10 22:35) [5]


> Ping   (10.10.07 22:04) [4]

это называется фрейм TFrame


 
Ping   (2007-10-10 22:36) [6]

это называется фрейм TFrame

Не путай божий дар с яичницей...


 
asm_viator ©   (2007-10-11 09:47) [7]

Всем спасибо!
Домой приду - попробую!
To Ping
Объясни поподробнее, плиз!


 
Правильный Вася   (2007-10-11 10:48) [8]


> Не путай божий дар с яичницей...

божий дар в твоем описании представляет собой типичную яичницу


 
app ©   (2007-10-11 11:55) [9]

> Правильный Вася  (11.10.2007 10:48:08)  [8]

В Потрепаться


 
Ping   (2007-10-11 13:10) [10]

Базовая форма:

На ней кнопка 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;


Как-то так...


 
asm_viator ©   (2007-10-11 15:24) [11]

To Ping
Спасибо за ответ! Идею понял!

У меня интерфейс проги немного другой: там-сям разбросаны TToolBar"ы, TMainMenu и две панели (со сплиттером меж ними):
1) Panel1 с чем-то вроде информации о текущем выбранном объекте (Align=Left)
2) Panel2 (Align=Client), где и требуется разместить либо две панели (Panel3 & Panel4), либо один PageControl1.

Переключение между режимами будет посредством TToolBar

Пробовал делать как в [3], но есть неразрешенная пока проблема (в том же посте)



Страницы: 1 вся ветка

Текущий архив: 2007.11.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
2-1192104275
tytus
2007-10-11 16:04
2007.11.04
функция определения выбранного item-a


15-1190865542
vajo
2007-09-27 07:59
2007.11.04
Не могу установить XP


15-1191089731
lookin
2007-09-29 22:15
2007.11.04
Скорость удаления данных из памяти


11-1175282665
Trible
2007-03-30 23:24
2007.11.04
Checkbox для ecmListEdit


1-1187360648
andreoman
2007-08-17 18:24
2007.11.04
уничтожение формы при ее закрытии