Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 128
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 69, Antworten: 6
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26.02.2010, 13:04   #1 (Direktlink)
Ist öfter hier
 
Benutzerbild von Martin_K
 
Registriert seit: 28.01.2010
Ort: bayerischer Untermain
Beiträge: 84
Standard rechtsbündige Ausgabe von Zahlen mit Drawtext?

Gibt es im Zeichnenmodus eine Möglichkeit, Texte rechtsbündig auszugeben? Es geht um die Erstellung von Angeboten und Rechnungen - da brauche ich formatierte Ausgabe von Geldbeträgen mit zwei Nachkommastellen, und das ganze bitte ordentlich rechtsbündig.
Jemand ne Idee, über welchen Umweg das am besten zu realisieren ist, wenns keine direkte Möglichkeit gibt?
__________________
---
Xprofan X2 auf nem ollen PIII mit Win 2000
Martin_K ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 26.02.2010, 14:37   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Dafür kannst du die GetTextExtent-API's benutzen. Die API DrawText kann es - glaube ich - auch. Hier ein älterer Code aus meinem Sourceordner, von Normal Strübli:

Code:
'WIN32 API 
'THEMA: Einfache Textformatierung 
'Autor: Normann Strübli 

$H windows.ph 
$H messages.ph 

Declare Text$,Text#,Text2#,Size#,Size.cx&,Space&,Mempos&,findpos&,Startpos&
Declare Textwidth&,Textheight&,maxpos&,Ystart&,ystart2&,Xstart&,Xstart2& 
declare test%,textlen&,Format%,merker& 
Declare links&,mitte&,rechts&,Block& 

'*** Festlegung der Größe des Textfeldes 
Textwidth& = 400 'Max Breite des Textes 
Textheight& = 300 'Max Höhe des Textes 
Xstart& = 20 
Ystart& = 50 


Text$ = "Dies ist ein Beispiel, wie man mit einfachen Funktionen zur Textausgabe \ 
einen komplexen Text Formatieren kann um ihn z.B. auf einem Drucker auszugeben \ 
. Der dargestellte Text ist nur durch einen String definiert, der außer einem \ 
abschließenden NUL keine Steuerzeichen enthält. Bei jedem Leerzeichen wird mittels \ 
GetTextExtendetPoint32 geprüft ob in eine neue Zeile verschoben werden muß - \ 
falls ja wird das vorangehende Leerzeichen als Zeilenende benutzt. Diese Suche \ 
und Berechnung findet für alle vier möglichen Formatierungsarten statt. Will man \ 
allerdings Formatierungen erreichen wie z.B. Wordpad es tut (mit mehreren \ 
Schriftarten und größen in einer Zeile) wird es Richtig komplex und macht \ 
bestimmt keinen Spaß mehr ;-)" 

text$ = @Trim$(text$) 
textlen& = @len(text$) 
Dim Text# ,textlen& +1
Dim Text2# ,textlen&+1 


String Text#,0= text$ 



Dim Size#,8 

Windowtitle "Einfache Textformatierung" 
window 0,0-450,400 


links& = @Create("Button",%hwnd,"Linksbündig",20,20,90,25) 
mitte& = @Create("Button",%hwnd,"Mittig",120,20,60,25) 
rechts& = @Create("Button",%hwnd,"Rechtsbündig",190,20,100,25) 
Block& = @Create("Button",%hwnd,"Blocksatz",300,20,90,25) 
UseBrush 1,@RGB(220,220,220) 
Rectangle xstart&,Ystart&-Textwidth&+xstart&,Textheight& 




Proc Showtext 'Gibt den Text aus 
~GetTextExtentPoint32A(%hDC,Text2#,@MemPos(Text2#,0,@chr$(0)),Size#) 
Size.cx& = @Long(Size#,0) 

~SetBkMode(%hdc, ~TRANSPARENT) 
if Format% = 1 
Xstart2& = Xstart& + Textwidth& / 2 -size.cx& / 2 'Rechtsbündig 
elseif Format% = 2 
Xstart2& = Xstart& + Textwidth& -size.cx& 'Mittig 
Elseif Format% = 3 
~SetTextJustification(%hdc,Textwidth& - Size.cx&,space&) 'Blocksatz 
Xstart2& = Xstart& 
else 
Xstart2& = Xstart& 'Linksbündig 
endif 

~TextOut(%hdc,Xstart2&,YStart&,Text2#,@MemPos(Text2#,0,@chr$(0))) 'Text ausgeben. 
~SetTextJustification(%hdc,0,0) 

~SetBkMode(%hdc2, ~TRANSPARENT) 
~TextOut(%hdc2,Xstart2&,YStart&,Text2#,@MemPos(Text2#,0,@chr$(0))) 'damit's auch neugezeichnet wird 
~SetTextJustification(%hdc2,0,0) 
Endproc 




Proc Formattext ' Bearbeitet Zeilenumbrüche und Trennzeichen 
Findpos& = 0 
Ystart& = 50 
mempos& = 0 
startpos& = 0 

UseBrush 1,@RGB(220,220,220) 
Rectangle xstart&,50-Textwidth&+xstart&,Textheight& 

Space& = -1 
Whilenot findpos&=-1 

findpos& = @MemPos(Text#,Mempos&," ") 'Ab Position Mempos& nach Leerzeichen suchen 

if findpos& > -1 'Solange was gefunden wird 
findpos& = findpos& + mempos& ' 
Mempos& = findpos& +1 
inc Space& 

String Text2#,0=@Char$(text#,startpos&,findpos&-startpos&) 
~GetTextExtentPoint32A(%hDC,Text2#,@MemPos(Text2#,0,@chr$(0)),Size#) 

if @Long(Size#,0) > Textwidth& 'Wenn der Text nicht mehr in die Zeile Passt > Zeilenumbruch 
dec space& 'letzte Leerzeichen ignorieren 
String Text2#,0=@Char$(text#,startpos&,maxpos&-startpos&) 'Aktuelle Zeile in Text2# schreiben 
Showtext 'Aktuelle Zeile anzeigen 

Ystart& = Ystart& +@Long(Size#,4) 'Y-Startposition für nächste Zeile (einfach Texthöhe addieren) 
startpos& = maxpos& +1 
space& = 0 
else 
maxpos& = findpos& 
endif 

endif 

wend 
inc space& 
String Text2#,0=@Char$(text#,startpos&,@len(@String$(text#,0))-startpos&) 
Showtext 
EndProc 


'*** Hauptprogramm 

UseFont "Arial",16,0,0,0,0 


While 1 
waitinput 

if @getfocus(links&) 
format% = 0 
Formattext 
elseif @getfocus(mitte&) 
format% = 1 
Formattext 
elseif @getfocus(rechts&) 
format% = 2 
Formattext 
elseif @getfocus(Block&) 
format% = 3 
Formattext 
endif 
@SetFocus(%hwnd) 

wend 
Dispose Text# 
Dispose Text2#
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 26.02.2010, 18:45   #3 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

oder so

Code:
 $H windows.ph
 cls
 ~SetTextAlign(%hdc,~TA_RIGHT)
 DrawText 120,10,"1020.80"
 DrawText 120,30,"120.80"
 DrawText 120,50,"12.80"
 DrawText 120,70,"120.80"
 DrawText 120,90,"1.80"
 DrawText 120,110,"0.80"
 waitinput
 end
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Alt 26.02.2010, 20:00   #4 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Andreas' Zauberhut ist nahezu unendlich tief. Die Löung ist noch einfacher.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 26.02.2010, 21:26   #5 (Direktlink)
RGH
Forenmaskottchen
 
Benutzerbild von RGH
 
Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
Standard

Hut ab!
Ich muss zu meiner Schande gestehen, dass diese API-Funktion sich bislang an mir vorbeigeschmuggelt hat. Vielleicht sollte ich in XProfan 12 ein Set("TextAlign", n%) einbauen ...

Gruß
Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c
AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c


http://www.xprofan.de
RGH ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 26.02.2010, 22:12   #6 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Vielleicht ein zusätzlicher Parameter für DrawText?

__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.

Geändert von Frabbing (26.02.2010 um 22:17 Uhr)
Frabbing ist offline   Mit Zitat antworten
Alt 26.02.2010, 22:19   #7 (Direktlink)
RGH
Forenmaskottchen
 
Benutzerbild von RGH
 
Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
Standard

Zitat:
Zitat von Frabbing Beitrag anzeigen
Vielleicht ein zusätzlicher Parameter für DrawText?
Auch keine schlechte Idee ...

Gruß
Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c
AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c


http://www.xprofan.de
RGH ist offline   Mit Zitat antworten
Alt 27.02.2010, 00:34   #8 (Direktlink)
RGH
Forenmaskottchen
 
Benutzerbild von RGH
 
Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
Standard

Ok, ab XProfan 12 wird folgendes funktionieren:
Code:
 $H windows.ph
 cls
 DrawText 120,10,"1020.80",~TA_RIGHT
 DrawText 120,30,"120.80"
 DrawText 120,50,"12.80"
 DrawText 120,70,"120.80"
 DrawText 120,90,"1.80"
 DrawText 120,110,"0.80"
 waitinput
 end
Als zusätzlicher Parameter kann die Textausrichtung angegeben werden. Diese gilt dann, bis eine andere gewählt wird.

Gruß
Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c
AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c


http://www.xprofan.de
RGH ist offline   Mit Zitat antworten
Alt 27.02.2010, 00:40   #9 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Finde ich eine gute Lösung.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 27.02.2010, 13:23   #10 (Direktlink)
Ist öfter hier
 
Benutzerbild von Martin_K
 
Registriert seit: 28.01.2010
Ort: bayerischer Untermain
Beiträge: 84
Standard Da ist man mal einen Tag nicht drin

und schon stapeln sich die Lösungen und Ideen - thanx dafür.
__________________
---
Xprofan X2 auf nem ollen PIII mit Win 2000
Martin_K ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 27.02.2010, 14:28   #11 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Zitat:
Zitat von RGH Beitrag anzeigen
Ok, ab XProfan 12 wird folgendes funktionieren:
Als zusätzlicher Parameter kann die Textausrichtung angegeben werden. Diese gilt dann, bis eine andere gewählt wird.
Gruß
Roland
Hallo Roland,
sehr einverstanden

Vielleicht kannst Du noch über einen weiteren Flag (~DT_WORDBREAK) nachdenken ?

Etwa in dieser Art.
Code:
$H windows.ph
cls ~GetSysColor(~COLOR_BTNFACE)
UseFont "Arial",14,0,0,0,0
TextColor $FF0000,-1
Var h& = ExDrawText(40,20,"Ich habe einen mehrzeiligen Text z.B. aus einer Datei, der irgendwann mal automatisch\noder von Hand umgebrochen werden soll.",~DT_WORDBREAK | ~DT_CENTER)
h& = ExDrawText(40,h&+10,"Ich habe einen mehrzeiligen Text z.B. aus einer Datei, der irgendwann mal automatisch\noder von Hand umgebrochen werden soll.",~DT_WORDBREAK | ~DT_RIGHT)
h& = ExDrawText(40,h&+10,"Ich habe einen mehrzeiligen Text z.B. aus einer Datei, der irgendwann mal automatisch\noder von Hand umgebrochen werden soll.",~DT_WORDBREAK | ~DT_LEFT)
waitinput
end

Proc ExDrawText
  Parameters X&,Y&,Text$,Flag&
  Declare Rect#
  Var TA& = ~GetTextAlign(%hdc2) 
  ~SetTextAlign(%hdc2,~TA_LEFT)
  Var w& = Width(~WindowFromDC(%hdc))- (x&*2)
  Dim Rect#,16
  ~SetRect(Rect#,X&,Y&,X&+W&,0)
  ~DrawText(%hdc2,Addr(Text$),Len(Text$),Rect#,Flag& | ~DT_CALCRECT )
  ~DrawText(%hdc2,Addr(Text$),Len(Text$),Rect#,Flag&)
  ~SetTextAlign(%hdc2,TA&)
  Repaint
  Var Ret& = Long(Rect#,12)
  Dispose Rect#
EndProc
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher

Geändert von Andreas Miethe (27.02.2010 um 15:15 Uhr)
Andreas Miethe ist offline   Mit Zitat antworten
Alt 01.03.2010, 19:59   #12 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Einen habe ich noch für Textausgaben.
Taballarische Ausgabe.

Code:
$H windows.ph

cls
UseFont "Arial",16,0,0,0,0
DECLARE Tabs&[],sText$,sTab$,pTab&
'Minuswert des Tabs = rechtsbündige Ausgabe
Tabs&[0] = -200 'PIXEL
Tabs&[1] = -300
Tabs&[2] = -width(%hwnd)

'Pointer für Tabs ermitteln
pTab& = Addr(Tabs&[0])

' TAB-Zeichen zuweisen
sTab$ = Chr$(9)

'Der Text könnte auch aus einer CSV-Datei kommen :-)
sText$ = "Name;Einzelpreis;Anzahl;Preis"
'Semikolon zu TAB
sText$ = TransLate$(sText$,";",sTab$)
'DC,X,Y,Textpointer,Textlänge,Tabarray,Tabanfang
~TabbedTextOut(%hdc2,0,0,Addr(sText$),Len(sText$),SizeOf(Tabs&[]),pTab&,0)

sText$ = "Gabel;1,50 €;120;180,00 €"
sText$ = TransLate$(sText$,";",sTab$)
~TabbedTextOut(%hdc2,0,30,Addr(sText$),Len(sText$),SizeOf(Tabs&[]),pTab&,0)
sText$ = "Messer;2,81 €;10;28,10 €"
sText$ = TransLate$(sText$,";",sTab$)
~TabbedTextOut(%hdc2,0,50,Addr(sText$),Len(sText$),SizeOf(Tabs&[]),pTab&,0)

sText$ = "MwSt;;19;39,54 €"
sText$ = TransLate$(sText$,";",sTab$)
~TabbedTextOut(%hdc2,0,70,Addr(sText$),Len(sText$),SizeOf(Tabs&[]),pTab&,0)

sText$ = "Gesamt;;;247,64 €"
sText$ = TransLate$(sText$,";",sTab$)
~TabbedTextOut(%hdc2,0,120,Addr(sText$),Len(sText$),SizeOf(Tabs&[]),pTab&,0)

repaint
CLEAR Tabs&[]
waitinput
end
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher

Geändert von Andreas Miethe (01.03.2010 um 20:19 Uhr)
Andreas Miethe ist offline   Mit Zitat antworten
Alt 01.03.2010, 21:56   #13 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
Standard

Ui, da wäre dann "Zahlen rechtsbündig" und "Zahlen am Komma ausgerichtet" auch noch interessant. Aber dann sind wir bald bei Excel LOL
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist gerade online   Mit Zitat antworten
Alt 01.03.2010, 23:36   #14 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Klasse
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 02.03.2010, 01:03   #15 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

Zitat:
"Zahlen am Komma ausgerichtet" auch noch interessant. Aber dann sind wir bald bei Excel
Das kann heute Excel ohne Vorgabe der Nachkommastellen?
Wäre dann ein Grund mal wieder Excel zu testen.

Gruß Thomas
THFR ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sprachein-/ ausgabe Jamie82 Windows XP 6 15.05.2009 11:24
Ausgabe aus mysql db 12null34 PHP/MySQL 9 27.02.2007 16:49
Windows Ausgabe Noldi Software - Allgemein 4 02.06.2006 14:36
php formular ausgabe Cage PHP/MySQL 3 22.02.2006 20:47
Ausgabe einer kette von zahlen chas Visual Basic, Visual Basic.NET 8 23.09.2005 12:22



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:07 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2