![]() |
Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Hallo, ich versuche eine von TCustomLabel abgeleitete Komponente zu erstellen, die als Linklabel dienen soll. Das neue Label soll alle Font-Eigenschaften seines Parent (z.B. der TForm, auf der das Label liegt) verwenden, bis auf Font.Style (unterstrichen) und Font.Color (blau).
Was ich versucht habe: Ich setze in der Komponente in der Create-Methode ParentFont := true, aber sobald ich zusätzlich Font.Style und Font.Color setze, wird Font.ParentFont automatisch wieder auf false gesetzt (erkennbar an der falschen Schriftart) :( Und auf die Schriftart von Parent (der TForm) kann ich von der Komponente aus auch nicht zugreifen, da Parent.Font.Name keine public Eigenschaft ist :( Das gewünschte Ergebnis erhalte ich nur, indem ich in der Komponente nur ParentFont auf true setze und die Font.Style und Font.Color erst nach Einbau der Komponente in meiner TForm überschreibe :gruebel: Gibt es keine Möglichkeit, alles in die Komponente selbst zu packen, ohne nachträglich noch Eigenschaften verändern zu müssen :?: |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Wenn Du nicht über .Create gehst, dann nicht.
Gruß K-H |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Viel einfacher!
Verlager das problem in das Form... Itteriere über alle Komponenten auf dem Form und setzt die Font Eigenschaften... So brauchst Du nix ableiten und keine eigene Componente erzeugen! Mavarik |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Oder die Paint-Methode überschreiben und dort Canvas.Font entsprechend formatieren.
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
In dieser Reihenfolge ParentFont := true; Font.Color := clBlue; Font.Style := [fsUnderline]; ist das Label blau und unterstrichen, hat aber nicht die Schriftart vom Parent. In dieser Reihenfolge Font.Color := clBlue; Font.Style := [fsUnderline]; ParentFont := true; hat das Label die Schriftart vom Parent, aber ist nicht blau und nicht unterstrichen. :-( |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Entweder es hat dieselbe Schrift wie der Parent oder eben nicht. Wenn Du zuerst sagst "Ja, hat es" und dann nachträglich die Schrift änderst, ist es ja wieder eine andere als die des Parents. Von daher ist das Verhalten ja nur logisch und richtig.
[edit] Schnell zusammengeschustert und nicht sonderlich schön, tut aber:
Delphi-Quellcode:
[/edit]
type
TTestLabel = class(StdCtrls.TLabel) protected procedure Paint; override; end; ... procedure TTestLabel.Paint; begin Canvas.Font.Assign(Font); Canvas.Font.Style := Canvas.Font.Style + [fsBold, fsUnderLine]; Canvas.Brush.Style := bsClear; Canvas.Font.Color := clNavy; if AutoSize then Width := Canvas.TextWidth(Caption); Canvas.TextOut(0, 0, Caption); end; |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
Delphi-Quellcode:
Mavarik
procedure TForm42.FormCreate(Sender: TObject);
var i : integer; begin For i:= 0 to Self.ComponentCount-1 do begin if self.Components[i] is TLabel then begin with TLabel(self.Components[i]) do begin Font.Color := clBlue; // USW... end; end; end; end; |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Was hast Du eigentlich gegen Komponenten? Wenn er/sie nur ein oder zwei solcher Labels haben möchte, dann bietet sich eine eigene Komponente doch geradezu an, vor allem, wenn man so etwas in mehreren Projekten braucht (Wiederverwendbarkeit).
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
Besonders für die, die keine Komponenten installieren können/wollen... Mavarik |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Ob das jetzt der bessere Weg ist möchte mal bezweifeln, gerade dann, wenn nur einige wenige Labels die "Link"-Funktionalität haben sollen. Ich kann mir doch nicht für jede denkbare Konstellation eine TForm-Ableitung machen.
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
Ich glaube ich habe in keine Programm auch nur ein einziges TForm... Das sind alles immer TMyForm's Mavarik |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Wenn man immer eine ähnliche Art von Programmen (gerade hinsichtlich der GUI) schreibt, dann mag das auch angehen. Ob man das aber jetzt für andere Anwender verallgemeinern kann...
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Welche Delphi-Version?
![]() Im OnPaint ist es vollkommen grauenhaft untergebracht. Hab ich hier auf Arbeit mit zu kämpfen, weil irgendwann mal irgendwer dachte dort etwas immer wieder neu überschrteiben zu müssen. Wenn man dann doch mal was anderes braucht, kann man es vergessen. Vorschlag: ![]() Dazu dann noch die Font-Eigenschaft und ParentFont per "stored False" aus der DFM ausschließen. |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
:stupid: |
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
IIRC wird Loaded aber nur aufgerufen, wenn die Komponente zur Entwurfszeit angelegt wurde. Macht man das dynamisch zur Laufzeit, isses wieder Essig.
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Man kann ja in das Create am Ende ein
Delphi-Quellcode:
in Oncreate legen, bzw. auch noch beim Ändern des Parent den Font des Parent auslesen und danach Style neu setzen.
if not Assigned(Owner) or not (csLoading in Owner.ComponentStyle) then Load;
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
|
AW: Komponente benützt ParentFont und soll Font.Style und Font.Color überschreiben
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz