Seite 1 von 1

Nochmal EditorGadget - Einzelne Wörter färben

Verfasst: 27.10.2004 16:42
von Calloway
Hallo!

In einem anderem Thread habe ich einen Code gefunden, mit dem man Zeilen eines Editorgadgets anderes färben oder be-font-en kann . :wink:

Meine Frage ist nun, ob man statt ganzer Zeilen auch einzelne Wörter oder Buchstaben anders färben kann.

Vielen Dank für mögliche Antworten...

Ach ja: die Suchfunktion habe ich ausnahmsweise mal nicht benutzt... /:->
--
Gruß, Martin.

Verfasst: 28.10.2004 13:34
von Falko
Der original Sourcecode vom PBEditor (IDE), und zwar die Proceduren" helfen dir da bestimmt weiter.

http://purebasic-cvs.dyndns.org/index.c ... web-markup

>>> PS: Ist mir auch erst jetzt eingefallen

MfG Falko

Re: Nochmal EditorGadget - Einzelne Wörter färben

Verfasst: 28.10.2004 14:57
von Kiffi
> Ach ja: die Suchfunktion habe ich ausnahmsweise mal nicht benutzt...

grmpf, das hättest Du mal tun sollen. Das Thema hatten wir erst gestern.

Editbox: Textfragmente selektieren, ersetzen oder färben.

Verfasst: 28.10.2004 20:56
von Falko
Hab jetzt was passendes über die API gestrickt
bzw. in der Eile ohne Ordnung zusammengestellt :mrgreen: .

Code: Alles auswählen

;Selektierte Buchstaben ersetzen bzw. färben. 
;Codeschnipsel written by Falko 
String$="Mein Test" 
Buffer$=Space(255) 
Global hdc
Global mychar.CHARFORMAT

  ;
  ;Ermittle die Anzahl Buchstaben der obrigen Zeile
  ;
  Procedure.l GetCursorPos(YPos.l)
   Result = SendMessage_(hdc,#EM_LINEINDEX,YPos,0)
   ProcedureReturn Result
  EndProcedure
 ;
 ; Farbe und Fontattribute setzen
  Procedure SetCharFormat(Mask.l,Effects.l,Color.l)
     ;mychar.CHARFORMAT ; Sollte vorher als global deklariert werden.
     mychar\cbSize=SizeOf(CHARFORMAT) 
     mychar\dwMask=Mask;#CFM_BOLD|#CFM_COLOR ; Fettschrift und Color setzen  
     mychar\dwEffects=Effects 
     mychar\yHeight=500
     mychar\crTextColor=Color 
     mychar\bCharSet=0
     PokeS(@mychar\szFaceName, "Symbol")
     EndProcedure
  
  
  If OpenWindow(0,0,0,322,275,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"StringGadget Flags") And CreateGadgetList(WindowID(0)) 
     hdc.l=EditorGadget (0,8,8,485,385,#PB_Container_Raised) 
     AddGadgetItem(0,0,"Wie wäre es mit dieser Zeile, die wir ändern wollen.")
     AddGadgetItem(0,1,"Wie wäre es mit dieser Zeile, die wir ändern wollen.")    
     AddGadgetItem(0,2,"Wie wäre es mit dieser Zeile, die wir ändern wollen.") 
     ;
     ;In dieser Zeile ein Teilstring, Farbe und Fontattribut verändern
     ;
     Char=GetCursorPos(1)
     SendMessage_(hdc,#EM_SETSEL,Char+16,Char+28); markiere Textteil, der geändert werden soll
     SetCharFormat(#CFM_BOLD|#CFM_COLOR,1,$0000FF)
     SendMessage_(hdc,#EM_SETCHARFORMAT,#SCF_SELECTION,mychar); Setzen der Attribute auf selection
     SendMessage_(hdc,#EM_REPLACESEL,0,String$); Ersetze diesen Teil duch den String$ 
     ;
     ;Textteil Markieren und durch nur Farbe Blau und Fontattribute ersetzen 
     ;
     
     Char=GetCursorPos(2)
     SendMessage_(hdc,#EM_SETSEL,Char+8,Char+8+8); markiere Textteil, der gefärbt werden soll 
     SetCharFormat(#CFM_FACE | #CFM_SIZE | #CFM_COLOR,1,$FF0000)
     SendMessage_(hdc,#EM_SETCHARFORMAT,#SCF_SELECTION,mychar);Chare-Attribute setzen
     SendMessage_(hdc,#EM_GETSELTEXT,0,Buffer$); kopiere Selektieren Text in den Buffer  
     SendMessage_(hdc,#EM_REPLACESEL,0,Buffer$); ersetze Text dann aus dem Buffer mit den Attributen
     
    
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
  EndIf
Hab leider nicht viel Zeit. Heute mal wieder die letzte Nachtschicht für diese Woche. :mrgreen:

>>>>> Edit: Wörter oder Buchstaben färben, ersetzen oder andere Fonts
>>>>> vergeben mittels API-Funktionen
MfG Falko

Verfasst: 29.10.2004 01:17
von Lars
Wobei imho das einfärben via RTF schöner, wenn auch wesentlich
komplizierter ist. Für ein Beispiel kannst du dir z.B. meine Brainfuck IDE
angucken, die du im PureBoard Archiv finden solltest, oder auch das
angesprochene Beispiel des PB Editors, wobei das natürlich etwas
komlizierter zu durchschauen ist.

Verfasst: 29.10.2004 21:56
von Falko
@Calloway
Der source mit API-Funktionen ist soweit angepasst, so das du
damit Buchstaben, Sätze oder Wörter färben, austauschen oder sogar
einen Font vergeben kannst. Ich hoffe du kannst es brauchen.

MfG Falko