Seite 1 von 1
String Font
Verfasst: 19.04.2005 16:58
von Konne
Wie kann ich aus einem Stringgadget die Formatrerung des Textes mit auslesen?
Wenn es eine Lösung geben sollte bin ich seh dankbar
PS: Die Funktion sollte auch mehrere Farbwerte auslesen können
Verfasst: 19.04.2005 19:33
von Lukas-P
wie willst du den den Text Formatieren?
Verfasst: 19.04.2005 19:53
von Konne
Sorry hab mich verschrieben meinte Editorgadget (oh man Blackouts gibts) die Proceduren heißen:
Code: Alles auswählen
Procedure Editor_FontSize(Gadget, FontSize.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_SIZE
format\yHeight = FontSize * 20
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Procedure Editor_Font(Gadget, FontName.s)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_FACE
PokeS(@format\szFaceName, FontName)
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Procedure Editor_FontColor(Gadget, Color.l)
format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = #CFM_COLOR
format\crTextColor = Color
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Procedure SetTextOptions(Gadget,red,green,blue,font.s,fontsize)
Editor_Font(Gadget, font.s)
Editor_FontColor(Gadget,RGB(red,green,blue))
Editor_FontSize(Gadget, fontsize)
EndProcedure
Verfasst: 19.04.2005 20:32
von MJP
Das würde ich auch gerne wissen wie das geht...

Verfasst: 19.04.2005 21:31
von Konne
MJP wie bist du den druff^^ Naja wenigstens abrbeitest du was im gegensatzt zu Max^^

Verfasst: 20.04.2005 06:49
von DarkDragon
Du kannst doch einfach den Courser über ein Zeichen bewegen(Selektierungsprozeduren gibt es zu genüge im CodeArchiv) und dann mit SendMessage_(GadgetID(Gadget), #EM_GETCHARFORMAT, #SCF_SELECTION, @format) die Formatierung auslesen.
Verfasst: 25.04.2005 16:39
von Konne
Verfasst: 29.04.2005 18:09
von MJP
Also ich hab auch ein bissi was probiert

Hab dabei das Codearchive benutzt
So jetzt hab ich genau das selbe problem wie der Konne... Wie lese ich das ganze aus und kann die Farbe einstellen???
Code: Alles auswählen
Declare WndProc(hWnd, uMsg, wParam, lParam)
Structure ENLINK
nmhdr.NMHDR
msg.l
wParam.l
lParam.l
chrg.CHARRANGE
EndStructure
Structure CHARFORMAT2
cbSize.l
dwMask.l
dwEffects.l
yHeight.l
yOffset.l
crTextColor.l
bCharSet.b
bPitchAndFamily.b
szFaceName.b[#LF_FACESIZE]
_wPad2.w
wWeight.w
sSpacing.w
crBackColor.l
lcid.l
dwReserved.l
sStyle.w
wKerning.w
bUnderlineType.b
bAnimation.b
bRevAuthor.b
bReserved1.b
EndStructure
#EN_LINK = $70b
#ENM_LINK = $4000000
#CFM_LINK = $20
#CFE_LINK = $20
Procedure WndProc(hWnd, uMsg, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_NOTIFY
*el.ENLINK = lParam
If *el\nmhdr\code=#EN_LINK
If *el\msg=#WM_LBUTTONDOWN
StringBuffer = AllocateMemory(512)
txt.TEXTRANGE
txt\chrg\cpMin = *el\chrg\cpMin
txt\chrg\cpMax = *el\chrg\cpMax
txt\lpstrText = StringBuffer
SendMessage_(GadgetID(0), #EM_GETTEXTRANGE, 0, txt)
Debug PeekS(StringBuffer)
FreeMemory(0)
EndIf
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 100, 200, 195, 260, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget, "PureBasic Window")=0:End:EndIf
If CreateGadgetList(WindowID())=0:End:EndIf
EditorGadget(0, 0, 0, WindowWidth(), WindowHeight())
SendMessage_(GadgetID(0), #EM_SETEVENTMASK, 0, #ENM_LINK|SendMessage_(GadgetID(0), #EM_GETEVENTMASK, 0, 0))
If LoadFont(0,"Arial",10)
SetGadgetFont(0,FontID())
EndIf
Colors.l=RGB(222,111,11)
EditorText$ = "I don't wanna be a link,"+Chr(10)+"but I am a link,"+Chr(10)+"what do you think?"
Link$ = "I am a link"
SetGadgetText(0, EditorText$)
Start = FindString(EditorText$, Link$, 1)
SendMessage_(GadgetID(0), #EM_EXGETSEL, 0, chr.CHARRANGE)
SendMessage_(GadgetID(0), #EM_HIDESELECTION, #TRUE, 0)
SendMessage_(GadgetID(0), #EM_SETSEL, Start-1, Start+Len(Link$)-1)
cf.CHARFORMAT2
cf\cbSize = SizeOf(CHARFORMAT2)
SendMessage_(GadgetID(0), #EM_GETCHARFORMAT, #SCF_SELECTION, cf)
cf\cbSize = SizeOf(CHARFORMAT2)
cf\dwMask|#CFM_BOLD | #CFM_COLOR |#CFM_SIZE |#CFM_FACE ;|#CFM_LINK
cf\dwEffects |#CFM_BOLD | #CFM_COLOR |#CFM_SIZE |#CFM_ITALIC ;|#CFM_LINK
cf\yHeight=150
cf\crTextColor=Colors
SendMessage_(GadgetID(0), #EM_SETCHARFORMAT, #SCF_SELECTION, cf)
cf\cbSize = SizeOf(CHARFORMAT2)
SendMessage_(GadgetID(0), #EM_GETCHARFORMAT, #SCF_SELECTION, cf)
SendMessage_(GadgetID(0), #EM_EXSETSEL, 0, chr)
SendMessage_(GadgetID(0), #EM_HIDESELECTION, #FALSE, 0)
SetWindowCallback(@WndProc())
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
End
Wie geht was hier...Link:
http://msdn.microsoft.com/library/defau ... ormat2.asp
THx 4 Help MJP

Verfasst: 30.04.2005 21:26
von Andre
Schonmal die neue UserLib "LibEditorPlus" probiert ?
Gibts im Showcase auf
www.PureArea.net 