Bei EditorGadget Font "fixieren"

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Commander
Beiträge: 3
Registriert: 09.03.2008 02:36
Wohnort: Wien

Bei EditorGadget Font "fixieren"

Beitrag von Commander »

Hallo

Als PureBasicNeuling habe ich da folgende Frage:

Ich befülle ein EditorGedget

Code: Alles auswählen

SendMessage_(GadgetID(0), #WM_PASTE, 0, 0)
mit Text. Das klappt auch sehr gut. Nur will ich nicht das die Schriftart, die Schriftgröße und Farbe mit kopiert werden.

Wie kann ich das am besten lösen?

Grüße Commander
Bild Bild
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Anfänger sollten halt kein APi benutzen 8)
benutz die PB-Funktionen und Du wirst glücklicher

Code: Alles auswählen

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
  #Editor_0
  #Button_0
  #Text_0
  #Button_1
  #Button_2
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      EditorGadget(#Editor_0, 10, 80, 340, 170)
      ButtonGadget(#Button_0, 380, 50, 210, 40, "Hol Clipboard ohne Formatierung")
      TextGadget(#Text_0, 0, 40, 260, 30, "Da unten wird der Inhalt der Zwischenablage eingefügt ")
      ButtonGadget(#Button_1, 380, 100, 210, 40, "Hol Clipboard mit Formatierung")
      ButtonGadget(#Button_2, 380, 190, 210, 40, "Tschö")
      
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadget() ; Is it a gadget event?
  EventType = EventType() ; The event type
  ;You can place code here, and use the result as parameters for the procedures
  If Event = #PB_Event_Gadget
    If GadgetID = #Editor_0
    ElseIf GadgetID = #Button_0
      SetGadgetText(#Editor_0,GetClipboardText())
    ElseIf GadgetID = #Button_1
      SendMessage_(GadgetID(0), #WM_PASTE, 0, 0)
    ElseIf GadgetID = #Button_2
      End
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;

‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Commander
Beiträge: 3
Registriert: 09.03.2008 02:36
Wohnort: Wien

Beitrag von Commander »

Danke für die Antwort

Nur wenn ich mit der Tastenkombination "Strg+v" was rein kopiere klappt das nicht. Da wird die Schriftart usw. wieder übernommen.
Bild Bild
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Strg-Einfg eventuell auch noch?
Dafür gibts die KeyboardShortcuts.

Code: Alles auswählen

;- Window Constants 
; 
Enumeration 
  #Window_0 
EndEnumeration 
;- Gadget Constants 
; 
Enumeration 
  #Editor_0 
  #Button_0 
  #Text_0 
  #Button_1 
  #Button_2 
EndEnumeration 

Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 
    If CreateGadgetList(WindowID(#Window_0)) 
      EditorGadget(#Editor_0, 10, 80, 340, 170) 
      ButtonGadget(#Button_0, 380, 50, 210, 40, "Hol Clipboard ohne Formatierung") 
      TextGadget(#Text_0, 0, 40, 260, 30, "Da unten wird der Inhalt der Zwischenablage eingefügt ") 
      ButtonGadget(#Button_1, 380, 100, 210, 40, "Hol Clipboard mit Formatierung") 
      ButtonGadget(#Button_2, 380, 190, 210, 40, "Tschö") 
      
    EndIf 
  EndIf 
EndProcedure 

Open_Window_0() 

AddKeyboardShortcut(#Window_0,#PB_Shortcut_V|#PB_Shortcut_Control,88)
AddKeyboardShortcut(#Window_0,#PB_Shortcut_Insert|#PB_Shortcut_Control,88)

Repeat ; Start of the event loop 
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows 
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures 
  GadgetID = EventGadget() ; Is it a gadget event? 
  EventType = EventType() ; The event type 
  EventMenu= EventMenu()
  
  If EventMenu=88
    SetGadgetText(#Editor_0,GetClipboardText()) 
    AddGadgetItem(#Editor_0,-1,"Tastenfreak?")  ;das kann natürlich raus
  EndIf
      
  ;You can place code here, and use the result as parameters for the procedures 
  If Event = #PB_Event_Gadget 
    If GadgetID = #Editor_0 
    ElseIf GadgetID = #Button_0 
      SetGadgetText(#Editor_0,GetClipboardText()) 
    ElseIf GadgetID = #Button_1 
      SendMessage_(GadgetID(0), #WM_PASTE, 0, 0) 
    ElseIf GadgetID = #Button_2 
      End 
    EndIf 
  EndIf 
Until Event = #PB_Event_CloseWindow ; End of the event loop 
End
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Commander
Beiträge: 3
Registriert: 09.03.2008 02:36
Wohnort: Wien

Beitrag von Commander »

Super!!

Damit kann ich was Anfangen. :allright:

Danke für die rasche Hilfe
Bild Bild
Benutzeravatar
AndyMars
Beiträge: 141
Registriert: 08.09.2004 11:59
Computerausstattung: Win11 Prof 64bit, i5-13500 @ 4.8 GHz, 32GB RAM, Nvidia RTX 4070 TI
Wohnort: Zürich, Schweiz
Kontaktdaten:

Nachtrag: Bei EditorGadget Font "fixieren" (Windows)

Beitrag von AndyMars »

Nachtrag, der Vollständigkeit halber... wenn man mit reinem Text zufrieden ist...

Ist manchmal eben doch noch nützlich, wenn man ins EditorGadget etwas (zusätzlich) einfügen kann, ohne dass das Format übernommen wird:

Code: Alles auswählen

SetGadgetText(#GadgetNr,"") ;das Gadget muss leer sein - MS will es so...
SendMessage_(GadgetID(#GadgetNr),#EM_SETTEXTMODE,#TM_PLAINTEXT,0)
Der Code ist natürlich nur für Windows...

Mehr Infos bei Microsoft: MSDN EM_SETTEXTMODE Message


Grüsse, AndyMars
Antworten