Seite 1 von 1
automatischer Zeilenumbruch nach x zeichen in Messagere....
Verfasst: 06.08.2005 11:15
von HoDam
Hallo,
wie kann ich einen automatischen Zeilenumbruch in einem Messagerequester erzeugen?. Gibt es dafür einen Parameter?
Wichtig wäre für mich das er dann nicht das Wort trennt sondern, ab dem vorhergehenden Leerzeichen den Zeilenumbruch erzeugt, so wie in Word z.B
Verfasst: 06.08.2005 11:33
von Hroudtwolf
Code: Alles auswählen
MessageRequester ("Hallo","Nachricht1"+chr(10)+"Nachricht2"+chr(10)+"Nachricht3",0)
Verfasst: 06.08.2005 13:33
von HoDam
hallo
danke, aber das habe ich nicht gemeint.
Ich möchte das Abhängig von der Fensterbreite des Messagerequester machen.
Hintergrund: Zum Teil gibt es Informationen zu bestimmten Programmabläufen für den Anwender. Da diese Abhängig von der Sprache unterschiedlich lang ausfallen können, möchte ich immer mit einer definierten Fensterbreite arbeiten und der an der Stelle des letzen Leerzeichens, welches noch in der Zeile vorkommt umgebrochen werden.
Die Strings werden zusammengetragen von unterschiedlichen Übersetzern. Ich wollte mir die Arbeit sparen, das ich jeden String anpacken muss.
Es muss nicht unbedingt der Messagerequester sein. Den hatte ich nur ausgewählt , weil man hier sehr leicht Unterscheidungen zwischen INFO, Fragen, Warnhinweise (Ausrufezeichen) mit entsprechenden Symbolen erzeugen kann.
Verfasst: 06.08.2005 13:37
von Green Snake
du willst also das der text IMMER centriert ist, und die msgbox IMMER gleich gross ist?
wenn ja, dan mach dir doch selber einen requester.
einfach ein fenster auf, text gadget drauf, und das gewünschte icon mitgeben
wenn du den "orginal" error ton, oder ienen anderen msgbox ton willst, dan such mal im code archiev, ich glaube dort hat es einen code, mit dem man die system sounds abspielen kann

@HoDam
Verfasst: 06.08.2005 16:50
von jear
Ich möchte das abhängig von der Fensterbreite des Messagerequester machen.
Umgekehrt wird ein Schuh draus. Die Messagerequester passen sich automatisch an die Länge der Texte an.
Wenn Du aber aus optischen Gründen eine ungefähre Breite der Requester erreichen willst, dann könnte Dir der folgende Kode möglicherweise helfen.
Code: Alles auswählen
MText.s = "Das ist der Text, der an den Leerzeichen auf eine bestimmte Länge umgebrochen werden soll."
;MText.s = "1234 6789012 456 890123456 890123456 890 234567890 2345678901 345 78 0123456 8901234567890"
MTextL = Len(MText) : MTextU = 10 : Umbr = MTextU : lSpace = 1
For ix.b = 1 To MTextL
If Mid(MText, ix, 1) = Space(1)
If ix => Umbr
MText = Left(MText,lSpace - 1) + #LF$ + Right(MText, MTextL - lSpace)
Umbr + MTextU
EndIf
lSpace = ix ; Debug lspace
EndIf
Next
MessageRequester("Umbruchtest", MText, #MB_OK|#MB_ICONWARNING)
End
Verfasst: 06.08.2005 17:22
von ts-soft
@Green Snake
>> wenn du den "orginal" error ton, oder ienen anderen msgbox ton willst
z.B. so
Verfasst: 06.08.2005 17:43
von Green Snake
genau
Code: Alles auswählen
MessageBeep_(#MB_ICONINFORMATION)
Delay(1000)
MessageBeep_(#MB_ICONERROR)
Delay(1000)
MessageBeep_(#MB_ICONQUESTION)
Delay(1000)
MessageBeep_(#MB_ICONWARNING)
Delay(1000)
MessageBeep_(#MB_OK)
Delay(1000)
hier sind noch die anderen.
*gibts eigentlich noch mehr?

*
Verfasst: 06.08.2005 18:16
von ts-soft
Hier noch die Icons:
Code: Alles auswählen
iconStop.l = LoadIcon_(WindowID(), #IDI_HAND)
iconQuestion.l = LoadIcon_(WindowID(), #IDI_QUESTION)
iconExclamation.l = LoadIcon_(WindowID(), #IDI_EXCLAMATION)
iconInformation.l = LoadIcon_(WindowID(), #IDI_ASTERISK)
Zeilenumbruch auf bestimmte Länge
Verfasst: 05.01.2006 02:53
von AndyMars
Das mit dem Zeilenumbruch hat mich interessiert - die obige Funktion hat aber noch einen Fehler... Ich hab mal einen anderen Ansatz versucht:
Code: Alles auswählen
Procedure.s _BreakLines(Text.s, Length.l)
;diese Methode ist vielleicht auch nicht perfekt - aber immerhin
For i=1 To CountString(Text," ")+1
s$=StringField(Text,i," ")
If Len(z$)+Len(s$)>Length
b$+#CRLF$+Trim(z$)
z$=""
EndIf
z$+s$+" "
Next
b$+#CRLF$+Trim(z$)
b$=Right(b$,Len(b$)-2) ;erstes #CRLF$ ist zu viel
ProcedureReturn b$
EndProcedure
If OpenWindow(0,100,100,600,400,#PB_Window_SystemMenu ,"Umbruchtest")
If CreateGadgetList(WindowID(0))
EditorGadget(0,5,5,590,390)
SetGadgetFont(0,LoadFont(0,"Courier",10,0))
EndIf
Else
MessageRequester("Umbruchtest", "Konnte Fenster nicht öffnen!")
End
EndIf
MText.s="It is costly, increasingly regulated in many industries, And as admissible in court as paper documents. Learn more about how you can reduce the cost of your email system And understand which emails are putting you at risk, While supporting compliance initiatives And legal discovery processes as part of a comprehensive"
MTextL = Len(MText) : MTextU = 30 : Umbr = MTextU : lSpace = 1
MText2.s=MText ;für später speichern
For i=1 To MtextU ;Lineal String
Lineal$+Str(i % 10)
Next
Lineal$=ReplaceString(Lineal$,"0"," ") ;find ich übersichtlicher
;erst die alte Methode
For ix.b = 1 To MTextL
If Mid(MText, ix, 1) = Space(1)
If ix => Umbr
MText = Left(MText,lSpace - 1) + #LF$ + Right(MText, MTextL - lSpace)
Umbr + MTextU
EndIf
lSpace = ix ; Debug lspace
EndIf
Next
SetGadgetText(0,Lineal$ + #LF$ + MText)
While WaitWindowEvent()<>#PB_Event_CloseWindow:Wend ;mit Fensterschliessen geht's weiter...
SetGadgetText(0,Lineal$ + #CRLF$ + _BreakLines(MText2, MTextU))
While WaitWindowEvent()<>#PB_Event_CloseWindow:Wend
End
Edit 5.1.2006: Code noch etwas geändert