String Font

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

String Font

Beitrag 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
Benutzeravatar
Lukas-P
Beiträge: 262
Registriert: 07.10.2004 12:03

Beitrag von Lukas-P »

wie willst du den den Text Formatieren?
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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 
Benutzeravatar
MJP
Beiträge: 72
Registriert: 14.10.2004 18:45
Wohnort: Nähe Frankfurt/Hessen
Kontaktdaten:

Beitrag von MJP »

Das würde ich auch gerne wissen wie das geht... :mrgreen:
Alle Reschtsreib feler sind beabsichticht unn kosten nichs echtra ;-D
Visit ---|> http://www.Komani.de/
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

MJP wie bist du den druff^^ Naja wenigstens abrbeitest du was im gegensatzt zu Max^^ :allright:
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
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.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

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 :praise: :praise: :praise: :praise: :praise: :praise: :praise:
Benutzeravatar
MJP
Beiträge: 72
Registriert: 14.10.2004 18:45
Wohnort: Nähe Frankfurt/Hessen
Kontaktdaten:

Beitrag von MJP »

Also ich hab auch ein bissi was probiert :mrgreen:
Hab dabei das Codearchive benutzt 8)
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 :allright:
Alle Reschtsreib feler sind beabsichticht unn kosten nichs echtra ;-D
Visit ---|> http://www.Komani.de/
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Schonmal die neue UserLib "LibEditorPlus" probiert ?

Gibts im Showcase auf www.PureArea.net :wink:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten