![]() |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Blöde Frage, aber wie soll ich dann einen anderen Font wählen können? Per Code? Ich versuche mich...
|
Re: Benötige Hilfe beim Entwickeln einer Komponente
Hi torud
Kleines Beispiel für den Font(stammt aus dem Kalender - unter OpenSource).
Delphi-Quellcode:
und für den Rahmen:
TCalendarControl = class(TCustomControl)
private ... FFont : TFont; ... procedure SetFont(Value : TFont); ... public constructor Create(aOwner : TComponent); override; destructor Destroy; override; ... end; ... implementation ... constructor TCalendarControl.Create(aOwner : TComponent); begin inherited Create(aOwner); ... FFont := TFont.Create; FFont.Name := 'Arial'; FFont.Size := 8; ... end; procedure TCalendarControl.SetFont(Value : TFont); begin if FFont <> Value then begin FFont.Assign(Value); Canvas.Font.Assign(Value); Invalidate; end; end; destructor TCalendarControl.Destroy; begin ... FFont.Free; inherited Destroy; end;
Delphi-Quellcode:
Für Rectangle geht auch RoundRect.
...
procedure TCalendarControl.Paint; ... begin ... if FOptions.BorderStyle = bsSingle then begin Rectangle(R); InflateRect(R, -1, -1); end; ... end; ... Die Zuweisung Canvas.Font.Assign(Value) kann auch in Paint erfolgen, dann aber so Canvas.Font.Assign(FFont). Gruß |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Da fehlt doch aber der Plublished-Abschnitt - Oder?
ich nehme mal an, dass das so aussehen sollte:
Delphi-Quellcode:
//edit
published
property Font: TFont read FFont write SetFont; getestet => FUNZT SUPER!!! Das mit dem Border muss ich mir auch noch ansehen, da mir das jetzt gar nix sagt... |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Böse Falle, habe ich doch glattweg übersehen.
Richtiger ist es so:
Delphi-Quellcode:
Aber wie schon geschrieben, Kalender-Kompo unter OpenSource in der DP.
...
public ... property Font : TFont read GetFont write SetFont; ... function TCalendarControl.GetFont : TFont; begin Result := Canvas.Font; end; ... Gruß |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Jo ich habe dort schon mal geschaut, aber wie Du selbst dort in Deinem letzten post schreibst, hast du den Source rausgenommen. Also nix zum schauen... :gruebel:
BTW: Ich habe die Veröffentlichung nicht in public stehen, sondern in published, da es anders nicht ging! Ansonsten ist es nun ok mit dem Font zumindest. BTW2: Nun bräuchte ich nur noch etwas Unterstützung mit dem "Layout", da da die Vertikale Ausrichtung nicht funktioniert. Dies wird derzeit so gemacht. Horizontal läuft es, Vertikal nicht. Zeilenumbruch geht auch.
Delphi-Quellcode:
TextAlign, Layout und FTextWordwrap sind inhaltlich korrekt belegt. Leider werden aber die Angaben von Layout nicht berücksichtigt.
case TextAlign of
taCenter : myAlignment := DT_CENTER; taLeftJustify : myAlignment := DT_LEFT; taRightJustify : myAlignment := DT_RIGHT; end; //funzt case Layout of tlTop : myAlignment := myAlignment or DT_TOP; tlCenter : myAlignment := myAlignment or DT_VCENTER; tlBottom : myAlignment := myAlignment or DT_BOTTOM; end; //funzt nicht IF FTextWordwrap then myAlignment := MyAlignment or DT_WORDBREAK; //funzt auch DrawText(self.Canvas.Handle, PChar(FText), -1, TextRect, myAlignment); |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Hi torud,
ich habe gerade kein D6Prof. auf meinem Rechner installiert, aber schau doch mal in der Hilfe (Windows SDK) nach DrawText, dort steht: Zitat:
Alles klar? Gruß |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Ich will Dir nicht widersprechen, da ich einfach zu wenig Erfahrungen habe, aber wenn dem so wäre, müsste es ja funktionieren, wenn ich einen einfachen kurzen Text in die Komponente schreibe, WordWrap auf False stellt und im Layout tlCenter wähle. Dem ist aber nicht so...der Text bleibt stur tlTop...
Die SDK habe ich nicht zur Hand, werde aber mal googlen... |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Delphi-Quellcode:
IF FTextWordwrap then myAlignment := MyAlignment or DT_WORDBREAK
else myAlignment := MyAlignment or DT_SINGLELINE; |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Gute Idee, aber es bleibt stur!
|
Re: Benötige Hilfe beim Entwickeln einer Komponente
Hi torud,
schau in der MSDN-Hilfe unter DrawText nach, da sind die Flags erläutert. Zum Thema Font. Noch mal, keinen eigenen Font kreieren!!!!! :warn: Da du dein Control von TCustomControl ableitest, sind die Eigenschaften wie Font usw. natürlich noch nicht published. also mußt du die Sichtbarkeit der Eigenschaft ändern. Mach einfach folgendes:
Delphi-Quellcode:
mit dieser Anweisung änderst du einfach die Sichtbarkeit einer Eigenschaft, ohne sie zu überschreiben. Dann ist sie auch im OI!
published
property Font; .... end; Gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 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