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 7 von 13   « Erste     567 89     Letzte »    
torud

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 08:50
So ich habe es so gemacht, wie Du mir gesagt hast.

Folgendes habe ich dabei getan. Während der Debugger zugeschlagen hat, bin ich mit der Maus über die für mich eigentlich wichtigen Variablen gegangen und habe dabei folgende Daten zusammen getragen:

TextAlign = taCenter
daraus folgt, dass
myAlignment := 1 zugewiesen wird.

Layout = tlBottom
daraus folgt, dass zu
myAlignment DT_BOTTOM "addiert" wird, was am Ende eine 9 ergibt

In DrawText wird dann auch die 9 zugewiesen. Ich hoffe, dass ich alles richtig beschrieben habe. Also ist Layout auf jeden Fall schon mal belegt und es hat auch den richtigen Inhalt, den ich im OI zugewiesen habe. Wenn ich testweise man Layout auf tlCenter stellt ist myAlignment = 5. Das scheint stimmig zu sein...

Keine Ahnung was da nun falsch ist...!?

Ok, und da ich ja einen Text auf das Control schreibe, möchte ich natürlich auch den Font zuweisen können. Ich habe mir aus einem Tutorial alles zusammengesucht, was ich dafür brauche, aber die Zuweisung scheint nicht zu funzen. Kann man denn dem Canvas einen Font zuweisen?

Folgenden Code benutze ich für den Font bisher:
Delphi-Quellcode:
  private
    ...
    FFont: TFont;
  published
    property Font: TFont read FFont write FFont;

constructor TmyPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FFont:=TFont.Create;
  ...

destructor TmyPanel.Destroy;
begin
  FFont.Free;
  ...

procedure TmyPanel.Paint;
begin
  ...
  Canvas.Font := Font;
Habe ich da was wichtiges vergessen?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 09:47
Versuch es mal mitCanvas.Font.Assign(FFont);
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
 
#3

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 10:08
Oje da kommt es zu folgender Fehlermeldung:

Format '%p' ungültig oder nicht kompatibel mit Argument.

Probiert hatte ich das auch schon mit Assign(Font);

Nach der Fehlermeldung wird auch nichts mehr gezeichnet...Scheint was schlimmeres zu sein...
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 10:18
Hä? Hast Du eine Format-Anweisung irgendwo?
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
 
#5

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 10:22
Hier nochmal alles, was ich zum Thema Font in meiner Komponente drin habe:

Delphi-Quellcode:
private
    ...
    FFont: TFont;
  published
    property Font: TFont read FFont write FFont;

constructor TmyPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FFont:=TFont.Create;
  ...

destructor TmyPanel.Destroy;
begin
  FFont.Free;
  ...

procedure TmyPanel.Paint;
begin
  ...
  Canvas.Font := Font;
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 10:38
Delphi-Quellcode:
private
    ...
    FFont: TFont;
  published
    property Font: TFont read FFont write FFont;

constructor TmyPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FFont:=TFont.Create;
  ...

destructor TmyPanel.Destroy;
begin
  FFont.Free;
  ...

procedure TmyPanel.Paint;
begin
  ...
  self.Canvas.Font.Assign(FFont);
So sollte es eigentlich gehen.
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
oki

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 11:09
Hallo torud,

du brauchst keinen eigenen Font creieren. TCanvas besitzt schon einen. Es ist nur so, dass der Font des Controls nicht der Font des Canvas ist (zwei seperate Fonts). Da reicht es aber, wenn du den Font des Controls dem Font des Canvas zuweist.
Delphi-Quellcode:
procedure TMyPanel.Paint;
begin
  Canvas.Font.assign(self.Font);
....
Alle Änderungen auf den Font des Controls (im OI) wirken sich dann automatisch auf den Canvas aus und werden somit beim DrawTest berücksichtigt.

Irgentwo war auch noch eine Methode FontChange oder so. in der ruft man inhereitet auf, damit das Control bei Änderung des Fonts neu gezeichnet wird.

Ob das jetzt mit deiner Textausrichtung geklappt hat, hab ich jetzt nicht so richtig verstanden.

Gruß oki
42
  Mit Zitat antworten Zitat
oki

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 11:16
Ich hab grad noch mal nachgeschaut, ich glaub das mit FontChange war Käse. Wenn du den Font des Controls änderst, wird glaub ich das Control automatisch neu gezeichnet.

Gruß oki
42
  Mit Zitat antworten Zitat
torud

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 11:20
FAST!
Aber nur fast, denn wenn ich die Farbe oder die Schriftart ändere bekomme ich wieder ne böse Fehlermeldung.

Zugriffsverletzung bei Adresse 4000596E in Modul 'rtl60.bpl'. Lesen von Adresse 00000001.

Danach wird natürlich auch wieder nix mehr auf dem Canvas gezeichnet...
Danke
Tom
  Mit Zitat antworten Zitat
torud

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

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 11:22
Hm, kann ich jetzt also die Variablendeklaration FFont löschen oder was soll ich tun?

Habe gerade mal folgendes im OI getan.

Font aufgeklappt und dort dann alles einzeln geändert => Schriftart, Grösse, Farbe usw. Es hat sich nichts in der Kompo getan. Erst als ich ein Resize ausgelöst habe, wurde es neu gezeichnet und dann war alles schön - ohne Fehlermeldung.

Gehe ich aber den Weg über den FontDialog erhalte ich die Fehlermeldungen:

Format '%p' ungültig oder nicht kompatibel mit Argument.

und danach:
Kein Expandieren möglich

und danach:
Zugriffsverletzung bei Adresse 40005974 in Modul 'rtl60.bpl'. Lesen von Adresse FFFFFFDD.
Danke
Tom
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 13   « Erste     567 89     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 10:01 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