![]() |
font im memo?
wie kann ich eine memo mit meiner font-komponente definieren?
benutze diesen Code, aber ohne Erfolg:
Delphi-Quellcode:
danach benutze ich eine tnpdf-komponente zur Darstellung im pdf-format. Aber der Font ändert sich nicht, wie definiert!!
procedure Takn.Label5Click(Sender: TObject);
var i: integer; begin fontdialog1.Execute; FontDialog1.Font := memo1.Font; for i := 0 to (memo1.ControlCount - 1) do if (memo1.Controls[i] is TButton) then (memo1.Controls[i] as TButton).Font := FontDialog1.Font end; |
Re: font im memo?
Ist das Memo ein Standard-Memo von Delphi ? :gruebel:
|
Re: font im memo?
Zitat:
|
Re: font im memo?
na klar, jetzt geht's, danke. Da stand mir irgendeiner auf der Leitung...
|
Re: font im memo?
Hallo Leute - besser so:
Delphi-Quellcode:
Grüße vom marabu
with FontDialog do
begin Font.Assign(Memo.Font); if Execute then Memo.Font.Assign(Font); end; |
Re: font im memo?
danke wiedermal, marabu, hab's jetzt so:
Delphi-Quellcode:
aber sag mal, wieso ist das so besser?
procedure Takn.Label5Click(Sender: TObject);
begin with FontDialog1 do begin Font.Assign(Memo1.Font); if Execute then Memo1.Font.Assign(Font); end; end; ich stelle ja das pdf-file mit meiner tnpdf-Komponente dar, wenn ich aber jetzt den Font aus meiner Memo übernehmen will gibt's ne Fehlermeldung:
Delphi-Quellcode:
Message beim Kompilieren:
//printpdf1.Font.Name:=pohelvetica;
//printPDF1.Font.Size:=20; printPDF1.Font := memo1.font; printPDF1.MemoOut(30,940, Memo1); [Fehler] AknUni.pas(263): Inkompatible Typen: 'TPDFFont' und 'TFont' der Font-Teil des tnpdf sieht so aus:
Delphi-Quellcode:
Type TPDFOrientation = (poPortrait, poLandscape);
Type TPDFBrushStyle = (poSolid, poDashed, poBeveled, poInset, poUnderline); Type TPDFFontName = (poHelvetica,poHelveticaBold,poHelveticaOblique, poHelveticaBoldOblique,poCourier,poCourierBold,poCourierOblique, poCourierBoldOblique,poTimesRoman,poTimesBold,poTimesItalic, poTimesBoldItalic,poSymbol,poZapfDingbats); type TPDFFont = class public Name:TPDFFontName; Size:Integer; end; |
Re: font im memo?
Ich wollte dich darauf hinweisen, dass du vielleicht auf das Abbrechen des FontDialogs reagieren solltest, anstatt den Wunsch des Benutzers einfach zu ignorieren.
Die Zuweisung von TFont an TPDFFont muss fehlschlagen. Den Grund sagt dir der Compiler - die beiden sind nicht kompatibel. Allerdings würdest du bei Kompatibilität "besser" so vorgehen:
Delphi-Quellcode:
Du darfst nicht vergessen, dass mit dem assignment operator mitunter nur Zeiger kopiert werden - ein deep copy (alle Felder und Strukturen) erreichst du nur mit Assign().
printPDF1.Font.Assign(memo1.font);
marabu |
Re: font im memo?
somit hättest du den gesamten Text in einer einzigen
Schriftart. Ich hab da so eine Idee, ich schmeiß mal delphi an :zwinker: |
Re: font im memo?
Mist. Unkompatible typen.
Naja, wie auch immer, ich würde dir empfehlen auf Richedit umzusteigen. Jetzt kenn ich die PDF Komponente nicht die du benutzt, aber ich denke das das funktionieren sollte. So, hier noch mal mein falscher Denkansatz:
Delphi-Quellcode:
jetzt muss man noch dazu sagen, dass meine delphi-fähigkeiten äußerst eingeschränkt sind.
procedure TForm1.Button1Click(Sender: TObject);
begin try fontdialog1.Execute; finally richedit1.SelAttributes.Charset:=fontdialog1.Font; end; end; da gibt es sicher elegantere (und funktionierende) lösungen. |
Re: font im memo?
marabu:
printPDF1.Font.Assign(memo1.font); assign geht bei mir nicht, wird bei printpdf1.font.??? nicht gefunden, bzw. angezeigt! was meinst du zum Vorschlag von Niklas (danke noch für dein Input) betr. der Verwendung von richedit anstatt von Memo? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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 by Thomas Breitkreuz