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

Вниз

Приложение типа панели MSOffice   Найти похожие ветки 

 
beaver   (2002-03-02 13:58) [0]

Нужно написать прогу вроде панели Офиса или панели задач Винды, то есть не только OnTop - это понятно, но и изменение рабочей области десктопа (для maximized). Я это сделал как-то простенько, но вот другие максимизированные приложения реагируют не так же, как на появление упомянутых панелей - их приходится вручную максимизировать заново.
Как бы это сделать по-человечески?
З.Ы.извиняюсь за кривое объяснение - по-другому не получилось ;(


 
[NIKEL]   (2002-03-02 14:09) [1]

Тебе надо создать многооконное приложение, но не хочется захламлять экран большим количеством окошек ? Если так, то создавай формы как обычно, но в каждой форме, за исключением основной, установи BorderStyle=bsNone. Затем на основную форму перетащи панель которая будет управлять заполнением твоих форм данными и полями ввода. Если надо могу дать код такой реализации...


 
beaver   (2002-03-02 14:25) [2]

Это тоже интересно и код можно было бы дать ;)
Но вопрос в другом: нужно, чтобы все максимизируемые приложения разворачивались, заполняя весь десктоп, кроме области, ограниченной TaskBar-ом, панелью офиса(прижатой к стенке) и моей программой. Проще говоря, если она справа прижата, то все крестики РАЗВЕРНУТЫХ окошек не под ней, а слева :)))


 
Nikolay   (2002-03-02 14:50) [3]

не уверен но можно попробовать ловить запуск программы ( окошка и меняеть его размеры)


 
[NIKEL]   (2002-03-02 15:35) [4]

вот код которые обещал дать :

acXxxxx - это действие, которое будет выполняться при нажатии на элемент (пункт меню, кнопка, акселератор и т.д.) ассоциированный с этим действием через свойство Action.
=================

TfrmIMMain
......................
private
(*
используется для заполнения всего экрана
*)
procedure WMSettingChange( var Msg: TMessage);message WM_SETTINGCHANGE;

public
ActiveDetailForm: TForm;//Форма, которая активна в данный момент
procedure SetActiveDetailForm(F: TForm; ParentControl: TWinControl);
end;

var
frmIMMain: TfrmIMMain;

implementation

uses imdata, imSoftL, imSuppl, imEqDet, imDesk, imSpareP, imCateg,
imLocL, imUserL, imEqList, imEqByUsr, imImpBlb, imSftLic, imSupL,
imEqDetR, imRptPrm, imdmRep, imSftLicRepPrm, imSparePR, imSparePPrm,
imSftDetR, imSoftDetRPrmDlg;

{$R *.DFM}
//
function GetWindowsWorkArea: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @Result, 0);
end;

procedure TfrmIMMain.WMSettingChange( var Msg: TMessage);
var
R: TRect;
begin
if (Msg.WParam=SPI_SETWORKAREA) then
begin
R:=GetWindowsWorkArea;
SetBounds(R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top);
end;
Msg.Result:=0;
end;

procedure TfrmIMMain.FormCreate(Sender: TObject);
var
R: TRect;
begin
// заполняем весь экран...
R:=GetWindowsWorkArea;
SetBounds(R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top);
end;

// показываем форму списка Software
procedure TfrmIMMain.acSoftwareListExecute(Sender: TObject);
begin
if (Sender is TAction) then
begin
(Sender as TAction).Checked:=True;
fcbSoftList.Down:=True;
end;
//paWorkArea это панель, которая использется, как управляющая для форм
SetActiveDetailForm(frmIMSoftList, paWorkArea);
end;

// показываем форму "Оборудование"...
procedure TfrmIMMain.acEquipmentDetailsExecute(Sender: TObject);
begin
if (Sender is TAction) then
begin
(Sender as TAction).Checked:=True;
fcbEqDet.Down:=True;
end;
SetActiveDetailForm(frmIMEqDet, paWorkArea);
end;

// устанавливаем активную форму, чтобы выглядело как в MS outlook.......
// ParentControl это TPanel, но это может быть любой оконный элемент управления (который
имеет оконное свойство Handle)
procedure TfrmIMMain.SetActiveDetailForm(F: TForm; ParentControl:
TWinControl);
begin
if ActiveDetailForm<>F then
begin
if Assigned(ActiveDetailForm) then
ActiveDetailForm.Hide;
//следующие две линии делают то, что нам нужно...
F.Parent:=ParentControl;
F.Align:=alClient;
ActiveDetailForm:=F;
F.Show;
end;
end;

procedure TfrmIMMain.FormActivate(Sender: TObject);
begin
//устанавливаем форму по умолчанию при запуске.
if not Assigned(ActiveDetailForm) then
acEquipmentDetailsExecute(acEquipmentDetails);
end;


если его немного доработать, то ты получишь что тебе надо :)


 
beaver   (2002-03-03 09:48) [5]

Может, ты мне полный исходник на мыло запостишь, а то я не совсем представляю, как это все выглядит. Или хотя бы скринсейвер ;)


 
beaver   (2002-03-03 12:58) [6]

На мой вопрос ответил Soulless на www.rsdn.ru.
Кому интересно - http://www.rsdn.ru/forum/message.asp?mid=32826
Надо привыкать к MSDN...



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

Форум: "WinAPI";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
1-17641
team
2002-04-18 21:41
2002.05.06
перевод сишного хидера на Паскаль


1-17595
yennifaire
2002-04-22 17:15
2002.05.06
Помогите, пожалуйста, вычесть даты


4-17740
beaver
2002-03-02 13:58
2002.05.06
Приложение типа панели MSOffice


1-17605
Lord BDV
2002-04-22 18:00
2002.05.06
Неужели этого никто не знает!!!


1-17617
Shadow
2002-04-22 18:57
2002.05.06
Файлы...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский