String Font
String Font
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
Wenn es eine Lösung geben sollte bin ich seh dankbar
PS: Die Funktion sollte auch mehrere Farbwerte auslesen können
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
Das würde ich auch gerne wissen wie das geht... 

Alle Reschtsreib feler sind beabsichticht unn kosten nichs echtra ;-D
Visit ---|> http://www.Komani.de/
Visit ---|> http://www.Komani.de/
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Danke für den Tipp mit dem Textmarkieren das bekomme ich jetzt auch schon gut hin jetzt hab ich nur noch das "kleine" Problem das ich jetzt keine Ahnung hab wie ich daraus zB die Schriftfarbe ermitteln kann. ICh hab jetzt schon tagelang gesucht und rumprobiert kriegs aber einfach net hin .
Könnte vielleicht irgendjeman eine Procedure posten, der man die GadgetID übergibt und die dann die Formatierung zurückgibt.
Bidde bidde helft mir

Könnte vielleicht irgendjeman eine Procedure posten, der man die GadgetID übergibt und die dann die Formatierung zurückgibt.
Bidde bidde helft mir







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???
Wie geht was hier...Link:http://msdn.microsoft.com/library/defau ... ormat2.asp
THx 4 Help MJP

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
THx 4 Help MJP

Alle Reschtsreib feler sind beabsichticht unn kosten nichs echtra ;-D
Visit ---|> http://www.Komani.de/
Visit ---|> http://www.Komani.de/