AGB  ·  Datenschutz  ·  Impressum  







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

Komponente von TShape mit Caption

Ein Thema von entwickler · begonnen am 30. Jan 2012 · letzter Beitrag vom 5. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#1

Komponente von TShape mit Caption

  Alt 30. Jan 2012, 15:33
Hallo DP

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 [http://de.wikipedia.org/wiki/Sudoku]), in dem eine Zahl angezeigt werden kann. Die Komponente lässt sich meiner Meinung nach gut von TShape ableiten, weil man so die Rahmen des Blocks individuell gestallten lassen kann, jedoch fehlt die Eigenschaft 'Caption' oder 'Font'. Eigentlich bräuchte ich ja auch nur ein einzelnes Zeichen (Char), also nicht mal einen string als Caption.
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
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Komponente von TShape mit Caption

  Alt 30. Jan 2012, 15:39
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#3

AW: Komponente von TShape mit Caption

  Alt 30. Jan 2012, 16:05
Wie lasse ich den Text denn in der Paint-Methode zeichnen? Und außerdem: Wie kann ich diesem Text einen eigenen Font zuweisen?
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponente von TShape mit Caption

  Alt 30. Jan 2012, 16:09
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#5

AW: Komponente von TShape mit Caption

  Alt 30. Jan 2012, 17:09
Ich habe bisher folgendes geschrieben:
Delphi-Quellcode:
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;
Doch bei der property Caption : string weis ich nicht, was ich bei write schreiben soll, weil Delphi 'write Text' nicht akzeptiert. Was tun?
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: Komponente von TShape mit Caption

  Alt 30. Jan 2012, 17:26
Delphi-Quellcode:
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;
Das müsste genügen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (30. Jan 2012 um 18:31 Uhr) Grund: Paint hinzugefügt
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: Komponente von TShape mit Caption

  Alt 31. Jan 2012, 08:29
Ein Panel mit Ctrl3D=False und Bevel* = bvNone reicht nicht?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Komponente von TShape mit Caption

  Alt 31. Jan 2012, 09:20
Die Komponente lässt sich meiner Meinung nach gut von TShape ableiten, weil man so die Rahmen des Blocks individuell gestallten lassen kann, ...
Wenn du Wert auf eine individuelle Gestaltung legst, dann solltest du noch tiefer greifen und von Delphi-Referenz durchsuchenTGraphicControl ableiten.

Das Zeichnen musst du halt dann komplett selber erledigen, wird aber in diesem speziellen Fall auch sinnvoller sein - meine Meinung
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: Komponente von TShape mit Caption

  Alt 31. Jan 2012, 09:39
Würde ich zwar auch so machen, aber vielleicht ist das im Moment noch zu ambitioniert. Obwohl: man wächst ja mit seinen Aufgaben
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von entwickler
entwickler

Registriert seit: 16. Feb 2011
Ort: Herten
78 Beiträge
 
Delphi 5 Professional
 
#10

AW: Komponente von TShape mit Caption

  Alt 5. Feb 2012, 15:34
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?
Traue einem PC nur soweit, wie du ihn werfen kannst.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:34 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