Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
8-1168860446
SoulFlow
2007-01-15 14:27
2007.11.04
bass


9-1086063518
КиТаЯц
2004-06-01 08:18
2007.11.04
GLScene форум


8-1168494147
roughneck
2007-01-11 08:42
2007.11.04
Быстрый способ чтения Jpeg


2-1191946252
Err_f
2007-10-09 20:10
2007.11.04
Как с помощью Delphi можно связаться с сервером точного времени?


15-1191344478
ERGef
2007-10-02 21:01
2007.11.04
Случайные числа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский