Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249256 (10692)
  Suchen
 Zurück zur Übersicht
 AutorThema: mit Drawtext - Rechtsbündig formatieren
Kathrin Köhler
Datum:04.01.02 01:11 Antwortenals Email verschicken (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


Andreas Miethe
Datum:04.01.02 07:32 Antwortenals Email verschicken (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


Kathrin Köhler
Datum:04.01.02 16:10 Antwortenals Email verschicken (Kathy008@freenet.de) 


Ein ganz großes Super dankeschön.... Funktioniert einwandfrei...

Cu Kathy


Kathrin Köhler
Datum:04.01.02 17:47 Antwortenals Email verschicken (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


Andreas Miethe
Datum:04.01.02 19:42 Antwortenals Email verschicken (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



Gerd Telzerow
Datum: 05.01.02 13:23 Antwortenals Email verschicken (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


 Zurück zur Übersicht