Autor | Thema: mit Drawtext - Rechtsbündig formatieren | | Datum:04.01.02 01:11 
(Kathy008@freenet.de) | |
Hallöchen an die erfahrenen.....
Ich habe ein Problem....
Wie kann ich mit "Drawtext x%,y%,Text$" realiesieren, daß der Text immer Rechtsbündig ausgerichtet ist. Ich möchte gerne einen TTF Fond dazu nutzen.
Hmmmm ich Hoffe es Gibt da irgendeine Lösung.....
Es soll darum gehen in einer Art "EXEL-Tabelle" sollen Eurobeträge untereinanderstehen und eben rechts ausgerichtet
001.11 €
111.11 €
011.11 €
Halt aber ohne Nullen vorran...
Also danke schon mal im vorraus....
Cu Kathy
|
| | Datum:04.01.02 07:32 
(andreas@andreas-miethe.de) | |
Hallo Kathy,
Mit der Api-Funktion SetTextAlign kannst Du dem HDC des Hauptfensters mitteilen wie der Text ausgerichtet werden soll.
Ein kleines Beispiel :
'--------------------------------------------
DEf SetTextAlign(2) ! "GDI32","SetTextAlign"
CLS
Declare WindowDC&,Text$,Text#,Textweite#
'Fontfarbe
TextColor @RGB(0,0,0),-1
'
SetTextAlign(%hdc,2)'rechtsbuendige Ausgabe des Textes
'der 2.Parameter bezeichnet die Ausrichtung
'0 = linksbuendig
'2 = rechtsbuendig
'6 = zentriert
DrawText 500,10,"123.90 DM"
DrawText 500,30,"1123.45 DM"
DrawText 500,50,"10134.25 DM"
DrawText 500,70,"334.25 DM"
waitinput
end
'--------------------------------------------
Gruss
Andreas
|
| | Datum:04.01.02 16:10 
(Kathy008@freenet.de) | |
Ein ganz großes Super dankeschön.... Funktioniert einwandfrei...
Cu Kathy
|
| | Datum:04.01.02 17:47 
(Kathy008@freenet.de) | |
Ich nochmal... also klappt wie gesagt super.... AAAAAber jetzt gibts ein neues Problem.Wenn ich das Fenster verkleinere oder ich ein Textfeld erzeuge welches über dem Ausdruck liegt und es dann mit @DestroyWindow entferne ist der Text auf einmal wieder Linksbündig... Hmmmm kann man da was machen ????
Nochmals im vorraus danke
Kathy
|
| | Datum:04.01.02 19:42 
(andreas@andreas-miethe.de) | |
Hallo Kathy,
immer wenn das Fenster den Befehl zum Neuzeichnen bekommt, dann wird aus HDC2 in HDC kopiert. Scheinbar werden auch die Attribute mitkopiert. Das heisst wenn Du SetTextAlign auch auf HDC2 anwendest, dann sollte es klappen.
SetTextAlign(%hdc2,2)'rechtsbuendige Ausgabe des Textes in %Hdc2
Gruss
Andreas
|
| | Datum: 05.01.02 13:23 
(GTelzerow@T-Online.de) | |
Hallo Kathy,
hier ein Reines Profan Beispiel!
Auch für StartPrint!
Proc TextRechts
'Parameter 1= Größter Text z.B. "100000,00", 2= der X Wert,
'3= der zu berechnende Text z.B. "10,00"
Parameters DrawTextP1$,DrawTextX2%,DrawTextP2$
'für Times New Roman Optimiert
'bei Font Wechsel eventuell Addition Parameter 2 Anpassen
If @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),8)
Return @Add(DrawTextX2%,50)
Elseif @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),7)
Return @Add(DrawTextX2%,42)
Elseif @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),6)
Return @Add(DrawTextX2%,36)
Elseif @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),5)
Return @Add(DrawTextX2%,30)
Elseif @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),4)
Return @Add(DrawTextX2%,24)
Elseif @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),3)
Return @Add(DrawTextX2%,18)
Elseif @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),2)
Return @Add(DrawTextX2%,12)
Elseif @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),1)
Return @Add(DrawTextX2%,6)
Elseif @Equ(@Sub(@Len(DrawTextP1$),@Len(DrawTextP2$)),0)
Return @Add(DrawTextX2%,0)
EndIf
EndProc
CLS
Declare Waehrung$,Zahl$
Declare MultEd&
'*********************************************************
'Nicht alle Fonts haben das Euro Symbol
TextColor @RGB(0,0,0),-1
UseFont "Times New Roman",15,0,0,0,0
Let Waehrung$=" DM"
Case @Gt(@val(@Left$(Date$(3),4)),2001):Let Waehrung$=" €"
'*********************************************************
Let Zahl$="0.90"
TextRechts "100000,00",200,Zahl$
DrawText @%(0),10,@Add$(Zahl$,Waehrung$)
Let Zahl$="1123.45"
TextRechts "100000,00",200,Zahl$
DrawText @%(0),30,@Add$(Zahl$,Waehrung$)
Let Zahl$="10134.25"
TextRechts "100000,00",200,Zahl$
DrawText @%(0),50,@Add$(Zahl$,Waehrung$)
Let Zahl$="334.25"
TextRechts "100000,00",200,Zahl$
DrawText @%(0),70,@Add$(Zahl$,Waehrung$)
WaitInput
Let MultEd&=@Create("MultiEdit",%Hwnd,"",50,5,300,150)
waitinput
@DestroyWindow(MultEd&)
Waitinput
' auch mit STARTPRINT
StartPrint
Let Zahl$="0.90"
TextRechts "100000,00",200,Zahl$
DrawText @%(0),10,@Add$(Zahl$,Waehrung$)
Let Zahl$="1123.45"
TextRechts "100000,00",200,Zahl$
DrawText @%(0),30,@Add$(Zahl$,Waehrung$)
Let Zahl$="10134.25"
TextRechts "100000,00",200,Zahl$
DrawText @%(0),50,@Add$(Zahl$,Waehrung$)
Let Zahl$="334.25"
TextRechts "100000,00",200,Zahl$
DrawText @%(0),70,@Add$(Zahl$,Waehrung$)
EndPrint
end
'--------------------------------------------
Gruss
Gerd
|
|
|