Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.143.9.115] |
|
Сообщ.
#1
,
|
|
|
В MDI-приложении есть главная форма uMain и дочерние формы uChartAcc, uGas.
На дочерней форме сверху вниз расположены: Panel, Dbgrid, dbedit, dbmemo. На главной форме сверху вниз расположены: Mainmenu, Toolbar, Tabset, statusbar. В клиентской области главной формы на экране не помешается часть компонентов дочерней формы(компоненты dbedit, dbmemo) и, следовательно, появляется вертикальная прокрутка.Хочу чтобы дочерняя форма полностью поместилась в главной форме, в client area,между toolbar и statusbar, без вертикальной полосы прокрутки. Главная форма: Formstyle:MDIForm WindowState: wsMaximized дочерние формы: Formstyle:MDIChild Align- alClient или alCustom Position-пробовал poDefaultPosOnly, poDefault, poDesigned AutoSize:false Пробовал установки размеров формы поместить в процедурах OnCreate, OnShow, OnResize но ничего не меняется. https://drive.google.com/drive/folde...TN?usp=sharing unit Umain; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ComCtrls, Vcl.Tabs, Vcl.ToolWin; type TFmain = class(TForm) ToolBar: TToolBar; MDIChildrenTabs: TTabSet; MainMenu1: TMainMenu; StatusBar: TStatusBar; NChartAcc: TMenuItem; realisatia1: TMenuItem; procedure NChartAccClick(Sender: TObject); procedure realisatia1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure MDIChildCreated(const childHandle : THandle); procedure MDIChildDestroyed(const childHandle : THandle); end; var fMain: TFmain; implementation uses uChartAcc, uGas; {$R *.dfm} procedure TFmain.MDIChildCreated(const childHandle : THandle); begin mdiChildrenTabs.Tabs.AddObject(TForm(FindControl(childHandle)).Caption, TObject(childHandle)); mdiChildrenTabs.TabIndex := -1 + mdiChildrenTabs.Tabs.Count; end; procedure TFmain.MDIChildDestroyed(const childHandle : THandle); var idx: Integer; begin idx := mdiChildrenTabs.Tabs.IndexOfObject(TObject(childHandle)); mdiChildrenTabs.Tabs.Delete(idx); end; procedure TFmain.NChartAccClick(Sender: TObject); begin application.CreateForm(TfChartAcc, fChartAcc); fChartAcc.Show; end; procedure TFmain.realisatia1Click(Sender: TObject); begin application.CreateForm(TFgas, Fgas); Fgas.Show; end; end. unit UChartAcc; interface uses winapi.Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, DB, ibx.IBCustomDataSet, ibx.IBDatabase, Mask, StdCtrls, ComCtrls, ExtCtrls, ibx.IBSQL, Menus, Vcl.Buttons; type TfChartAcc = class(TForm) Panel1: TPanel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; edAcDescrpt: TDBMemo; Panel2: TPanel; edAccntNum: TDBEdit; edAccTitle: TDBEdit; DBGrid1: TDBGrid; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var fChartAcc: TfChartAcc; implementation uses uMain; {$R *.dfm} procedure TfChartAcc.FormClose(Sender: TObject; var Action: TCloseAction); begin action:=caFree; end; procedure TfChartAcc.FormCreate(Sender: TObject); var r: TRect; begin FMain.MDIChildCreated(self.Handle); Left:=0; Top:=Fmain.Toolbar.Height+Fmain.MDIChildrentabs.height; Height:=Fmain.ClientHeight-Fmain.Toolbar.Height-Fmain.MDIChildrentabs.height-Fmain.StatusBar.Height-2*GetSystemMetrics(SM_CXEDGE); Width:=Fmain.ClientWidth- 2*GetSystemMetrics(SM_CXEDGE); {if not WinApi.Windows.GetClientRect(FMain.ClientHandle, r) then RaiseLastOSError; fChartAcc.BoundsRect := r; } end; procedure TfChartAcc.FormDestroy(Sender: TObject); begin FMain.MDIChildDestroyed(self.Handle); end; procedure TfChartAcc.FormResize(Sender: TObject); begin { Left:=0; Top:=Fmain.Toolbar.Height+Fmain.MDIChildrentabs.height; Height:=Fmain.ClientHeight-Fmain.Toolbar.Height-Fmain.MDIChildrentabs.height-Fmain.StatusBar.Height-2*GetSystemMetrics(SM_CXEDGE); Width:=Fmain.ClientWidth- 2*GetSystemMetrics(SM_CXEDGE); } end; procedure TfChartAcc.FormShow(Sender: TObject); begin Left:=0; Top:=Fmain.Toolbar.Height+Fmain.MDIChildrentabs.height; Height:=Fmain.ClientHeight-Fmain.Toolbar.Height-Fmain.MDIChildrentabs.height-Fmain.StatusBar.Height-2*GetSystemMetrics(SM_CXEDGE); Width:=Fmain.ClientWidth- 2*GetSystemMetrics(SM_CXEDGE); end; end. Прикреплённый файл2018_12_02_child_form_at_design_time.png (15,53 Кбайт, скачиваний: 424) Прикреплённый файл2018_12_02__main_form.png (10,07 Кбайт, скачиваний: 419) Прикреплённый файл2018_12_02_child_form_when_run.png (14,24 Кбайт, скачиваний: 425) |