comment récupérer une séléction

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

comment récupérer une séléction

Message par dayvid »

bonjour a tous !

comment je peut faire pour récupérer ce que j'ai séléctionner
dans un éditeur gadget ou même un string gadget ?

merci d'avence pour vos réponces
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: comment récupérer une séléction

Message par Le Soldat Inconnu »

il faut utiliser l'api Windows, voici un exemple :

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Modifier un texte dans un StringGadget ou un EditorGadget en partant de la position du curseur

Procedure.s GetTextSelection(Gadget)
	Protected Debut_Position, Fin_position, Texte.s, Index.l
  Select GadgetType(Gadget)
		Case #PB_GadgetType_String
      SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position) 
      Texte = GetGadgetText(Gadget)
      Texte = Mid(Texte, Debut_Position + 1, Fin_position - Debut_Position)
      
		Case #PB_GadgetType_Editor
      SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position) 
      For Index = 0 To CountGadgetItems(Gadget) - 1
        If Texte <> ""
          Texte + Chr(10)
				EndIf
        Texte + GetGadgetItemText(Gadget, Index)
			Next
       Texte = Mid(Texte, Debut_Position + 1, Fin_position - Debut_Position)
	EndSelect
	ProcedureReturn Texte
EndProcedure

Procedure SelectAllText(Gadget)
  SendMessage_(GadgetID(Gadget), #EM_SETSEL, 0, Len(GetGadgetText(Gadget))) 
  SetActiveGadget(Gadget)
EndProcedure

Procedure EditText(Gadget, Type, Text_Start.s, Text_End.s = "")
  ; type = 0 : Insertion de texte sur le curseur
  ; type = 1 : insertion de texte autour de la sélection
  Protected Debut_Position, Fin_position, Texte.s, Index.l
  Select GadgetType(Gadget)
    Case #PB_GadgetType_String
      SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position) 
      Texte = GetGadgetText(Gadget)
      If Type = 0
        Texte = Left(Texte, Debut_Position) + Text_Start + Text_End + Right(Texte, Len(Texte) - Fin_position)
        Debut_Position + Len(Text_Start + Text_End)
        Fin_position = Debut_Position
      Else
        Texte = Left(Texte, Debut_Position) + Text_Start + Mid(Texte, Debut_Position + 1, Fin_position - Debut_Position) + Text_End + Right(Texte, Len(Texte) - Fin_position)
        Debut_Position + Len(Text_Start)
        Fin_position + Len(Text_Start)
      EndIf
      SetGadgetText(Gadget, Texte)
      SendMessage_(GadgetID(Gadget), #EM_SETSEL, Debut_Position, Fin_position) 
      SetActiveGadget(Gadget)
      
    Case #PB_GadgetType_Editor
      SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position) 
      For Index = 0 To CountGadgetItems(Gadget) - 1
        If Texte <> ""
          Texte + Chr(10)
        EndIf
        Texte + GetGadgetItemText(Gadget, Index)
      Next
      If Type = 0
        Texte = Left(Texte, Debut_Position) + Text_Start + Text_End + Right(Texte, Len(Texte) - Fin_position)
        Debut_Position + Len(Text_Start + Text_End)
        Fin_position = Debut_Position
      Else
        Texte = Left(Texte, Debut_Position) + Text_Start + Mid(Texte, Debut_Position + 1, Fin_position - Debut_Position) + Text_End + Right(Texte, Len(Texte) - Fin_position)
        Debut_Position + Len(Text_Start)
        Fin_position + Len(Text_Start)
      EndIf
      SetGadgetText(Gadget, Texte)
      SendMessage_(GadgetID(Gadget), #EM_SETSEL, Debut_Position, Fin_position) 
      SetActiveGadget(Gadget)
      
  EndSelect
EndProcedure


; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Texte", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
  End
EndIf

StringGadget(0, 0, 0, 300, 25, "")

EditorGadget(1, 0, 30, 300, 100)

ButtonGadget(2, 0, 150, 300, 25, "Insérer le texte 'Blabla' au l'endroit du curseur")
ButtonGadget(3, 0, 175, 300, 25, "Entourer le texte sélectionné par '<b>' et '</b>'")
ButtonGadget(4, 0, 200, 300, 25, "Sélectionner tout le texte")
ButtonGadget(5, 0, 225, 300, 25, "Voir le texte sélectionné")

Repeat
  Event = WaitWindowEvent()
  
  
  ;{ Focus
  ; Mis comme ça car il y a des problèmes de détection de focus avec les EditorGadget, de cette manière, c'est du solide
  Focus = GetActiveGadget()
  If Focus <> -1 And (GadgetType(Focus) = #PB_GadgetType_String Or GadgetType(Focus) = #PB_GadgetType_Editor)
    Gadget_TextFocus = Focus
  EndIf
  ;}
  
  
  Select Event
    Case #PB_Event_Menu
      Select EventMenu() ; Menus
          
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget() ; Gadgets
        Case 2
          EditText(Gadget_TextFocus, 0, "Blabla")
        Case 3
          EditText(Gadget_TextFocus, 1, "<b>", "</b>")
        Case 4
          SelectAllText(Gadget_TextFocus)
				Case 5
					MessageRequester("Sélection", GetTextSelection(Gadget_TextFocus))
      EndSelect
  EndSelect
  
Until Event = #PB_Event_CloseWindow

End
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: comment récupérer une séléction

Message par dayvid »

Merci

C’est pour voir ce que l’utilisateur a sélectionné
Donc le texte sélectionné devra être placé
Dans une variable pour que je puisse voir
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre