![]() |
Komponente von TShape mit Caption
Hallo DP :hi:
Kurz: ich möchte eine Komponente schreiben, welche SudokuKasten heißen soll. Wie der Name schon schlussfolgern lässt, soll die Komponente einen einzigen Block darstellen (vom Spiel Sudoku [ ![]() Später ist mir aufgefallen, dass ein Vorfahrtyp von TShape, nämlich TControl die Eigenschaft Text besitzt [Hierachie: TComponent -> TControl -> TGraphicControl -> TShape (-> TSudokuKasten)]. Wie kann ich diese Eigenschaft der von TShape abgeleiteten Komponente wieder zuweisen, wie kann ich die Eigenschaft Font (ebenfalls in TControl enthalten) dem Text dann zuweisen und wie kann ich diese Caption in der Komponente (evtl. auch mittig) anzeigen lassen? Bis jetzt habe ich noch nicht begonnen, an der Komponente zu schreiben, weil ich nicht weis, wie ich diese aufbauen soll. Kann ich vielleicht die Eigenschaft Caption auch vom Typ Char deklarieren? Ich bin für jeden (weiterhelfenden) Kommentar dankbar :wink: |
AW: Komponente von TShape mit Caption
Ich habe jetzt nicht nachgesehen, aber vermutlich sind die "unsichtbaren" Eigenschaften in der Vorfahrklasse protected deklariert. Um sie also öffentlich verfügbar zu machen musst Du sie nur in den published-Abschnitt aufnehmen. Und für die Darstellung müsstest Du dann die Paint-Methode überschreiben und da dann Deinen Text ausgeben.
|
AW: Komponente von TShape mit Caption
Wie lasse ich den Text denn in der Paint-Methode zeichnen? Und außerdem: Wie kann ich diesem Text einen eigenen Font zuweisen?
|
AW: Komponente von TShape mit Caption
Aus dem Kopf und ohne Gewähr:
Delphi-Quellcode:
procedure TDeinShape.Paint;
var R: TRect; begin inherited; Canvas.Font.Assign(Font); Canvas.Brush.Style := bsClear; R := Rect(0, 0, Width, Height); DrawText(Canvas.Handle, PChar(Text), -1, R, DT_SINGLELINE or DT_CENTER or DT_VCENTER); end; |
AW: Komponente von TShape mit Caption
Ich habe bisher folgendes geschrieben:
Delphi-Quellcode:
Doch bei der property Caption : string weis ich nicht, was ich bei write schreiben soll, weil Delphi 'write Text' nicht akzeptiert. Was tun?
type
TSudokuKasten = class(TShape) private { Private-Deklarationen } protected { Protected-Deklarationen } public constructor Create (AOwner : TComponent); override; destructor Destroy; override; { Public-Deklarationen } published property Caption : string read Text write SetText; //property Font : TFont read write SetFont; { Published-Deklarationen } end; |
AW: Komponente von TShape mit Caption
Delphi-Quellcode:
Das müsste genügen.
type
TSudokuKasten = class(TShape) private { Private-Deklarationen } protected { Protected-Deklarationen } procedure Paint; override; public constructor Create (AOwner : TComponent); override; destructor Destroy; override; { Public-Deklarationen } published { Published-Deklarationen } property Caption; property Font; end; |
AW: Komponente von TShape mit Caption
Ein Panel mit Ctrl3D=False und Bevel* = bvNone reicht nicht?
|
AW: Komponente von TShape mit Caption
Zitat:
![]() Das Zeichnen musst du halt dann komplett selber erledigen, wird aber in diesem speziellen Fall auch sinnvoller sein - meine Meinung :) |
AW: Komponente von TShape mit Caption
Würde ich zwar auch so machen, aber vielleicht ist das im Moment noch zu ambitioniert. Obwohl: man wächst ja mit seinen Aufgaben ;)
|
AW: Komponente von TShape mit Caption
Da kann ich DeddyH momentan nur zustimmen :).
Wenn ich also die Methode von Furtbichler benutze, habe ich zwar die Egienschaft Caption, aber keinen Rahmen, den ich gestallten kann. Wie kann ich denn dann Rahmen beispielsweise von TShape einbringen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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