Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Neuerer Beitrag  |  Älteres Thema 
 Tab beim Datei Speichern
Autor: Steven Scheidler (---.dyn.telefonica.de)
Datum:   19.12.19 08:15

Hallo Leute,
folgendes Problem!

Ich möchte eine Datei Speichern

Aufbau:

Pos Artikel Betrag
1 Test 1.99

und wollte das mit (TAB) lösen, geht aber nicht!
Habt Ihr eine Idee?

  nummer!=Val(@ReadIni$("c:\\kasse\\Bon\\bon.dat","BON","temp"))
            nummer!=nummer!+1
  
            Assign #2,"c:\\kasse\\Bon\\bon_"+Str$(nummer!)+".bon"
            Rewrite #2
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Adresse","z1")
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Adresse","z2")
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Adresse","z3")
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Adresse","z4")
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Adresse","z5")
             Print #2, ""
             Print #2, ""
             Print #2, "Datum: "+ @dt("getDate", 0, !now)
             Print #2, "Zeit: "+ @dt("getTime", 2, !now)
             Print #2, "Belegnummer "+ Str$(nummer!)
             Print #2, "Mitarbeiter: "+@ReadIni$("c:\\kasse\bon\\bon.dat","Mitarbeiter","z1")
             Print #2, "Kunde: "+@Translate$(@SUBSTR$(kunden_wahl$,1,"."),"_"," ")
             Print #2, ""
             Print #2, ""
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Tabelle","z1")
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Strich","z1")
             Print #2, ""
      
            WhileLoop  0, @GetCount(gridbox1%)-1
             'Print #2,UUEncode(@GetText$(gridbox1%, &loop,1)+"|"+@GetText$(gridbox1%, &loop,2)+"|"+@GetText$(gridbox1%, &loop,3))
             Print #2,@GetText$(gridbox1%, &loop,0)+"  "+@GetText$(gridbox1%, &loop,1)
             Print #2, "                         "+@GetText$(gridbox1%, &loop,2)
            EndWhile
             Decimals 2
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Strich","z1")
             Print #2, "Rechnungsbetrag EUR      "+Str$(temp!)            
             Print #2, "Bar gegeben:             "+GetText$(edit4%)
             Print #2, "Rückgeld:                 "+GetText$(edit5%)
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Strich","z1")
             Print #2, "Summe 19% Mwst:           "+Str$(temp!-(temp!/1.19))
             Print #2, "Betrag Netto:            "+Str$(temp!/1.19)
             Print #2, "Betrag Brutto:           "+Str$(temp!)
             Print #2, "Name"+Tab(30)+"Nachname"
             Print #2, ""
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Schlusstext","z1")
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Schlusstext","z2")
             Print #2, @ReadIni$("c:\\kasse\bon\\bon.dat","Schlusstext","z3")
            Close #2
            Decimals 0
            WRITEINI "c:\\kasse\\Bon\\bon.dat","BON","temp"=@Str$(nummer!)
 



Ziel des ganzen ist einmal von vorne den Text schreiben und evtl von hinten das die Beträge übereinander sitzen.
In der 8ten Zeile von unten habe ich es mit (TAB schon in verschiedenen Schreibweisen probiert geht aber nicht:-(


Danke für Eure Hilfe

Beitrag beantworten
 
 Re: Tab beim Datei Speichern
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   19.12.19 18:54

Das ist wohl eher das Problem mit den Schriftfonts.
Ein Buchstabe, z.B. ein W ist wohl breiter als eine Ziffer
z.B. 1.
Wenn es nur ums Anschauen geht, machst du das
in der Gridbox mit den Spaltendefinitionen (Name,Ausrichtung,Breite).

Wenn es ums Drucken geht, geht das besser mit HTML.
Hier mal eine .inc, bei der du ShowHTM mit Parameter Handle der
Gridbox usw. aufrufen kannst :

 $H commctrl.ph
 $H Structs.ph
 $H Messages.ph
 
 Proc CountGridColumns
   Parameters Handle hGrid
   Declare Memory b
   Declare flag&
   Var TotalColumns& = 0
   Struct LV_COLUMN = ~LV_COLUMN
   Dim b, LV_COLUMN
   b.mask& = ~LVCF_WIDTH
   Repeat
     Inc TotalColumns&
     flag& = SendMessage(hGrid, ~LVM_GETCOLUMN, TotalColumns&, b)
   Until flag& = 0
   Dispose b
   Return TotalColumns&
 EndProc
 
 Proc LV_GETCOLUMN
   Parameters Handle Hdl,Index&
   Declare Column#,Text$,Erfolg%
   Struct LVCOLUMN = mask&, fmt&, cx&, pszText%%, cchTextMax&, iSubItem&, iImage&, iOrder&
   Dim Column#, LVCOLUMN
   Text$ = MkStr$("\z",160) ' hier anpassen, wenn die Texte länger sein sollten
   Column#.mask& = ~LVCF_TEXT
   Column#.pszText%% = Addr(Text$)
   Column#.cchTextMax& = 160 ' s.o.
   SendMessage(Hdl,~LVM_GETCOLUMN,Index&,Column#)
   Return Text$
 EndProc
 
 Proc ErstelleHTM
   Parameters Handle dGrid, us$, htmdatei$
   Declare anz&, zeile$, cols&, column$, tmp$
   cols& = CountGridColumns(dGrid)
   Declare Memory b
 
   Assign #1, htmdatei$
   Rewrite #1
     Print #1,"<!DOCTYPE html PUBLIC"+chr$(34)+"-//W3C//DTD XHTML 1.0 Transitional//EN"+chr$(34)+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"+chr$(34)+">"
     Print #1, "<html xmlns="+chr$(34)+"http://www.w3.org/1999/xhtml"+chr$(34)+" xml:lang="+chr$(34)+"de"+chr$(34)+" lang="+chr$(34)+"de"+chr$(34)+">"
     Print #1,"<head>"
     Print #1, "<title>" + us$ + "</title>"
     Print #1, "X = ANFAHREN   B = BEI BEDARF<BR>A = ANRUFEN      R = RUHETAG<BR>"
     Print #1, "<style type="+chr$(34)+"text/css"+chr$(34)+">"
     Print #1, "td {font-family:Verdana; font-size:12px; border: 1px solid rgb(0, 0, 0); padding: 3px; text-align: left}"
     Print #1, "th {font-family:Verdana; font-size:12px; font-weight:bold; border: 1px solid rgb(0, 0, 0); padding: 3px; text-align: left}"
     Print #1, ".zeile1 {font-family:Verdana; font-size:12px; }"
     Print #1, ".zeile3 {font-family:Verdana; font-size:12px;color:black; background-color:#A8D2FD;}"
     Print #1, "</style>"
 
     Print #1,"</head>"
     Print #1, "<body>"
     Print #1, "<table>"
     Print #1, "<colgroup>"
   Struct LV_COLUMN = Maske&,Formate&,SpaltenBreite&,pointerText&,TextLen&,Spalte&
   Declare Column#,x&
   Dim Column#,LV_COLUMN
 
   WhileLoop 0,(cols& - 1),1
      With Column#
       .Maske&         = $000F
       .Spalte&        = &loop
      EndWith
      SendMessage(Grid,$1019,&loop,Column#)
      x&= SendMessage(Grid,$101D,&loop,0)
      Print #1, "<col width="+chr$(34)+Str$(x&)+"px"+chr$(34)+">"
   EndWhile
   Print #1, "</colgroup>"
 
      Print #1, "<tr >"
   WhileLoop 0, Cols&-1
     Print #1, "<th class="+chr$(34)+"zeile3"+chr$(34)+">" + Trim$(LV_GETCOLUMN(dGrid, &loop)) + "</th>"
   EndWhile
   Print #1, "</tr>"
   anz& = GetCount(dGrid)
   Var x%=0
   While x%<anz&
     Print #1, "<tr>"
     WhileLoop 0, Cols&-1
      Print #1, "<td class="+chr$(34)+"zeile1"+chr$(34)+">" + Trim$(GetText$(dGrid, x%, &loop)) + "</td>"
     EndWhile
     Print #1, "</tr>"
     inc x%
   EndWhile
 
   Print #1, "</table>"
   Print #1, "</body>"
   Print #1, "</html>"
   Close #1
   '@ShellExec(htmdatei$, "open", 1)
 EndProc
 
 Proc ShowHtm
 Parameters Handle hwindow, Grid, String datei, us$
 Declare Handle htmWin, hWin, hbtn1, hbtn2, Int ende2
 ende2 = 0
 ErstelleHTM(Grid, us$, datei) ' Html-Datei erzeugen
 hWin  = @Create("Dialog", hwindow, "HTML - Fenster", 10, 10, 800, 400)
 hbtn1 = @Create("Button", hWin, "Drucke", 10, 10, 60, 25)
 hbtn2 = @Create("Button", hWin, "Ende", 100,  10, 60, 25)
 htmWin = @Create("HTMLWin", hWin, datei, 1, 10, 60, 750, 300)
 
 WhileNot ende2
    WaitInput
    If @Clicked(hbtn1)
       ' Drucken
       Messagebox("Mit rechter Maustaste auf die Tabelle klicken\nund im Kontexmenü Drucken auswählen !", "Info", 0)
       '@ShellExec(datei, "print", 0)
    ElseIf @Clicked(hbtn2)
       DestroyWindow(hWin)
       ende2 = 1
       SetActiveWindow(%HWnd)
    EndIf
 EndWhile
 DestroyWindow(hWin)
 EndProc
 


Evtl. ist das schon brauchbar für dich.

H.Brill
XProfan X4 + FreeProfan

Beitrag beantworten
 
 Re: Tab beim Datei Speichern
Autor: Steven Scheidler (---.dyn.telefonica.de)
Datum:   21.12.19 19:37

Habe es etwas anders gelöst trotzdem DANKE


 Def @CutL$(2) @Left$($(1)+Space$(%(2)),%(2))
 Def @CutR$(2) @Right$(Space$(%(2))+$(1),@%(2))
 
 Print #2,CutL$("Gesamtbetrag Behandlungen: ",65)                  +CutR$(Str$(tempb!)+" EUR",14)
 Print #2,      "*******************************************************************************"
 


Habe aber noch ein Problem
und zwar würde ich gerne eine Datei
in Notepad gleich drucken

Parameter bei Notepad

/p gleich drucken mit Standart Drucker

ich brauche aber

/pt möchte den Drucker auswählen

probiert habe ich es so


 Shell "notepad /pt"+"c:\\kasse\\kassenbuch\\Tagesabrechnung\\"+@dt("getDate", 3, !now)+".tmp"+ "PDF24 PDF"
 
 



Notepad meldet einen Syntax Fehler bin am verzweifeln:-(

Beitrag beantworten
 
 Re: Tab beim Datei Speichern
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   22.12.19 08:47

Da kannst du glaube ich, nur den Drucker angeben, indem
du den vollen Namen des Druckers hinten dran stellst.

Shell "notepad /pt"+"c:\\kasse\\kassenbuch\\Tagesabrechnung\\"+@dt("getDate", 3, !now)+".tmp"+ "PDF24 PDF" "DeinDrucker"
 


Müßte man mal schauen, was für Optionen es bei
ShellExec(S1, S2, N) noch gibt. Bei S2 = "print"
wird auch direkt gedruckt.

H.Brill
XProfan X4 + FreeProfan

Beitrag beantworten
 
 Re: Tab beim Datei Speichern
Autor: a. hurler (---.dclient.hispeed.ch)
Datum:   05.01.20 07:42

Hallo Sven

Habe dieses Problem anders gelöst...

Mit Microsoft Expression Web (kostenlos) wurde ein Rechnungsformular erstellt. Die relevanten Texte habe ich mit $Datum$, $Firma$, $Name$ etc. direkt in Expression Web angelegt und entsprechend links-, rechtsbündig ausgerichtet.

Jatzt lese ich diese Datei mit Profan ein und Translate$(...) ersetzt die Felder mit den entsprechenden Werten. Das funktioniert perfekt und ich kann jederzeit und sehr komfortabel das Layout mit Expr.Web anpassen.

Beste Grüsse,
André

Hobby-Programmierer mit Profan X4

Beitrag beantworten
 
 Re: Tab beim Datei Speichern
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   05.01.20 12:11

Microsoft Expression Web hatte ich bis jetzt nicht gekannt.
Schau ich mir auch mal an.

Naja, wenn das XProfan-Programm nur für deine eigenen Zwecke
ist, ist es ja OK. Anders ist es, wenn sich mehrere Personen erst
in Microsoft Expression Web einarbeiten müssen.

PS: Wenn es hauptsächlich ums Drucken geht, kannst du
auch Frank Abbings Listview.dll nehmen. Die hat u.a. auch
eine schöne, einstellbare Druckfunktion.

Wenn du sie nicht findest, ich habe sie hier noch drauf :

http://hbrill.bplaced.net/Files/ListviewDll.zip

H.Brill
XProfan X4 + FreeProfan

Nachricht bearbeitet (05.01.20 12:44)

Beitrag beantworten
 
 Re: Tab beim Datei Speichern
Autor: Steven Scheidler (---.dyn.telefonica.de)
Datum:   05.01.20 13:34

Also bin hier nochmal fündig geworden, das funktioniert super!
 '############### ##########
 'Drucker auflisten
 'Andreas Miethe * Juni 2003
 '##########################
 DEF EnumPrinters(7) ! "WINSPOOL.DRV","EnumPrintersA"
 DEF GetStandardPrinter(0) Substr$(ReadIni$("WIN.INI","Windows","Device"),1,",")
 DEF &PRINTER_ENUM_LOCAL 2
 DEF &PRINTER_ENUM_DEFAULT 1
 Declare PrinterValues#, Drucker$[], Y&, Old_Standard$, Old_Standard_rest$
 DEF GetStandardPrinter2(0) ReadIni$("WIN.INI","Windows","Device")
 
 Proc EnumPrinters
 
     Declare Printername&,Portname&,PrinterName$,PortName$,Attribs&
     Declare X&,dwNeeded&,dwReturned&
     EnumPrinters(&PRINTER_ENUM_LOCAL,0,5,0,0,ADDR(dwNeeded&),ADDR(dwReturned&))
     Dim PrinterValues#,dwNeeded&
     Clear PrinterValues#
     EnumPrinters(&PRINTER_ENUM_LOCAL ,0, 5, PrinterValues#, dwNeeded&, ADDR(dwNeeded&), ADDR(dwReturned&))
 
     While X& < dwReturned&*20
 
         Printername& = Long(PrinterValues#,x&)
         PrinterName$ = String$(Printername&,0)
         Attribs& = Long(PrinterValues#,x&+8)
         'folgendes funzt bei mir unter XP nicht:
         '	     If Attribs& & $4
         '            Printername$ = Printername$ + " => Standarddrucker"
         '       endif
         Drucker$[Y&] = Printername$
         X& = X& + 20
         inc Y&
 
     EndWhile
 
     Dispose PrinterValues#
 
 EndProc
 
 Proc Set_Std_Printer
 
     Parameters PrinterString$
     WriteIni "WIN.INI","Windows","Device"=PrinterString$
 
 EndProc
 
 cls
 EnumPrinters
 Print "Gefundene Drucker"
 
 WhileLoop 0,Y&-1
 
     Print "Drucker " + @str$(&loop) + " : " + Drucker$[&loop]
 
 EndWhile
 
 Old_Standard$ = Substr$(GetStandardPrinter2(),1,",")
 Old_Standard_rest$ = Substr$(GetStandardPrinter2(),-2,",") + "," + Substr$(GetStandardPrinter2(),-1,",")
 'Print "***"
 'Print "Standard-Drucker :"
 'Print Old_Standard$
 'Print "***"
 'Print "Drucke auf Drucker " + Drucker$[1]
 
 'Set_Std_Printer Drucker$[1] + "," +Old_Standard_rest$
 'StartPrint + Drucker$[1]
 'DrawText 10,10,"Test " '+ Drucker$[1]
 'EndPrint
 'Print "Drucke auf Drucker " + Drucker$[2]
 
 'Set_Std_Printer Drucker$[2]+","+Old_Standard_rest$
 'StartPrint
 'DrawText 10,10,"Test " + Drucker$[2]
 'EndPrint
 'Print "***"
 'Print "   >>>alten Standart-Drucker wieder einstellen.."
 
 'Set_Std_Printer Old_Standard$+","+Old_Standard_rest$
 'Print "Standard : " + Old_Standard$
 'Print "***"
 'Print ""
 'Print "...warte"
 waitinput
 end
 


Beitrag beantworten
 Foren-Liste  |  Baumstruktur   Neuerer Beitrag  |  Älteres Thema 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org