Sooo einfach :-)))
danke
Ciao
Stefan
Sooo einfach :-)))
danke
Ciao
Stefan
ZitatIch empfehle die Verwendung des neuen Suchen und Ersetzen Dialogs.
Trotz Suche in den Versionsinformationen und der Onlinehilfe habe ich nichts über den neuen Dialog gefunden, gibt es irgendwo Beispielcode?
Ciao
Stefan
Hallo,
nach Suchen / Ersetzen (Abbrechen geklickt) verliert die Anwendung den Focus, z.B. der Explorer steht dann vor der Anwendung.
Bei einer älteren WPTools-Version half mal
procedure TCustomWPRichText.FindClose(Sender: TObject);
begin
IgnoreMouse;
Self.Setfocus; // <------------
end;
Das habe ich nun auch bei WPTools 9 eingebaut aber es hat keine Wirkung!
Hat jemand bitte einen Tip für mich?
Ciao
Stefan
danke, hat funktioniert!
Ciao
Stefan
Hallo,
wir sind von Delphi Rio auf Sydney umgestiegen, WPTools ließ sich problemlos installieren, nur beim Setup für wPDF4 hört die Auswahl bei Delphi 10.3 Rio auf!
Wie bekomme ich die Komponenten ins Sydney?
Ciao
Stefan
Mit folgendem Code suche ich Bilder in einem WPRichText:
var
i : Integer;
par : TParagraph;
obj : TWPTextObj;
begin
par := wp.RTFData.FirstPar;
while par<>nil do
begin
for i:=0 to par.CharCount-1 do
begin
obj := par.ObjectRef[i];
if obj.IsImage then
begin
// wie kann ich das abspeichern?
end;
end;
par := par.globalnext;
end;
Alles anzeigen
Aber hier fehlt mir irgendwie der Ansatz, wie ich an den Inhalt des Bildes komme um ihn in eine Datei oder Stream zu schreiben...
Gibt es dazu bitte einen Hinweis?
Ciao
Stefan
Danke für den Hinweis.
Dann liegt der Fehler wahrscheinlich bereits beim Schreiben des Streams?
Ich habe mehrere kleine WPRichText's welche jeweils Bilder und etwas Text enthalten.
Deren Inhalt soll in einen Stream / String / sonstwas gespeichert werden und dann später in einem weiteren WPRichText wie oben gezeigt in Textboxen geladen werden.
Gibt es dazu ein paar Zeilen Beispielcode?
Ich kann mir momentan eben nicht erklären warum die Anzeige im WPRichText korrekt ist, aber nach Abspeichern und wieder neu laden die Bilder fehlen!
Ciao
Stefan
Hallo,
ich erzeuge Textobjekte mit folgendem Code:
SpecialText := HeaderFooter.Get(wpIsHeader, wpraOnFirstPage);
if SpecialText.Empty then
begin
X := WPCentimeterToTwips(2);
Y := WPCentimeterToTwips(2);
b := WPCentimeterToTwips(5);
H := WPCentimeterToTwips(3);
// Textbox erzeugen
RTFData := nil;
ActiveText := HeaderFooter.Get(wpIsHeader, wpraOnFirstPage);
txtobj := TextObjects.InsertTextBox(b, H, RTFData);
txtobj.PositionMode := wpotPage;
txtobj.RelX := X;
txtobj.Rely := Y - Header.MarginHeader;
txtobj.Frame := [];
if RTFData <> nil then
begin
ms.Position := 0;
RTFData.RtfText.LoadFromStream(ms);
end;
end;
Alles anzeigen
Dabei steckt der Textobjektinhalt in einem Stream der dabei geladen wird.
Die Anzeige der Textbox ist nach der Erzeugung korrekt und enthält Text sowie ein Bild.
Nach einem SaveToFile und einem LoadFromFile (beides im WPT-Format) ist der Text wieder in der Textbox enthalten, die Position stimmt auch aber das Bild aber ist weg!
Wo liegt mein Fehler?
Ciao
Stefan
Das Setup zeigt WPTools 9.1.800
Im DX10.3-Verzeichnis sind einige Dateien vom 17.6.2000.
Ich habe das Package noch mal deinstalliert, neu erstellt, installiert und es wird angezeigt dass die ganzen Komponenten installiert wurden.
Die einzige Möglichkeit für mich, wo ich die Version sehen könnte, ist ein neues WPRichText auf eine Form zu platzieren und dann sehe ich in der
Property RTFText:
Empty [V9.1.016 +premiumX] [V9.1.016 +premiumX]
Ciao
Stefan
Nachtrag:
Nachdem ich C:\WPRools\DX10.3 komplett gelöscht habe, dann nochmal Setup sowie Installation des Packages, habe ich nun V9.1.800 :-)
Hallo,
ich habe gelesen, dass es eine
*** WPTools 9.1.800 - 17.6.2020 ***
Version geben soll.
Also aktuelle Version heruntergeladen und installiert, dabei aber bekomme ich nur meine bereits vorhandene Version 9.1.016 ?
Was läuft da schief?
- Setup ausgeführt
- altes Package deinstalliert
- neues Package installiert
was habe ich vergessen?
Ciao
Stefan
ZitatWPRichText.Caret.UpdatePos
bringt genau den gewünschten Effekt, vielen herzlichen Dank!
Ciao
Stefan
SetFocus ändert leider an der Darstellung des Cursors nichts.
Wenn ich im WPRichtext am Tippen bin und die Einfg-Taste drücke, ändert sich der Cursor sofort.
Nun soll das aber auch passieren, wenn in meiner Toolbar zwischen Einfügen und überschreiben umgeschaltet wird:
//Ausschnitt Toolbutton-Action zum Umschalten
FUeberschreiben := not FUeberschreiben;
ToolButtonUeberschreiben.Down := FUeberschreiben;
if FUeberschreiben then
ToolButtonUeberschreiben.ImageIndex := 19
else
ToolButtonUeberschreiben.ImageIndex := 18;
// Umschaltung für alle vorhandenen Dokumente
for i := ComponentCount - 1 downto 0 do
if Components[i] is TLMDDockPanel then
begin
pnl := TLMDDockPanel(Components[i]);
if pnl.clientkind = dkDocument then
begin
SetUeberschreiben(PanelWP(pnl));
end;
end;
//WPRichText auf aktuellem Panel Focus setzen
PanelWP(AktPanel).SetFocus; //bringt aber leider keine Anzeigeänderung
end;
procedure TForm1.SetUeberschreiben(WP: TWPRichText);
begin
WP.TextCursor.Inserting := not FUeberschreiben;
end;
Alles anzeigen
Ciao
Stefan
Hallo,
über einen eigenen ToolButton schalte ich TextCursor.Inserting um.
Leider ändert sich die Anzeige des Cursors im WPRichText von Balken zu Block und zurück erst beim Tippen eines Zeichens.
Kann man diese Cursoranzeige sofort aktualisieren, schon bevor ein Zeichen getippt wird?
Ciao
Stefan
Ja die habe ich...
Inzwischen habe ich die Lösung gefunden:
In die WPLocalization_2013.xml muss die spellxml.xml gemerged werden!
Jetzt sind die Rechtschreib-Menüs und das Optionsfenster wie gewünscht in deutsch :-)
Ciao
Stefan
Hallo,
halte ich die Maus über WPSpell_LoadVCLStrings, dann wird angezeigt dass die Procedure aus WPSpell_Language aufgerufen wird.
Das scheint dann aber die falsche zu sein, denn das Kontextmenü bei falsch geschriebenen Wörtern ist englisch!
Wo steckt das zweite WPSpell_LoadVCLStrings drin?
Ich habe es im gesamten WPTools-Source nur 2 mal gefunden:
- in WPSpell_Language.pas
- in WPSpellDemoU.pas
Ciao
Stefan
Hallo,
ich möchte die Toolbar und die Box der Rechtschreibprüfung auf deutsch einstellen.
WPLanguageControl ist in der IDE bei GlobalLanguage auf "DE" eingestellt,
FileName ist WPLocalization_2013.xml
Die Toolbar ist wie gewünscht deutsch, aber nach
SpellControler := TWPSpellController.Create(self);
SpellControler.PersistencyMode := wpUseRegistry;
SpellControler.InitialDirectory := extractfilepath(application.exename);
SpellControler.LoadSetup(False);
SpellControler.Active := true;
WPSpellCheckInterface.Control := WP;
WPSpellCheckInterface.DoSpellAsYouGo;
SpellControler.CurrentLanguageName := 'German';
SpellControler.AddFromFile(extractfilepath(application.exename) + 'german.dct');
SpellControler.UserDictAdd(extractfilepath(application.exename) + 'user_dct.txt');
SpellControler.Loaded;
WP.SpellCheckStrategie := wpspCheckInInitAndPaint;
WP.StartSpellCheck(wpStartSpellAsYouGo)
WPSpell_LoadVCLStrings;
WPLocalizeLoadForms := true;
Alles anzeigen
Die Wortvorschläge sind deutsch (für Runnde wird Runde vorgeschlagen)
wird nach rechte Maustaste auf falsches Wort zeigt Ignore und Ignore all an.
Auch die Spellcheck Options Box ist weiter in englisch :-(
Im OnCreate des Formulars wird
WPLangInterface := TWPLocalizationInterface.Create(WPLanguageControl1);
WPLanguageControl1.GlobalLanguage := 'DE';
WPLocalizeLoadForms := true;
WPTools_LoadVCLStrings;
WPTools_LoadActionStrings;
Irgendwas habe ich falsch gemacht, aber was ?
Ciao
Stefan
Hallo,
ich gebe die Antwort mal selbst wenn jemand das gleiche Problem hat,
der Event ist OnInternStartPage und Startseite / Folgeseiten - Hintergrund habe ich so gelöst:
procedure TForm1.PDFPrinter1InternStartPage(Sender: TObject);
var
w, h, res: integer;
fn: string;
begin
res := Screen.PixelsPerInch;
w := Round(21 / 2.54 * res);
h := Round(29.7 / 2.54 * res);
case PDFPrinter1.PageNumber of
1: //Startseite Hintergrund 1 einbauen
begin
fn := ExtractFilePath(Application.ExeName) + 'Background1.jpg';
PDFPrinter1.DrawGraphicFile(0, 0, w, h, fn);
end;
2: //Seite 2 Hintergrund 2 einbauen
begin
fn := ExtractFilePath(Application.ExeName) + 'Background2.jpg';
CloneID := PDFPrinter1.DrawGraphicFile(0, 0, w, h, fn);
end;
else //alle anderen Seiten Hintergrund 2 Clonen
begin
PDFPrinter1.DrawBitmapClone(0, 0, w, h, CloneID);
end;
end;
end;
Alles anzeigen
Ein PDF mit 100 Seiten ist nicht mal 100 Byte größer als ein 2 seitiges, das Clonen funktioniert :-)
Ciao
Stefan
Danke erst mal für die super schnelle Antwort!
ich habe jetzt mal folgendes probiert:
fn := ExtractFilePath(Application.ExeName) + 'Background.jpg';
PDFPrinter1.StartPage(w, h, res, res, 0);
i := PDFPrinter1.DrawGraphicFile(0, 0, w, h, fn);
PDFPrinter1.Canvas.Rectangle(Rect(50, 50, 200, 200));
PDFPrinter1.Canvas.Font.Name := 'Arial';
PDFPrinter1.Canvas.TextOut(50, 50, 'Nur ein Test');
PDFPrinter1.EndPage;
PDFPrinter1.StartPage(w, h, res, res, 0);
PDFPrinter1.DrawBitmapClone(0, 0, w, h, i);
PDFPrinter1.Canvas.TextOut(50, 50, 'Nur ein Test Seite 2');
PDFPrinter1.EndPage;
Alles anzeigen
Das funktioniert nun und ich habe ein Bild auf 2 Seiten.
Nun möchte ich das am liebsten in einen Event packen, damit bei Seite 1 Hintergrundbild1, Seite 2 Hintergrundbild2 und Folgeseiten Clone vom Hintergrundbild2 gezeichnet werden.
Ciao
Stefan
Hallo,
ich möchte PDF-Watermarks mit folgendem Code erzeugen, die PDF-Seiten sollen DIN-A4 sein:
image := TImage.Create(nil);
res := Screen.PixelsPerInch;
w := Round(21 / 2.54 * res);
h := Round(29.7 / 2.54 * res);
PDFPrinter1.StartWatermark('Hintergrund_1', w, h, res, res);
image.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Background.jpg');
PDFPrinter1.Canvas.StretchDraw(Rect(0, 0, w, h), image.Picture.Graphic);
PDFPrinter1.EndWatermark;
image.Free;
Das Image soll bildfüllend eingebettet werden, ist aber ca. 20% größer als die Seite.
Wie komme ich an die Höhe / Breite von PDFPrinter1.Canvas?
PDFPrinter1.XPixelsPerInch ist so groß wie res, also 96.
Hat PageWidth / PageHeight bei StartWatermark eine andere Einheit wie das Rect beim Canvas.StretchDraw?
Danke
Ciao
Stefan