Bei Proportionalschrift kann man doch Transform

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Snoop_Proggy_Prog
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mi, 01. Aug 2007 15:53
Wohnort: Bärlin

Bei Proportionalschrift kann man doch Transform

Beitrag von Snoop_Proggy_Prog »

im Prinzip weglassen , oder ist das Trick # 17 ?
Funzt det auch mit Arial oder anderen TT Schriften ?
Ich probiers mal aus.
Achi
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

Transform() dient der Formatierung mit Nachkommastellen und Tausendertrennpunkten (wenn gewünscht). Wenn du das brauchst brauchst du Transform(). Mit proportionalen Fonts wird nur der Tabellen Druck schwieriger weil du unbedingt rechtsbündig drucken musst.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hubert hat geschrieben:Mit proportionalen Fonts wird nur der Tabellen Druck schwieriger weil du unbedingt rechtsbündig drucken musst.
Außer man macht ein GraStringAt() für jeden einzelnen Wert. Und da kann man dann auch Links- oder Rechtsbündig oder Zentriert angeben. Ist aber ein Haufen Arbeit, weil man nicht Zeilenweise arbeiten kann. Ansonsten funktioniert das exzellent.

Jan
Benutzeravatar
urbi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: So, 26. Mär 2006 18:47
Wohnort: 76185 Karlsruhe
Kontaktdaten:

Beitrag von urbi »

Hallo hier eine Funktion mit der ich Zahlen und Strings
rechtbündig ausdrucke

Code: Alles auswählen

FUNCTION GRARIGHTAT(OPS,APOS,CTEXT)
//|
//|-----------------------------
LOCAL aSize := GRAQUERYTEXTBOX(oPS,cText)
GRASTRINGAT(oPS,{aPos[1] - aSize[3,1], aPos[2] },cText) 
RETURN NIL
//|------------< Ende von FUNCTION GRARIGHTAT(OPS, >-------------

Gruss Rainer
urbi
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Jan hat geschrieben:
Hubert hat geschrieben:Mit proportionalen Fonts wird nur der Tabellen Druck schwieriger weil du unbedingt rechtsbündig drucken musst.
Außer man macht ein GraStringAt() für jeden einzelnen Wert.
Ob man den Anfangspunkt dynamisch berechnet (wie urbi und ich in meiner Druckerklasse) oder die Druckrichtung mit GraSetAttrString ändert spielt keine Rolle, das Ergebnis muß nur ein rechtsbündiger Druck sein :wink:
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hubert hat geschrieben:das Ergebnis muß nur ein rechtsbündiger Druck sein
Nicht zwangsläufig. Zugegebenermaßen habe ich in einer Tabelle noch nie zentriert gedruckt, aber schon recht häufig linksbündig. Wenn es um Text geht wie z. B. bei Adressenlisten etc. Wobei zugegebenermaßen in Tabellen je nach Anwendungsgebiet meist Zahlen stehen, die dann selbstverständlich rechtsbündig gesetzt werden müssen. Und die ich dann üblicherweise mit Transform() entsprechend formatiere (Tausenderpunkt, Dezimalkomme, Nachkommastellen)

Das man das ganze in eine Klasse setzen kann ist klar. Wobei ich die Funktions-Lösung von Rainer minimalistisch aber effektiv finde. Mir ging es ja auch nur um die grundsätzliche Vorgehensweise.

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Jan hat geschrieben: Nicht zwangsläufig. Zugegebenermaßen habe ich in einer Tabelle noch nie zentriert gedruckt, aber schon recht häufig linksbündig. Wenn es um Text geht wie z. B. bei Adressenlisten etc. Wobei zugegebenermaßen in Tabellen je nach Anwendungsgebiet meist Zahlen stehen, die dann selbstverständlich rechtsbündig gesetzt werden müssen.
Ich meinte natürlich auch nur die Zahlenwerte die untereinander stehen sollen.

Die Funktion finde ich richtig gut, allerdings brauche ich diese wegen meiner eigenen Druckerklasse nicht. Auf jeden Fall ist so eine Funktion wesentlich leichter zu benutzen als dauernd die Positionen neu zu berechnen oder die Attribute zu ändern.
Gruß
Hubert
Benutzeravatar
urbi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: So, 26. Mär 2006 18:47
Wohnort: 76185 Karlsruhe
Kontaktdaten:

Beitrag von urbi »

Nachtrag:
hier das gleiche zum zentrierten Druck

Code: Alles auswählen

FUNCTION GRACENTER(OPS,APOS,CTEXT)
//|
//|-----------------------------
LOCAL aSize := GRAQUERYTEXTBOX(oPS,ALLTRIM(cText))
GRASTRINGAT(oPS,{aPos[1] - (aSize[4,1]/2) ,aPos[2]},cText)
RETURN NIL
Gruss
Rainer
urbi
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Ebend. Wobei ich während der Ausgabe überhaupt nicht mehr rechne. Ich lege am Anfang ein Mal die Positionen der Spalten in LOCALs oder einem Array fest, und greife dann immer wieder darauf zu. Ansonsten wird man ja wirklich total irre dabei.

Die Ausgabe bekomme ich dann schön übersichtlich mit ganz wenigen Zeilen in einer FOR...NEXT-Schleife hin. Ich werd mir das jetzt noch einfacher machen und die Idee von Rainer aufgreifen. Hätt ich ja eigentlich auch irgendwie selber drauf kommen können 8)

Tja, an Deine Druckerklasse hab ich mich halt noch nicht rangetraut und auch noch nicht wirklich die notwendige Zeit dafür gefunden. Ich hab mir die mal irgendwann runtergeladen und nun liegt sie da auf der Festplatte und schlummert vor sich hin...

Jan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Ansonsten wird man ja wirklich total irre dabei.
Deshalb überlasse ich sowas auch tutti completti meinem Reportgenerator. Wenn der Kunde senkrecht zentrierte Schriften mit Schattierung und wechselnden Farben haben will - bitteschön. :wink:
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Tom,

um bei meinem von Dir zitierten Satz zu bleiben: Da wird man ja arm bei.

Bislang konnte ich mich noch nicht überwinden, mir einen Reportgenerator zu kaufen. Das hat 2 Gründe:
- Kosten!
- Welchen?

Frage 2 erwarte ich in Berlin lösen zu können. Wobei ich im Moment recht stark zu Frax hin tendiere. Steht aber noch nicht fest. Wir können ja hier im Forum mal einen Thread starten: Pro und Kontra gebräuchliche Report-generatoren.

Jan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Jan.
Da wird man ja arm bei.
Ganz im Gegenteil. Wenn ich die Arbeitszeit investieren würde, die nötig wäre, um auch nur halbwegs nachzustellen, was der Report Generator für mich leistet, dann würde ich arm werden (und ich käme zu nichts mehr). Davon abgesehen erhöht professionelles Reporting (Kunde kann Reports anpassen, Dutzende von Exportmöglichkeiten, Barcodes ohne Zusatzprogrammierung, Charting, Einbindung von Web-Objekten, Mail- und Faxversand usw. usf.) den Wert der Anwendung. Und man kann die Designer-Komponente entweder als zusätzliches Modul verkaufen - oder die Formularanpassungen als Supportleistung. Oder beides.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Tom,

ich stimme Dir absolut zu.

Aber es gibt zwischen uns einen gravierenden Unterschied: Meine Arbeitszeit bezahlt niemand. Und deswegen ist es für MICH, in diesem ganz speziellen Fall, günstiger ohne Report-Generator. Das es für einen gewerblich arbeitenden Entwickler ganz anders aussieht, ist absolut klar. Da brauchen wir nicht zu diskutieren.

Jan
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Achi,

da Du mit Express++ arbeitest, warum nicht DCPRINT_ALIGN_XXXXXX ???
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Tom hat geschrieben: Davon abgesehen erhöht professionelles Reporting (Kunde kann Reports anpassen, Dutzende von Exportmöglichkeiten, Barcodes ohne Zusatzprogrammierung, Charting, Einbindung von Web-Objekten, Mail- und Faxversand usw. usf.) den Wert der Anwendung.
Ja wenn der Kunde das haben will und auch bezahlt - schön und gut,
ich will nicht dass an den Druckausgaben noch 'gebastelt wird' !

So unterscheiden sich die Anforderungen ...
Gruß
Hubert
Snoop_Proggy_Prog
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mi, 01. Aug 2007 15:53
Wohnort: Bärlin

Hallo Koverhage

Beitrag von Snoop_Proggy_Prog »

Danke für den Befehl ! Jetzt ist die Frage : bezieht sich
der Befehl auf eine Zeile oder ein Feld ?
Meine endlosen Wertpapierlisten bestehen aus einzelnen
Feldern (Wpkn,Branche,Land usw) die jeweils in einer Zeile ausgegeben
werden. Die Crux ist daß ein bündiger Ausdruck
nur mit Courier , Fixed Sys oder Terminal möglich ist.
Bei diesen "perversen" TT Schriftarten von Windoof ist z.B. das Space in der Breite wesentlich kleiner als andere Zeichen, weshalb die Zeichen
nicht geordnet untereinander stehen. (Eigentlich sehe ich momentan
keine signifikanten Vorteile von Windoof, außer daß mein Halsumfang angeschwollen ist, zurück zum Thema)
Tabulatoren wären ne Maßnahme, von denen ich nichts versteh.
Wenn ich den ganzen Schmu noch GUI-gemäß in Pixel umrechnen müsste.
ist bald ne Zwangsjacke fällig.
Snoop_Proggy_Prog
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mi, 01. Aug 2007 15:53
Wohnort: Bärlin

Reportgeneratoren bringen doch nur was

Beitrag von Snoop_Proggy_Prog »

bei fertigen Listen. Oder ?
Meine Reporting Datenbank -so behämmert es auch ist- operiert mit Stamm und Bewegungsdaten (rauf und runter), die kommen in den Zahlen-Wolf und dann wird ne Liste ausgegegeben.
Deswegen hab ich ja damals (nach dem II. Weltkrieg und vor Erfindung
des Pentium III) Clipper gewählt.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Du hast Zeilen und Spalten in jeder Tabelle.

Du gibts die Tabelle vermutlich zeilenweise über eine DO WHILE oder FOR...NEXT-Schleife aus.

Für jede Spalte musst Du nun also ein GraStringAt() machen. Sprich: Jeweils eines für Wpkn, eines für Branche, eines für Land, etc.

Du kannst für jede Spalte angeben, ob das links- oderrechtsbündig abgebildet werden soll oder zentriert.

Das ist eigentlich relativ einfach, halt nur eine Fleißarbeit, die Schleife einmal einzubauen. Aber hast Du erstmal die eine Zeile für eine Spalte, kannst Du die einfach runterkopieren und die entsprechenden Werte ändern. Das geht dann recht fix.

Du kannst einstellen, ob Du mit Pixeln, mm, oder sonstwas arbeiten möchtest. Ich selber finde es am angenehmsten, mit mm zu arbeiten. Ist aber vermutlich Geschmacksache oder Gewöhnung.

Jan
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Beitrag von Sören »

Hallo,

nochmal zu der Diskussion von oben hinsichtlich Textausrichtung.
Mit der ab Xbase++ 1.9 neu verfügbaren Funktion lässt sich das auch bewerkstelligen:

GraCaptionStr( [<oPS>], <aStartPoint>, [<aEndPoint>], <cCaption>, [<nAlign>], [<nTabChars>] )

Konstanten f. nAlign:

XBPALIGN_TOP *) Text oben ausrichten
XBPALIGN_LEFT Text linksbündig ausrichten
XBPALIGN_BOTTOM Text unten ausrichten
XBPALIGN_RIGHT Text rechtsbündig ausrichten
XBPALIGN_HCENTER Text horizontal zentrieren
XBPALIGN_VCENTER *) Text vertikal zentrieren

Tschüs,
Sören
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Beitrag von Lewi »

Für professionelle Entwickler führt eh kein Weg an einem Reporting-Tool vorbei (aus Gründen, die Tom schon angemerkt hat). Für Entwicklung von Inhouse-Anwendungen m.E. auch nicht, da leistungsfähige Tools (z.B. FRAX) schon ab 300€ zu haben sind. Semi-professionelle Entwickler, die Anwendungen veröffentlichen, können durch den Einsatz von Report-Tools einer Applikation einen „professionelleren“ Anstrich geben.

Für alle anderen dürfen die Druckroutinen von „HBPrinterx“ von Hubert hilfreich sein.

Gruß, Olaf
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Hallo Koverhage

Beitrag von brandelh »

Snoop_Proggy_Prog hat geschrieben:Danke für den Befehl ! Jetzt ist die Frage : bezieht sich
der Befehl auf eine Zeile oder ein Feld ?
Meine endlosen Wertpapierlisten bestehen aus einzelnen
Feldern (Wpkn,Branche,Land usw) die jeweils in einer Zeile ausgegeben
werden. Die Crux ist daß ein bündiger Ausdruck
nur mit Courier , Fixed Sys oder Terminal möglich ist.
Bei diesen "perversen" TT Schriftarten von Windoof ist z.B. das Space in der Breite wesentlich kleiner als andere Zeichen, weshalb die Zeichen
nicht geordnet untereinander stehen.
Die 'perversen' Schriften sehen einfach besser aus.
Wer wollte schon ein in Schreibmaschine geschriebenes Buch lesen ;-)

Man hat auch viel mehr Möglichkeiten (Schriftgrößen und Aussehen) - wenn man will.
Meine - recht komplexen - Ausdrucke konnte ich mit Clipper nur einigermaßen passen bekommen.
Heute ist das ein Kinderspiel - ABER NICHT GESCHENKT !

Ob Reportgenerator oder meine Druckerklasse hängt natürlich sehr von Vorlieben ab und ob der Kunde flexibel mit dem Druck umgehen will (eigene Formulare entwerfen oder diese ändern) oder ob man das gerade nicht will. Ich persönlich habe vor vielen Jahren so schlechte Erfahrungen mit Reportgeneratoren gemacht, dass ich einfach keine Lust habe mich mit denen zu beschäftigen. Meine Anwendungen erzeugen aber auch nur Ausdrucke, die in der Form festgelegt sind bzw. einfach nur gedruckt werden sollen ohne sich noch darum zu kümmern ob jemand was nachträglich verändert hat (Betrugsversuche etc.).

Wenn du am liebsten drucken möchtest wie unter Clipper, dann nimm den Courier New oder fixedsys font und die Tabellen sollten wieder stimmen.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Achi

Beispiel:

dcprint say "TEXT" DCPRINT_ALIGN_LEFT PICT 'XXXXXXXXXX'

dcprint say nWert DCPRINT_ALIGN_RIGHT PICT '@E 999999.99'

Ich benutze nur DCPRINT_ALIGN_RIGHT da sonst die Zahlen nicht untereinander stehen. Hierbei ist zu beachten, das Du als Druckposition
@Zeile,Spalte die letzte mögliche Druckposition angeben musst, da darau ausgerichtet wird.

ohne DCPRINT_ALIGN_RIGHT
@Zeile, 70 DCPRINT SAY nWert PICT '@E 999,999.99'

mit DCPRINT_ALIGN_RIGHT
@Zeile, 80 DCPRINT SAY nWert PICT '@E 999,999.99'
es wird praktisch von rechts nach links gedruckt.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Für alle anderen:

Wir sind hier im 3rd Party bzw Express++ Forum ;-)
Snoop_Proggy_Prog
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mi, 01. Aug 2007 15:53
Wohnort: Bärlin

Hubert,

Beitrag von Snoop_Proggy_Prog »

wenn es nach mir ginge, wäre das mit Fixed Sys,Terminal , courier
vollkommen ok. Nur reicht es meistens dem Kunden nicht . Der will ein Auto mit 20 Airbags, für Ausdrucke Shelley allegro und dazu noch viele
bunte Balkencharts (und fürs Jogging 2 nordic walking "Krücken"...)
Snoop_Proggy_Prog
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mi, 01. Aug 2007 15:53
Wohnort: Bärlin

Koverhage , werd ich mal testen

Beitrag von Snoop_Proggy_Prog »

Liest sich vielversprechend.
Antworten