Dès que le fichier est chargé/ouvert dans l'éditeur celui-ci perd le focus clavier et ne réagit plus. Seul moyen, taper sur <----- Return au clavier pour obtenir un semblant d'activité.
ts-soft (forum anglais) m'a trouvé une solution, voir ci-dessous
un code d'exemple qui utilise 2 méthodes pour ouvrir un fichier
Code : Tout sélectionner
Enumeration
#Win0
#BP0
#BP1
#Editor_0
#Fichier
EndEnumeration
Procedure.s FileToString(File.s)
OpenFile(1,File)
Txt.s=""
Rc.s = Chr(13)+Chr(10)
While Not Eof(1)
Txt.s+ReadString(1)+ Rc
Wend
CloseFile(1)
ProcedureReturn Txt
EndProcedure
Procedure Open_File_Txt()
FileT$=OpenFileRequester("Sélectionnez le fichier à ouvrir","c:\","*.txt",0)
If FileT$<>""
If OpenFile(#Fichier, FileT$)
ClearGadgetItemList(#Editor_0)
Repeat
Texte.s = ReadString(#Fichier)
AddGadgetItem(#Editor_0, -1, Texte)
Until Eof(#Fichier)
CloseFile(#Fichier)
EndIf
EndIf
EndProcedure
Procedure Open_Win0()
If OpenWindow(#Win0, 0, 0, 1011, 771, "Editeur Simple", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Win0))
ButtonGadget(#BP0, 30, 10, 150, 30, "Ouvrir Fichier méthode 1")
ButtonGadget(#BP1, 200, 10, 150, 30, "Ouvrir Fichier méthode 2")
EditorGadget(#Editor_0, 30, 50, 960, 690)
SendMessage_(GadgetID(#Editor_0), #EM_SETLIMITTEXT, -1, 0);solution de rechange avec API pour charger des fichiers trop gros pour l'éditeur de base.
EndIf
EndIf
EndProcedure
Open_Win0()
Repeat
Event = WaitWindowEvent()
GadgetID = EventGadget()
If Event = #PB_Event_Gadget
If GadgetID = #BP0
File.s=OpenFileRequester("Selection du fichier à éditer","*.*","*.txt",1)
SetGadgetText(#Editor_0,FileToString(File))
EndIf
If GadgetID = #BP1
Open_File_Txt()
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
merci de vos tests et confirmation/infirmation