hallo leute,
ich habe jetzt mit scintilla eine editor umgebung zusammengeflickt. besser gesagt habe ich aus einem beispiel im forum genommen und erweitert.
nun möchte ich ein eigenes popupmenu statt das von scintilla selbst anzeigen lassen. wie man den scintilla-eigenen popupmenu unterdrücken kann weiß ich. wie kann man aber ein eigenes popupmenu auf dem einblenden, sobald die rechte maustaste gedrückt wird.
ich hab da an sowas wie das hier gedacht:
Case #PB_Event_Gadget
If EventGadget() = 0 And EventType() = #PB_EventType_RightClick
DisplayPopupMenu(0, WindowID(0))
EndIf
ist das so möglich. Wenn nein, welche Möglichkeiten gibt es?
ich brauche noch eine lösung für folgende themen bei scintilla:
- suchen
- weitersuchen
- suchen und ersetzen
- gehe zu zeile
danke in voraus
scintilla popupmenu
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: scintilla popupmenu
Das POPUPMENU würde ich einem #WM_CONTEXTMENU in einem Callback zuordnen, aber
Deine Version sollte ja auch funktionieren.
Für das Suchen:
Die Zeile mit GOSCI_SetState wirste wohl noch selber anpassen müssen. Zur Zeile gehen, die der Position entspricht.
Gruß
Thomas
Deine Version sollte ja auch funktionieren.
Für das Suchen:
Code: Alles auswählen
Procedure Edit_Search(id, search.s, direction, flags)
Protected *mem, pos, result
Protected selstart, selend
If search
*mem = AllocateMemory(StringByteLength(search, #PB_UTF8) + 1)
If *mem
PokeS(*mem, search, -1, #PB_UTF8)
If direction = 0
pos = ScintillaSendMessage(id, #SCI_GETSELECTIONSTART) - 1
Else
pos = ScintillaSendMessage(id, #SCI_GETSELECTIONEND) + 1
EndIf
ScintillaSendMessage(id, #SCI_SETSEL, pos, pos)
ScintillaSendMessage(id, #SCI_SEARCHANCHOR)
If direction
result = ScintillaSendMessage(id, #SCI_SEARCHNEXT, flags, *mem)
Else
result = ScintillaSendMessage(id, #SCI_SEARCHPREV, flags, *mem)
EndIf
If result <> -1
selstart = ScintillaSendMessage(id, #SCI_GETSELECTIONSTART)
selend = ScintillaSendMessage(id, #SCI_GETSELECTIONEND)
GOSCI_SetState(id, #GOSCI_CURRENTLINE, ScintillaSendMessage(id, #SCI_LINEFROMPOSITION, result))
ScintillaSendMessage(id, #SCI_SETSELECTIONSTART, selstart)
ScintillaSendMessage(id, #SCI_SETSELECTIONEND, selend)
ScintillaSendMessage(id, #SCI_SCROLLCARET)
EndIf
FreeMemory(*mem)
EndIf
ProcedureReturn result
EndIf
EndProcedure
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 173
- Registriert: 30.11.2010 02:34
Re: scintilla popupmenu
hi ts_soft,
vielen dank für die hilfe.
vielen dank für die hilfe.