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
  • Вопрос задан
  • 465 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Первое:
Frame31.Left := 0;
  Frame31.Top := 0;
  Frame31.Width := Form1.ClientWidth;
  Frame31.Height := Form1.ClientHeight;


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

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

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

Войти через центр авторизации
Похожие вопросы