Unter Windows geht´s hiermit:
(Basis aus´m CodeArchiv... oder hier aus´m Formul?)
Code: Alles auswählen
;Modul Editor_Select Version 1.0 vom 24.02.2007
;
;Funktion: Text-Bereich im Editor-Gadget selektieren (=wird blau)
;
;Aufruf: Editor_Select(Gnr, x1, y1, X9, y9)
; Gnr = #GadGet-Nr des Editors
; x1 = Zeichen-Nr (1..LineLen) des 1. zu selektierenden Zeichens
; y1 = Zeilen-Nr (0..TextLen) des Selektions-Begines
; x9 = Zeichen-Nr (1..LineLen) des letzten zu selektierenden Zeichens
; wenn -1, so wird automatisch bis ZeilenEnde selektiert
; y9 = Zeilen-Nr (0..TextLen) des Selktions-Endes
; wenn -1, so wird automatisch bis TextEnde selektiert
;
Procedure Editor_Select(GNR,x1,y1,x9,y9)
Protected Selected.CHARRANGE ,GID
GID=GadgetID(GNR)
Selected\cpMin = SendMessage_(GID, #EM_LINEINDEX, y1, 0) + x1 - 1 ;Anz. aller Zeichen vor Y1
If y9 = -1 : y9 = SendMessage_(GID, #EM_GETLINECOUNT, 0, 0)-1 : EndIf
Selected\cpMax = SendMessage_(GID, #EM_LINEINDEX, y9, 0) ;Anz. aller Zeichen vor Y9
If x9 = -1 :
Selected\cpMax + SendMessage_(GID, #EM_LINELENGTH, Selected\cpMax, 0)
Else
Selected\cpMax + x9 - 1
EndIf
SendMessage_(GID, #EM_EXSETSEL, 0, @Selected) ;selectiert alle Zeichen cpMin bis cpMax
EndProcedure
;Modul Editor_HgCol Version 1.0 vom 24.02.2007
;
;Funktion: selektierten Editor-Bereich mit HinterGrund-Farbe darstellen
;
;Aufruf: Editor_HgCol(Gnr, Farbe)
; Gnr = #GadGet-Nr des Editors
; Farbe= RBG-Farbe des Hintergrundes
;
Procedure Editor_HgCol(GNR, Color.l)
Structure CHARFORMAT2_BC
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
Protected format.CHARFORMAT2_BC
format\cbSize = SizeOf(CHARFORMAT2_BC)
format\dwMask = $4000000 ; = #CFM_BACKCOLOR
format\crBackColor = Color
SendMessage_(GadgetID(GNR), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Editor_Select(#EditGad,1, ZeilenNr, -1, ZeilenNr) ;wählt eine komplette Zeile aus
Editor_HgCol(#EditGad,RGB_Farbe) ;set HinterGrundFarbe des ausgewählten Bereiches
Editor_Select(#EditGad,0, 0, 0, 0) ;Selektion (=Auswahl) reseten