Question

Je dois mettre à jour les éléments autour d'une zone de saisie lorsqu'elle change de taille.

TEdit n'a pas d'événement OnResize .

Une zone d’édition peut être redimensionnée à différents moments, par exemple:

  • changer la largeur / la hauteur dans le code
  • formulaire mis à l'échelle pour la mise à l'échelle DPI
  • la police a changé

Et je suis sûr que d’autres, je ne les connais pas.

J'ai besoin d'un seul événement pour savoir quand une boîte d'édition a changé de taille. Existe-t-il un message Windows que je peux sous-classer dans la boîte de saisie et saisir?

Était-ce utile?

La solution

OnResize est déclaré en tant que propriété protégée de TControl. Vous pouvez l'exposer à l'aide d'un "cracker". classe. C'est un peu un bidouillage, cependant.

type
  TControlCracker = class(TControl);

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  TControlCracker(Edit1).OnResize := MyEditResize;
end;

procedure TForm1.MyEditResize(Sender: TObject);
begin
  Memo1.Lines.Add(IntToStr(Edit1.Width));
end;

Autres conseils

Avez-vous essayé quelque chose comme ça:

unit _MM_Copy_Buffer_;

interface

type
  TMyEdit = class(TCustomEdit)
  protected
    procedure Resize; override;
  end;

implementation

procedure TMyEdit.Resize;
begin
  inherited;
  if not (csLoading in ComponentState) then
  begin
    // react on new size
  end;
end;

end.

ou ceci:

unit _MM_Copy_Buffer_;

interface

type
  TCustomComboEdit = class(TCustomMaskEdit)
  private
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
  end;

implementation

procedure TCustomComboEdit.WMSize(var Message: TWMSize);
begin
  inherited;
  if not (csLoading in ComponentState) then
  begin
    // react on new size
  end;
  UpdateBtnBounds;
end;

end.

Gestion du message wm_Size . Sous-classez un contrôle en attribuant une nouvelle valeur à son WindowProc propriété; veillez à stocker l'ancienne valeur pour pouvoir y déléguer d'autres messages.

Voir aussi: wm_WindowPosChanged

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top