Einsteigerfragen zur PROFAN Programmierung

| Suchen
| Zurück zur Übersicht

Autor | Thema: Wieviel Platz für Stringvariable?
Christian Werner
| Datum:08.10.02 14:46 (chw.szb@freenet.de) |
Kann mir jemand einen Tip geben, wie ich herausbekommen kann, welchen Platz der Inhalt einer Stringvariable mit x-beliebiger Höhe/Breite/usw. auf dem Bildschirm bzw. auf dem Papier einnehmen wird? Kann man das irgendwie berechnen? Ich programmiere schon seit Jahren gelegentlich mit Profan, aber mir ist eine Lösung dazu noch nicht über den Weg gelaufen. Hab jetzt Version Profan 7.5. Christian
Alexander Schoenfeld
| Datum:08.10.02 16:11 (alexander.schoenfeld@chronologic.de) |
Hallo Christian, was du suchst ist die API GetTextExtentPoint32 hier der Link zur MSDN-Beschreibung der Funktion: http://msdn.microsoft.com/library/en-us/gdi/fontext_8smq.asp Wenn du noch fragen hast, melde dich einfach nochmal :) -- Mit freundlichem Gruss / kind regards, Alexander Schoenfeld Email: alexander.schoenfeld@chronologic.de
Christian Werner
| Datum:08.10.02 16:33 (chw.szb@freenet.de) |
Eine Antwort in dieser Geschwindigkeit ist ja atemberaubend! Danke, Alexander, werde es mal damit versuchen.
carlo keil
| Datum: 08.10.02 21:03 (carlo.keil@web.de) |
Hallo Christian, ich habe mal in meiner Wühlkiste gekramt und das Ergebnis unten angehängt. Gebrauchsanleitung: Erst speichern, dann lesen, anschliessend ausprobieren und zum Schluß gut finden :) HTH Carlo -------------------------------------------------------------- 'Diese Include-Datei stellt folgende Proceduren bereit: ' 'GetStringHeight r$ ' Rückgabe: Höhe der Zeichenkette in Pixeln 'GetStringWidth r$ ' Rückgabe: Breite der Zeichenkette in Pixeln 'DrawTextCenterH x1, x2, y, r$ ' Der String r$ wird zwischen x1 und x2 zentriert in der Pixelzeile y ausgegeben. ' 'DrawTextCenterV x%, y1%, y2%, txt$ ' Der String r$ wird zwischen y1 und y2 zentriert in der Pixelspalte x ausgegeben. ' 'DrawTextCenterVH x1%, y1%, x2%, y2%, txt$ ' Der String r$ wird vertikal und horizontal zwischen y1 und y2 bzw. x1 und x2 zentriert. ' '------------------------------------------------------------------------------- Def GetTextExtentPoint32A(4) !"GDI32","GetTextExtentPoint32A" Def GetDC(1) !"USER32","GetDC" Def ReleaseDC(2) !"USER32","ReleaseDC" Declare Text#, Ergebnis# Proc GetTextExtent Parameters r$, Flag% 'Bei Flag = 0 Stringhöhe zurückgeben, sonst Stringlänge DECLARE Rückgabewert&, DeviceContext& DIM Text#, @Add(Len(r$), 1) DIM Ergebnis#, 8 String Text#, 0 = r$ DeviceContext& = GetDC(@GetActiveWindow()) GetTextExtentPoint32A(DeviceContext&, Text#, @Len(r$), Ergebnis#) Rückgabewert& = @Long(Ergebnis#, 4) 'Breite Case Flag% : Rückgabewert& = @Long(Ergebnis#, 0) 'Höhe 'Aufräumen: ReleaseDC(@GetActiveWindow(), DeviceContext&) Dispose Text# Dispose Ergebnis# Return Rückgabewert& EndProc Proc GetStringHeight Parameters r$ GetTextExtent r$, 0 Return &(0) EndProc Proc GetStringWidth Parameters r$ GetTextExtent r$, 1 Return &(0) EndProc '------------------------------------------------------------------------------- Proc DrawTextCenterH Parameters x1%, x2%, y%, txt$ Declare l&, x% GetStringWidth txt$ l& = &(0) x% = (x1% + x2% - l&) / 2 DrawText x%, y%, txt$ EndProc 'DrawTextCenterH '------------------------------------------------------------------------------- Proc DrawTextCenterV Parameters x%, y1%, y2%, txt$ Declare h&, y% GetStringHeight txt$ h& = &(0) y% = (y1% + y2% - h&) / 2 'Etwas nach oben rücken, da über der Schrift noch ein kleiner Rand bis zur 'Schriftposition besteht. Beispiel: Bei Verdana 18 und Ausgabe ab Pixelzeile 0 'beginnt ein T erst in Pixelzeile 4. y% = y% - (h& * 0.11) DrawText x%, y%, txt$ EndProc 'DrawTextCenterV '------------------------------------------------------------------------------- Proc DrawTextCenterVH Parameters x1%, y1%, x2%, y2%, txt$ Declare l&, h&, x%, y% GetStringHeight txt$ h& = &(0) GetStringWidth txt$ l& = &(0) x% = (x1% + x2% - l&) / 2 y% = (y1% + y2% - h&) / 2 'Etwas nach oben rücken, da über der Schrift noch ein kleiner Rand bis zur 'Schriftposition besteht. Beispiel: Bei Verdana 18 und Ausgabe ab Pixelzeile 0 'beginnt ein T erst in Pixelzeile 4. y% = y% - (h& * 0.11) DrawText x%, y%, txt$ EndProc 'DrawTextCenterVH '-------------------------------------------------------------------------------

| Zurück zur Übersicht

| Ein kostenloses WebMart Forum WebMart Homepage Tools kostenlos |