Thema: Delphi ClientRect begrenzen

Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: ClientRect begrenzen

  Alt 25. Aug 2007, 10:35
Hi unwissender,

Ich möchte es weitgehenst vermeiden, dass weitere Komponenten in meinem Control enthalten sind. Ich überarbeite gerade meine aktuelle Programmversion. Die elemente werden alle zur Laufzeit hinzugefügt. Das sin dann zum Schluss mehrere hundert (ist wirklich so, und ich war auch überrascht). In den einzelnen Controls weitere Kompos einzubinden hat in der Vergangenheit beim Zeichnen arge Performance Probleme verursacht. Deshalb gehe über den Weg "Zeichnen auf Canvas" ran. Da es viele verschiedene eigene Controls geben wird, die ich in einen solchen Container legen werde (zur Laufzeit) währe es mir lieber, wenn der Container das händelt. Wie bei einem Fenster. da kann man auch nichts in den Titel reinschieben.

Ich habs jetzt schon mal über ClientHeight und ClientWidth versucht. aber da wird das komplette Control verkleinert wenn ich diese Werte kleiner als Width und Height setze.

die Hilfe sagt hierzu eigentlich, dass das die richtige Stelle ist. aber entweder ich habe das falsch verstanden, oder was falsch gemacht.

Zitat:
Beschreibung

Mit ClientHeight können Sie die Höhe des Client-Bereichs des Steuerelements abrufen oder ändern.

Bei TControl ist ClientHeight mit der Eigenschaft Height identisch. In abgeleiteten Klassen kann aber eine ClientHeight-Eigenschaft implementiert werden, die sich von Height unterscheidet. So entspricht beispielsweise der Wert der Eigenschaft ClientHeight eines Formulars dem Wert von Height abzüglich der Höhe der Titelleiste, des Rahmens und der Bildlaufleiste.
Mein Code:
Delphi-Quellcode:
procedure TBaseRTControl.SetClientRect;
begin
  if FShowTitle then begin
    // minus Titelhöhe und ein Pixel Rahmen
    self.ClientHeight := Height - Abs(self.Canvas.Font.Height) - 7;
    self.ClientWidth := Width - 2;
  end else begin
    self.ClientHeight := Height - 2;
    self.ClientWidth := Width - 2;
  end;
end;
Gruß oki
42
  Mit Zitat antworten Zitat