На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Высота дочерней формы больше чем главной (MDI-приложение, Delphi)
    В 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

    ExpandedWrap disabled
      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.


    ExpandedWrap disabled
      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)
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0218 ]   [ 19 queries used ]   [ Generated: 16.04.24, 07:29 GMT ]