AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Was bestimmt denn die Größe von alClient?

Ein Thema von hronny · begonnen am 31. Mai 2009 · letzter Beitrag vom 31. Mai 2009
Antwort Antwort
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#1

Was bestimmt denn die Größe von alClient?

  Alt 31. Mai 2009, 19:16
Hi!

Wenn man z.B. 2 Panels ineinanderlegt, und dem innenliegenden Panel die Eigenschaft
Code:
Align := alClient
gibt, dann passt sich das Panel automatisch IN das andere Panel ein. Die Größe wird dabei aber von 2 Faktoren zusätzlich beeinflusst: Bevel und Border. Je nachdem was und wieviel eingestellt ist, wird die Größe des innenliegenden Objektes verändert.

Worauf ich hinaus möchte: Wenn man nun seine Eigene Klasse von TComponent ableitet (was z.B. auch das TPanel ist), wo lege ich denn fest wie groß das "Innere Rect" sein kann? In meinen Versuchen wird immer die ganze Größe meiner Komponente benutzt und somit bei alClient meine ganze Komponente überzeichnet. Ich weis noch nicht mal so richtig nach was ich in der Suche dabei suchen muss .
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#2

Re: Was bestimmt denn die Größe von alClient?

  Alt 31. Mai 2009, 19:29
Ich hab die Frage nicht so richtig versanden, aber eventuell ist TControl.ClientRect was für dich. Allerdings ist das dann von TControl, was allerdings auch von TComponent erbt.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Was bestimmt denn die Größe von alClient?

  Alt 31. Mai 2009, 19:30
Es passt sich der Größe (Restgrößre) des Parent an.
Markus Kinzler
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Was bestimmt denn die Größe von alClient?

  Alt 31. Mai 2009, 19:42
Genau es geht um die Restgröße. Evtl ist es das ClientRect? Es geht einfach darum, wenn ich z.B. ein eigenes Panel zeichnen möchte, mit anderen Rahmen als "der Standard" muss ich eine Klasse erzeugen und die Paint Routine überschreiben.
Delphi-Quellcode:
TMyPanelExt = class(TCustomControl)
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
protected
  procedure CreateParams(var Params: TCreateParams); override;
  procedure Paint; override;
published
  property Caption;
end;
Wenn ich nun meinem Panel BevelWidth := 0 und allen Bevel-Typen bvNone zuweise, dann wird bei einem anderem Objekt das ich in mein Panel "lege" und mit alClient versehe, immer mein komplettes Panel benutzt. Ich möchte aber z.B. Rechts und Links 2 Pixel Rand und Oben keinen. Diese Größe muss ich dem Childobjekt irgendwo mitteilen.
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Was bestimmt denn die Größe von alClient?

  Alt 31. Mai 2009, 19:59
Ich denke ich habe es selbst herausgefunden. Man muss die protected Routine "AdjustClientRect" des eigenen Panels überschreiben. Dort kann man dann nach belieben die Ränder/Größe anpassen, die die Childs haben sollen.
Delphi-Quellcode:
...
protected
  procedure AdjustClientRect(var Rect: TRect); override;
...

procedure TMyPanelExt.AdjustClientRect(var Rect: TRect);
begin
  inherited AdjustClientRect(Rect);
  Dec(Rect.Right,1);
  //InflateRect(Rect, -2, -4);
end;
Es macht genau das was ich will.
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz