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 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 Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 186
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 24.09.2009, 12:41   #1 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Beitrag wie kann man Text richtig umbrechen ?

Hallo an alle XProfaner

Im Moment schlage ich mich mit diesem Problem rum:

Ein längerer Text (1 String) soll mit Drawtext X%,Y%,text$ in einem begrenzten Platz angezeigt werden.
Dieser String hat im Programm immer wieder einen anderen Inhalt. Wird aus eine Datei gelesen.
Das ist an sich einfach mit LEN, LEFT$(.., MID$(..., RIGHT$(...
Aber hier werden Wörter einfach getrennt und in der nachsten Zeile weitergeschrieben.
Das sieht nicht gut aus und ist auch nicht besonders gut lesbar.
Wie kann ich den Code überlisten, den Zeilenumbruch nur an einer Leerstelle vorzunehmen
Drawtext muss ich verwenden,weil der Text farbig sein muss.
Create("Text".... hilft mir also nicht.
Danke für einen Denkanstoss
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de

Geändert von horsthorn (24.09.2009 um 12:43 Uhr) Grund: Hatte was vergessen.
horsthorn ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 24.09.2009, 13:47   #2 (Direktlink)
iF_
Weiß worum´s geht
 
Benutzerbild von iF_
 
Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
Standard

Einfach ein HTML-Control zur Textausgabe verwenden oder die Text-Ausgabelänge pro Buchstaben berechnen ( http://quelltext.xprofan.com/src/12537927146922.txt ) und selbst umbrechen.
__________________
Programmieren für Anfänger.
iF_ ist offline   Mit Zitat antworten
Alt 24.09.2009, 13:56   #3 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Hallo Horst,

nimm einfach die API DrawText()

Code:
$H Windows.ph
Struct RECT = left&,top&,right&,bottom&
CLS
Var Text$ = "Das ist ein langer Text, der umgebrochen werden soll"
TextColor $ff,-1
DrawText 10,10,Text$
Var Rect# = New(RECT)
~SetRect(Rect#,10,40,200,100)
~DrawText(%hdc2,Addr(Text$),Len(Text$),Rect#,~DT_WORDBREAK)
Repaint
waitinput
end
oder als Procedur

Code:
$H Windows.ph
CLS
Var Text$ = "Das ist ein langer Text, der umgebrochen werden soll"
TextColor $ff,-1
DrawText 10,10,Text$
DrawTextEx(10,40,200,Text$,$FF0000)
waitinput
end

Proc DrawTextEx
  Parameters X&,Y&,W&,Text$,Color&
  TextColor Color&,-1
  Struct RECT = left&,top&,right&,bottom&
  Var Rect# = New(RECT)
  ~SetRect(Rect#,X&,Y&,X&+W&,0)
  ~DrawText(%hdc2,Addr(Text$),Len(Text$),Rect#,~DT_WORDBREAK | ~DT_CALCRECT)
  ~DrawText(%hdc2,Addr(Text$),Len(Text$),Rect#,~DT_WORDBREAK)
  Repaint
  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 (24.09.2009 um 14:20 Uhr)
Andreas Miethe ist offline   Mit Zitat antworten
Alt 24.09.2009, 14:46   #4 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Hier noch eine Lösung von Normann 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 24.09.2009, 16:14   #5 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Daumen hoch

Hiermit möchte ich mich bei allen XProfanern bedanken, die mir hier so schnell mit Tipps geholfen haben.
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 25.09.2009, 15:24   #6 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

Hallo Horst...

Das passt zwar nicht ganz zu deiner Frage, ich denke aber, das brauchst du auch noch:
Code:
Declare Rückgabe$, Zeilen$, Position&, TeilString$

'So sieht der String aus.
'Das Trennzeichen der Zeilen ist " | "
Rückgabe$ = "Code von Modul Test.exe wurde verändert."
Rückgabe$ = Rückgabe$ + " | " + "Ladegröße von Modul winet.dll stimmt nicht." 
Rückgabe$ = Rückgabe$ + " | " + "Zugriff verweigert." 
Rückgabe$ = Rückgabe$ + " | " + "Code von Modul AXT.DLL wurde geändert." 

'Ein Trennzeichen am Ende hinzufügen...
Zeilen$ = Rückgabe$ + " | "
Position& = 1
While SubStr$(Zeilen$ , Position& ," | ")<>""
 TeilString$ = SubStr$(Zeilen$ , Position& , " | ")
 Print "Zeile " + Str$(Position&) + ": " + TeilString$
 Position& = Position& + 1
EndWhile

While 1
 WaitInput
EndWhile
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
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
Gibts es ein VideoProg wo man Text ins Video einfügen kann? pcboy Software - Allgemein 8 17.02.2008 21:10
Kann man von PDF Seiten den Text irgendwie kopieren ? pcboy Allgemein 6 03.02.2008 23:31
wie kann ich in geslicete hps text eingeben? Checkervara Homepagegestaltung 10 01.03.2007 20:25
Mit welchem prog kann ich nem Video Vorspann geben,Text etc. pcboy Software - Allgemein 3 24.02.2007 19:22
Womit kann ich für Videos Text hinzufügen? pcboy Software - Allgemein 1 29.11.2004 23:32



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:02 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