sorry_i_noob
@sorry_i_noob

Как в Delphi сделать так, чтобы фрейм полностью перекрывал форму, на которой он находится (с учетом того, что форму можно скроллить)?

Здравствуйте. В моем приложении есть несколько фреймов. Все они располагаются на одной форме - на главной. В некоторых фреймах высота может быть очень большой, поэтому должна быть возможность скроллить форму, на которой расположены такие фреймы. Я поставил флажок autoscroll в true для главной формы, на которой расположены все фреймы. И написал следующий код - чтобы высота и ширина фреймов соответствовала форме.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Unit3;

type
  TForm1 = class(TForm)
    Frame31: TFrame3;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure SetPosition;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetPosition;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  SetPosition;
end;

procedure TForm1.SetPosition;
begin
  Frame31.Left := 0;
  Frame31.Top := 0;
  Frame31.Width := Form1.Width;
  Frame31.Height := Form1.Height;
end;

end.


Вот код одного из фреймов - ничего необычного.
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TFrame3 = class(TFrame)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R *.dfm}

end.

Помимо фреймов на главной форме у меня есть некоторые другие элементы. И почему-то если скроллить, то фреймы оказываются меньше, чем форма. Я сделал скриншот, посмотрите, пожалуйста. Красный - это фрейм. А серый - это форма. Почему форма торчит из под фрейма? Как сделать так, чтобы он (фрейм) ПОЛНОСТЬЮ перекрывал форму? И если информация на нем не помещается, то форму можно будет скроллить - чтобы посмотреть непоместившуюся информацию фрейма.
5cfda68c62a96640660790.png5cfda693a6165256902833.png5cfda699d45ac601254391.png
  • Вопрос задан
  • 496 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Первое:
Frame31.Left := 0;
  Frame31.Top := 0;
  Frame31.Width := Form1.ClientWidth;
  Frame31.Height := Form1.ClientHeight;


Второе: первое не нужно, если установить у фреймаAlign = alClient

И это противоречит
фреймах высота может быть очень большой, поэтому должна быть возможность скроллить форму
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы