danke für die Tips, Vorschlag gleich angenommen in eingearbeitet(hat sich in in einen Tag geändert, spass!), hier die Lösung:
Code: Alles auswählen
EnableExplicit
Enumeration
#Window
#StatusBar
#Work_ListIcon
#Zoom_EditorInsObereGadget
#Zoom_Stichwort
#Zoom_ClearUnteresGadget
#Zoom_ShowRtfCode
#MiniEditor2_StyleFormat
#MiniEditor2_StyleB
#MiniEditor2_StyleI
#MiniEditor2_StyleU
#MiniEditor2_StyleS
#Work_Notiz
#Font_Work_Notiz
#CFM_BACKCOLOR = $4000000
EndEnumeration
Global ListIconZeile.l
Global ListIconSpalte.l
Global K
Global evMask
Global cur1 = LoadCursor_(0, #IDC_IBEAM)
Global cur2 = LoadCursor_(0, #IDC_HAND)
Procedure WorkNotiz_SetFontStyle(editor , mask)
Protected format.CHARFORMAT
format\cbSize = SizeOf(CHARFORMAT)
format\dwMask = mask
format\dwEffects = 0
If GetGadgetState(#MiniEditor2_StyleB)
format\dwEffects | #CFE_BOLD
EndIf
If GetGadgetState(#MiniEditor2_StyleI)
format\dwEffects | #CFE_ITALIC
EndIf
If GetGadgetState(#MiniEditor2_StyleU)
format\dwEffects | #CFE_UNDERLINE
EndIf
If GetGadgetState(#MiniEditor2_StyleS)
format\dwEffects | #CFE_STRIKEOUT
EndIf
SendMessage_(GadgetID(editor) , #EM_SETCHARFORMAT , #SCF_SELECTION , format)
EndProcedure
Procedure MiniEditor_UpdateWorkNotiz(editor)
Protected fName$ , i
Debug "Update"
Protected format.CHARFORMAT2
Protected pf.PARAFORMAT
format\cbSize = SizeOf(CHARFORMAT2)
SendMessage_(GadgetID(editor) , #EM_GETCHARFORMAT , #SCF_SELECTION , format)
pf\cbSize = SizeOf(PARAFORMAT)
SendMessage_(GadgetID(editor) , #EM_GETPARAFORMAT , 0 , pf)
; SET dwEffects
If format\dwEffects & #CFE_BOLD
SetGadgetState(#MiniEditor2_StyleB , 1)
Else
SetGadgetState(#MiniEditor2_StyleB , 0)
EndIf
If format\dwEffects & #CFE_ITALIC
SetGadgetState(#MiniEditor2_StyleI , 1)
Else
SetGadgetState(#MiniEditor2_StyleI , 0)
EndIf
If format\dwEffects & #CFE_UNDERLINE
SetGadgetState(#MiniEditor2_StyleU , 1)
Else
SetGadgetState(#MiniEditor2_StyleU , 0)
EndIf
If format\dwEffects & #CFE_STRIKEOUT
SetGadgetState(#MiniEditor2_StyleS , 1)
Else
SetGadgetState(#MiniEditor2_StyleS , 0)
EndIf
SetActiveGadget(editor)
EndProcedure
Procedure Callback_ColumnClick(Window.l, message.l, wParam.l, lParam.l)
Protected Result = #PB_ProcessPureBasicEvents
Protected *msgf.MSGFILTER, pos.POINT, char, lineindex, colindex, col, row
Protected *pnmh.NMHDR
Protected *pnmv.NMLISTVIEW
Protected *lpnmitem.NMITEMACTIVATE
Select message
Case #WM_NOTIFY
*msgf=lParam
Select *msgf\NMHDR\code
Case #EN_MSGFILTER
Select *msgf\msg
Case #WM_LBUTTONUP, #WM_KEYUP
Debug "#WM_LBUTTONDBLCLK"
MiniEditor_UpdateWorkNotiz(*msgf\NMHDR\idFrom) ; Editorgadget UPDATE
GetCaretPos_(@pos)
char=SendMessage_(GadgetID(#Work_Notiz), #EM_CHARFROMPOS, 0, @pos)
lineindex=SendMessage_(GadgetID(#Work_Notiz), #EM_LINEFROMCHAR, char, 0)
colindex=SendMessage_(GadgetID(#Work_Notiz), #EM_LINEINDEX, lineindex,0)
col = char-colindex
row = lineindex + 1
Debug "("+Str(col)+", "+Str(row)+")"
StatusBarText(#StatusBar, 0, "Editor ")
StatusBarText(#StatusBar, 1, "Spalte " +Str(col))
StatusBarText(#StatusBar, 2, "Zeile " +Str(row))
EndSelect
EndSelect
*pnmh = lParam ; lParam points to a structure with more info
*pnmh.NMHDR = lParam ; lParam points to a structure with more info
If *pnmh\hwndFrom = GadgetID(#Work_ListIcon) ; see if it is the right gadget
Select *pnmh\code ; code contains actual message
; Columen Klick
Case #LVN_COLUMNCLICK ; user clicked on the Header of a ListIconColumn
*pnmv.NMLISTVIEW = lParam
Debug "LVN_COLUMNCLICK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
; Linker Klick Mouse CLICK
Case #NM_CLICK ; user clicked in the ListView
*lpnmitem.NMITEMACTIVATE = lParam ; Callback
ListIconZeile.l = *lpnmitem\iItem ; Zeile eintragen
ListIconSpalte.l = *lpnmitem\iSubItem ; Spalte eintragen
Debug "NM_CLICK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
; Linker Doppelklick
Case #NM_DBLCLK ; user clicked in the ListView
*lpnmitem.NMITEMACTIVATE = lParam
ListIconZeile.l = *lpnmitem\iItem
ListIconSpalte.l = *lpnmitem\iSubItem
Debug "NM_DBLCLK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
Case #NM_RCLICK ; Rechter Klick
*lpnmitem.NMITEMACTIVATE = lParam
ListIconZeile.l = *lpnmitem\iItem
ListIconSpalte.l = *lpnmitem\iSubItem
Debug "NM_RCLICK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
Case #NM_RDBLCLK ; Rechter Doppelklick
*lpnmitem.NMITEMACTIVATE = lParam
ListIconZeile.l = *lpnmitem\iItem
ListIconSpalte.l = *lpnmitem\iSubItem
Debug "NM_RDBLCLK= "+"ListIconZeile: "+Str(ListIconZeile)+" ListIconSpalte: "+Str(ListIconSpalte)
EndSelect
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
OpenWindow(#Window, 0, 0,667, 732, "Listicon mit Editorgadget Update", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateStatusBar(#StatusBar, WindowID(#Window))
AddStatusBarField(40) ; StatusBar 0
AddStatusBarField(420) ; StatusBar 1
AddStatusBarField(#PB_Ignore)
; StatusBar 2
EndIf
; ----------------------------------------------------------------------------------------
ListIconGadget(#Work_ListIcon, 2, 85, 663, 226, "? ", 663,#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)
For K = 0 To 10
AddGadgetItem(#Work_ListIcon,-1, Str(k)+"Eintrag "+Chr(10)+"Eintrag ")
Next
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleB , 24, 417, 22, 22 ,"B",#PB_Button_Toggle);
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleI, 47, 417, 22, 22,"I",#PB_Button_Toggle );
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleU, 70, 417, 22, 22 ,"U",#PB_Button_Toggle );
; ----------------------------------------------------------------------------------------
ButtonGadget(#MiniEditor2_StyleS, 93, 417, 22, 22,"S",#PB_Button_Toggle);
; ----------------------------------------------------------------------------------------
EditorGadget(#Work_Notiz, 2, 440, 660, 269, #PB_Editor_WordWrap);#PB_Editor_ReadOnly
SetGadgetFont(#Work_Notiz, LoadFont(#Font_Work_Notiz, "Verdana", 11, #PB_Font_HighQuality));||#PB_Font_Bold
; ----------------------------------------------------------------------------------------
;-RUN
AddGadgetItem(#Work_Notiz,0,"Hello, this is PB WEB")
; Callback Einstellungen
evMask = SendMessage_(GadgetID(#Work_Notiz), #EM_GETEVENTMASK, 0, 0)
SendMessage_(GadgetID(#Work_Notiz), #EM_SETEVENTMASK, 0, evMask|#ENM_KEYEVENTS|#ENM_MOUSEEVENTS )
SetWindowCallback(@Callback_ColumnClick())
;-Event
Define MyEvent
Repeat
MyEvent = WaitWindowEvent()
Select MyEvent
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case #MiniEditor2_StyleB
Debug "#MiniEditor2_StyleB"
WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_BOLD)
Case #MiniEditor2_StyleI
WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_ITALIC)
Case #MiniEditor2_StyleU
WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_UNDERLINE)
Case #MiniEditor2_StyleS
WorkNotiz_SetFontStyle(#Work_Notiz,#CFM_STRIKEOUT)
EndSelect
EndSelect
ForEver
End
Gruss ... Velindos