AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Benötige Hilfe beim Entwickeln einer Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Benötige Hilfe beim Entwickeln einer Komponente

Ein Thema von torud · begonnen am 29. Aug 2007 · letzter Beitrag vom 17. Jul 2013
Antwort Antwort
Seite 8 von 13   « Erste     678 910     Letzte »    
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#71

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 12:37
Blöde Frage, aber wie soll ich dann einen anderen Font wählen können? Per Code? Ich versuche mich...
Danke
Tom
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
946 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#72

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 12:47
Hi torud

Kleines Beispiel für den Font(stammt aus dem Kalender - unter OpenSource).

Delphi-Quellcode:
  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;
und für den Rahmen:

Delphi-Quellcode:
...
procedure TCalendarControl.Paint;
...
begin
  ...
    if FOptions.BorderStyle = bsSingle then
    begin
      Rectangle(R);
      InflateRect(R, -1, -1);
    end;
  ...
end;
...
Für Rectangle geht auch RoundRect.

Die Zuweisung Canvas.Font.Assign(Value) kann auch in Paint erfolgen, dann aber so Canvas.Font.Assign(FFont).

Gruß
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#73

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 12:55
Da fehlt doch aber der Plublished-Abschnitt - Oder?

ich nehme mal an, dass das so aussehen sollte:

Delphi-Quellcode:
  published
    property Font: TFont read FFont write SetFont;
//edit
getestet => FUNZT SUPER!!!

Das mit dem Border muss ich mir auch noch ansehen, da mir das jetzt gar nix sagt...
Danke
Tom
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
946 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#74

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 13:02
Böse Falle, habe ich doch glattweg übersehen.

Richtiger ist es so:
Delphi-Quellcode:
...
  public
    ...
    property Font : TFont read GetFont write SetFont;
    ...

function TCalendarControl.GetFont : TFont;
begin
  Result := Canvas.Font;
end;

...
Aber wie schon geschrieben, Kalender-Kompo unter OpenSource in der DP.


Gruß
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#75

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 13:18
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...

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:
    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);
TextAlign, Layout und FTextWordwrap sind inhaltlich korrekt belegt. Leider werden aber die Angaben von Layout nicht berücksichtigt.
Danke
Tom
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
946 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#76

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 13:33
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:
DT_VCENTER Centers text vertically (single line only).
Dass heißt, wenn der Text vertikal Zentriert sein soll, darf kein DT_WORDBREAK enthalten sein.

Alles klar?

Gruß
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#77

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 14:11
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...
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 14:14
Delphi-Quellcode:
IF FTextWordwrap then myAlignment := MyAlignment or DT_WORDBREAK
else myAlignment := MyAlignment or DT_SINGLELINE;
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
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#79

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 14:29
Gute Idee, aber es bleibt stur!
Danke
Tom
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#80

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 14:47
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!!!!!

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:
published
  property Font;
....
end;
mit dieser Anweisung änderst du einfach die Sichtbarkeit einer Eigenschaft, ohne sie zu überschreiben. Dann ist sie auch im OI!

Gruß oki
42
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 8 von 13   « Erste     678 910     Letzte »    


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 06:38 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