Autor Beitrag
goose
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93



BeitragVerfasst: Do 05.01.06 09:45 
Hallöchen,

weiss nicht genau ob ich das richtige forum erwischt habe?
Wenn nicht dann bitte verschieben...danke und sorry.

Also folgendes :

Ich muss in einer *.rtf datei einige variablen ersetzen und diese dann drucken.
Es geht darum eine Vorlage auszufüllen und dann zu drucken, ist ein bischen schwer zu erklären....naja, cheffchen lässt sich immer so tolle sachen einfallen :-)

Es funktioniert ja auch schon ganz gut :
Ich hab also in dem rtf dokument einfach einige variablen ( $firma, $name, $strasse z.B.). das rtf lade ich dann in ein richedit, suche nach den variablen und ersetze diese durch die namen ( $fima wird dann z.B. Fa. Müller ).
Soweit so gut.
Das ganze wird eine Bestellung, also so hier z.B.

-------------------------------------------------------
Kopf mit firma und adresse datum

B E S T E L L U N G

Nr. Artikel Optionen Anzahl
1 Artikel 1 option 1
option 2
option 3 1

2 Artikel 2 option 1
option 2 2

Fuss
--------------------------------------------------------

Das problem ist jetzt das es unterschiedlich viele Artikel und bei jedem Artikel unterschiedlich viele Optionen sein können.

Also hab ich versucht in dem Dokument Textfelder zu erstellen ( Einfügen->Textfeld )
Davon hab ich einfach 3 stück gemacht und wollte in das erste eben die Nummer, dann die Artikel, in das dritte die Optionen und dann noch die anzahl ersetzen lassen.
Geht aber irgendwie nicht.
Das steht dann irgendwie alles wild durcheinander, als ob das richedit das mit den Textfeldern nicht hinbekommt.

Wie könnte man das denn machen ?
Mir fehlt irgendwie die Idee....

Vielleicht kann ja jemand helfen ?

Danke
Matthias
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 05.01.06 10:03 
Hallo,

Das Standard-RichEdit von Delphi unterstützt keine Textfelder,
um welches RichEdit handelt es sich?

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
goose Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93



BeitragVerfasst: Do 05.01.06 10:11 
Hallöchen,

ja ist das standart richedit von Delphi.
Gibts da etwa eins was die Textfelder unterstützt ??

Matthias
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 05.01.06 11:11 
Hallo,
user profile icongoose hat folgendes geschrieben:
...Also hab ich versucht in dem Dokument Textfelder zu erstellen ( Einfügen->Textfeld )
Davon hab ich einfach 3 stück gemacht ...

und wie hast Du das mit dem Standard-RichEdit gemacht :gruebel:

user profile icongoose hat folgendes geschrieben:
...
Gibts da etwa eins was die Textfelder unterstützt ??

als Freeware IMHO wohl nicht, mir ist auch sonst keine bekannt.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
goose Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93



BeitragVerfasst: Do 05.01.06 11:26 
Hallöchen,

ganz einfach :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
// ersetz die szVar in Bestellung.rtf durch szText
procedure TForm1.replace(szVar, szText : string);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  StartPos := 0;
  with RE do
  begin
    ToEnd   := Length(Text) - StartPos;
    FoundAt := FindText(szVar, StartPos, ToEnd, []);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart  := FoundAt;
      SelLength := Length(szVar);
      SelText   := szText;
    end;
  end;
end;


// zuerst
Re.Lines.LoadFromFile('bestellung.rtf');

//dann
replace('$firma''Fa. TestFirma');


Also ganz einfach ... hab auch erst angefangen damit.

In dem Dokument ( bestellung.rtf ) steht dann $firma drin und wird erstetzt durch 'Fa. TestFirma'.

Mal so als Beispiel....DAS funktioniert ja auch ganz gut.
Nur in den Textfledern geht das so nicht.

Ich weiss erst mal nicht wirklich wie ich das anstellen kann.
Man könnte es per Ole machen, aber ich kann ja nicht voraussetzen das die alle
Word installiert haben.

Hast Du noch nen Plan ?

Matthias
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 05.01.06 11:57 
Hallo,

nee, ich wollte nicht wissen wie Du den Text ersetzt,
sondern wie Du die Textfelder einfügst :?

user profile icongoose hat folgendes geschrieben:
...Nur in den Textfledern geht das so nicht.
Welche Textfelder meinst Du eigentlich?

user profile icongoose hat folgendes geschrieben:
Hast Du noch nen Plan ?
kannst Du die RTF-Vorlagedatei anhängen, eventuell dann :wink:
Eventuell planst Du auch mal in diese Richtung www.delphi-forum.de/....php?p=307671#307671

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
goose Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93



BeitragVerfasst: Do 05.01.06 12:08 
Hallöchen,

also ich häng mal die Vorlade an und auch das Projekt.
Der Quelltext ist derzeit ein bischen durcheinander geraten da ich immer hin und her probiere.

Vielleicht kannste das Problem dann besser nachvollziehen.
Wie ich das Textfeld erstellt habe ?
Ganz einfach : In Word einfach auf Einfügen->Textfeld. Dann geht aber Word gleich in die Seitenansicht und dann kann man das Textfeld einfügen. ( da steht derzeit "$test" drin )

Was ist denn das für eine Komponente ( der Link ) ???
Ich glaube mit sowas könnte es auch gehen wenn man die einigermassen
ordentlich drucken könnte ?
Also auf jeden Fall ohne Zeilennummern :-)


Dank Dir schon mal
Matthias
Einloggen, um Attachments anzusehen!
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 05.01.06 14:18 
Hallo,
user profile icongoose hat folgendes geschrieben:
Der Quelltext ist derzeit ein bischen durcheinander geraten da ich immer hin und her probiere.
das siehst Du irgendwie richtig :mrgreen:

user profile icongoose hat folgendes geschrieben:
Wie ich das Textfeld erstellt habe ?
Ganz einfach : In Word einfach auf Einfügen->Textfeld.
aha :think:
Du erstellst mit Word eine Vorlage, speicherst diese als RTF-Datei und liest diese Datei in das Delphi-Prog in die Richedit-Komponente(bzw. aktuell in TJvRichEdit).
Weil das Richedit die Textfelder und Spalten nicht darstellen kann ist das Layout der Seite durcheinander.
Kann denn diese GmRtfPreview-Komponente Textfelder und Spalten überhaupt darstellen/drucken?
Aktuell wird ja die Vorschau mit GmRtfPreview.LoadRtfFromRichEdit(Re); initialisiert.
Ist es denn nicht möglich RTF-Formatierten Text direkt in die Vorschau zu laden,
z.B. mit GmRtfPreview.LoadRtfFromFile, ...String oder ..Stream?
Dann könntest Du die Daten mit replace direkt im Text ersetzen,
ohne den Umweg über ein Richedit.
Bei beiden Komponenten kann ich Dir nicht viel weiterhelfen da ich diese nicht nutze oder kenne.


user profile icongoose hat folgendes geschrieben:
Was ist denn das für eine Komponente ( der Link ) ???
Ich glaube mit sowas könnte es auch gehen wenn man die einigermassen
ordentlich drucken könnte ?
Das ist keine Komponente.
Du hast Dir den Thread nicht durchgelesen, sonst wüsstest Du es.
Das ist eine Scrollbox auf der zur Laufzeit die benötigten Komponenten (Labels, Edits usw.) erstellt werden.
Wie der Thread-Ersteller user profile iconmotion die Ausgaben drucktechnisch löst,
entzieht sich meiner Kenntnis.
Ich würde ihn danach fragen. :wink:

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
goose Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93



BeitragVerfasst: Do 05.01.06 14:25 
Hallöchen,

das mit dem direkt in die Druckvorschau laden geht nicht bei der Komponente,l ieder.

Ich dank Dir aber erst mal für Deine Hilfe !

Du hast Recht, ich hatte den Thread nicht richtig durchgelesen als ich geantwortet habe.
Hab ich aber schon nachgeholt.
Ich probier grad mal wie das mit einem Stringgrid geht.

Jetzt hab ich aber erst mal Feierabend und die nächste Woche Urlaub. Deswegen hatte ich vorhin auch keine Zeit zu lesen und hatte vorschnell geantwortet, sorry !

Was ich nicht gefunden habe ist ein Link wo es die komponente gibt ?

Naja egal, jetzt ist erst mal Urlaub angesagt. Meld mich sicher in einer Woche wieder....

Bis dann und vielen Dank nochmal !
Matthias