Autor Beitrag
delphia
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 26.02.18 07:43 
Hallo,
ich habe hier ein merkwürdiges Verhalten. Eine Komponente, die auf einem TCustompanel basiert, reagiert nicht mehr wie erwartet. Die Komponente ist seit Jahren in einem Programm eingebaut und funktionierte bisher ohne Probleme. Die Zuweisung zu Align ist alTop, Ohne erkennbaren Grund, ändert die Komponente aber bei einem Resize des Fenster ihre Größe nicht mehr. Es wurde weder der Quellcode der Komponente angefasst, noch wurde das Package neu compiliert.

Das Problem läßt sich auch isolieren. Neue Anwendung, Komponente drauf, Align := alTop, Komponente nimmt die Fensterbreite ein. Allerdings weder zur Laufzeit noch zu Designzeit ändert sie Ihre Größe, wenn das Fenster resized wird. Wenn ich im Designmodus bin und das Fenster resize, und dann im Objektinspektor erneut alTop auswähle, wird die Größe ans Fenster angepasst. Mache ich das Gleiche zur Laufzeit per Code, passiert gar nichts, auch auf andere Werte wie alClinet oder alBottom reagiert die Komponente nicht.

Zur Kontrolle habe ich andere Komponenten, die auch auf einem TCustompanel basieren ebenfalls in die Kontrollanwendung gesetzt. Kein Problem, Größenänderung zur Design- und Laufzeit.
Eine intensive Durchsicht des Quellcodes der fehlerhaften Komponente brachte jedoch keine Ansatzpunkte.

Jemand ein Idee, vielleicht?
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2132
Erhaltene Danke: 391

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mo 26.02.18 13:00 
Guten Tag delphia,

so ohne Code ist das ein Fall für die Akte XY ungelöst.
Im Normalfall:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
type
  TPanelTest = class(TCustomPanel)
  published
    property Align;
  end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    FPanel: TPanelTest;
  public
    { Public-Deklarationen }
  end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  FPanel := TPanelTest.Create(self);
  FPanel.Left := 20;
  FPanel.Top := 20;
  FPanel.Parent := self;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FPanel.Align := alTop;  // Zur Laufzeit ändern
end;

... funktioniert es auch.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)