Se ha detectado un error con los estilos VCL: cuando actualiza el título del formulario, otros controles previamente redibujados dentro del mismo procedimiento no se vuelven a pintar, y se ve obligado a llamar a Repintura, perdiendo un valioso tiempo de procesamiento para volver a dibujar.Estilos Delphi XE2 VCL, actualización de los subtítulos bloquea la invalidación de otros controles
Ejemplo: (estilo de juego de opciones del proyecto/VCL manualmente)
unit Unit11;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm11 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form11: TForm11;
implementation
{$R *.dfm}
procedure TForm11.Button1Click(Sender: TObject);
begin
Panel1.Caption := 'test';
caption := 'glitch';
end;
end.
object Form11: TForm11
Left = 0
Top = 0
Caption = 'Form11'
ClientHeight = 89
ClientWidth = 352
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 8
Top = 8
Width = 121
Height = 57
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Panel1: TPanel
Left = 135
Top = 8
Width = 185
Height = 57
Caption = 'Panel1'
TabOrder = 1
end
end
program Project10;
uses
Vcl.Forms,
Unit11 in 'Unit11.pas' {Form11},
Vcl.Themes,
Vcl.Styles;
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
TStyleManager.TrySetStyle('Cobalt XEMedia');
Application.CreateForm(TForm11, Form11);
Application.Run;
end.
Es solo un ejemplo para mostrar claramente el problema. – hikari
Alright modificó el código, aunque no era necesario, no me quejo aquí, el problema fue bastante claro con el ejemplo inicial. – hikari
No se queja. Si tiene un problema con su código, publicar código inventado no lo ayudará a obtener una respuesta. Lea mi último comentario: puedo crear código para duplicar casi cualquier problema que quiera crear, pero eso no significa que mi código inventado sea el que causa el problema en la vida real. Si quieres ayuda, publica tu código. Y, por cierto, adoptar una actitud hacia las personas a las que les pides ayuda gratuita no suele ser una buena idea: hace que las personas no quieran ayudar. :) –