Page 2 sur 7

Publié : ven. 21/sept./2007 17:44
par Ollivier
Cf plus bas...

Publié : ven. 21/sept./2007 18:03
par Ollivier
Je regrette un peu qu'on ne fasse pas une base de données. Vu la dernière ligne, ça me tente bien. Ce sera entièrement compatible avec le forum. En plus, j'ai un TreeGadget tout prêt qui n'attend plus qu'une allumette...

Publié : ven. 21/sept./2007 18:12
par Backup
super !! , mais tu t'es embeté pour pas grand chose :D

exemple fait toi a l'aide de Wordpad (ou Word !!) un text formaté comme
tu le veux !! avec un gros titre, du text en couleur ect...

ce traitement de text te servira pour ecrire tes fiches !!

mais cela devrai etre transparent pour l'utilisateur , comme tu l'a fait
(donc pas de requester , mais chargement en fonction du lien cliqué :D )

mais au lieu d'inclure le format RTF dans le code comme ton exemple
tu le met dans un fichier *.RTF que tu as précedement "redactionné" avec ton traitement de text preferé !!
bref tu ecrit tranquillement tes fiches sous Word , sauvé au format RTF
ce qui est plus simple que de se tapper des balises imbitable :lol:

et ensuite tu charge la fiche comme ça !! :D


CHARGEUR DE RTF


; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;- Window Constants
;

; Chargeur de RTF
; Code Dobro

;- Gadget Constants
;
Enumeration
     #Window_0
   #Editor_0
   #Button_0
EndEnumeration


Procedure Open_Window_0()
   If OpenWindow ( #Window_0 , 268, 68, 502, 517, "New window ( 0 )" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
     If CreateGadgetList ( WindowID ( #Window_0 ))
       EditorGadget ( #Editor_0 , 10, 20, 480, 450)
       ButtonGadget ( #Button_0 , 30, 480, 90, 30, "charge RTF" )
     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
  
   If Event = #PB_Event_Gadget
     If GadgetID = #Editor_0
     ElseIf GadgetID = #Button_0
      Fichier$ = OpenFileRequester ( "Choisissez un fichier RTF à charger" , "*.rtf" , "Fichiers Textes|*.rtf" ,0)
       If OpenFile (0, Fichier$)
         While Eof (0) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
          Texte$=Texte$+ ReadString (0) ; lit ligne par ligne le contenu du fichier
         Wend
         CloseFile (0)
         SetGadgetText ( #Editor_0 , Texte$)
        Texte$= ""
       EndIf
     EndIf
   EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;





ho ! miracle, les attributs couleurs ect.. sont toujours la !! :D

Publié : ven. 21/sept./2007 18:35
par Jacobus
J'aime bien ta façon de faire Ollivier, ça jette!
Une autre manière de faire format fenêtré.
Un vieux code que je viens de passer en PB 4.02 qui permet de gérer depuis un ListView. une fois le dossier chargé on peut naviguer dans la liste avec les flêches haut et bas du clavier et afficher instantanément la fiche sélectionnée.

Modif : Charge du TXT et du RTF mais n'enregistre que du TXT.
Quelques arrangements et optimisations (noms des constantes ToolBar entre autres)

Code : Tout sélectionner

;-constantes
Enumeration
 #ApiWin
 
 #ToolBar
  #TB_New 
  #TB_Open
  #TB_Save
  #TB_Cut
  #TB_Copy    
  #TB_Paste 
  #TB_Undo
  #TB_Redo
  #TB_Sel
  #TB_Print 
  #TB_Delete
  #TB_Recycle 
  
 
  #String_dossier
  #List_View
  #Text_String_APIname
  #String_APIname
  #editeur
  #API_choisie
  #Text_compte_fichiers
  #Text_compte_lignes
EndEnumeration
#version = "beta 01 - 2007"
#WindowWidth  = 795 ; adaptation au 800x600
#WindowHeight = 550

;-Fonts
Global Font0 , Font1
Font0 = LoadFont(0, "courier", 8,#PB_Font_HighQuality) 
Font1 = LoadFont(1, "Verdana", 8,#PB_Font_Bold|#PB_Font_HighQuality)
;-variables
Global AppliDir$,RepAPI$,RepAPIsave$
AppliDir$ = GetCurrentDirectory()

If FileSize(AppliDir$+"DossierAPI") = -1
  CreateDirectory(AppliDir$+"DossierAPI");Dossier a créer pour contenir ou recevoir les fiches créées
EndIf
RepAPIsave$ = AppliDir$+"DossierAPI\"

Procedure List_View_API(DossierAPI$) ;CHARGEMENT DES FICHES TROUVEES DANS LE DOSSIER
  NbFiles = 0 ; initialisation du compte total                          
  If ExamineDirectory(0, DossierAPI$, "*.*") ; on examine tout le dossier
    Chemin$ = GetPathPart(DossierAPI$) 
    SetGadgetText(#String_dossier,Chemin$)
    Repeat
      FileType = NextDirectoryEntry(0)
      If FileType
        FileName$ = DirectoryEntryName(0)
        If FileName$ <> "." And FileName$ <> ".."
          Ext$ = GetExtensionPart(FileName$) 
          If Ext$ = "txt" Or  Ext$ = "rtf"          ; on recherche les deux types
            AddGadgetItem(#List_View, -1, FileName$) ; qu'on ajoute au listviewgadget()
            NbFiles = NbFiles + 1                    ; à chaque élément trouvés on incrémente de 1 pour compter le tout
          EndIf
        EndIf
      EndIf 
    Until FileType = 0
    SetGadgetState(#List_View, -1)
    ClearGadgetItemList(#editeur) 
    SetGadgetText(#String_APIname,"")
  Else
    MessageRequester("Erreur","Impossible d'examiner le répertoire: "+Chr(10)+ DossierAPI$,64)
  EndIf
  SetGadgetText(#Text_compte_fichiers,"Il y a "+ Str(CountGadgetItems(#List_View))+" fiches API dans ce dossier")
  ProcedureReturn NbFiles
EndProcedure 

Procedure LoadApiFolder()
  If DefautRepAPI$ = ""
    DefautRepAPI$ = "c:\"
  EndIf 
   NewRepAPI$ = PathRequester("Sélectionner un dossier", DefautRepAPI$)
    If NewRepAPI$
      ClearGadgetItemList(#List_View)
      ClearGadgetItemList(#editeur) 
      SetGadgetState(#List_View, -1)
      SetGadgetText(#String_APIname,"")
      List_View_API(NewRepAPI$)
      DefautRepAPI$ = NewRepAPI$
    EndIf
EndProcedure

Procedure selectionner_tout(editor)
  range.CHARRANGE\cpMin = 0 
  range\cpMax = -1 
  ProcedureReturn SendMessage_(GadgetID(editor),#EM_EXSETSEL,0,@range) 
EndProcedure

Procedure Enregistrer_Fiche() ; Format texte
  ApiFile$ = GetGadgetText(#String_APIname)
  If ApiFile$ = ""
    MessageRequester("ERREUR","Il n'y a rien à enregistrer!"+Chr(13)+"Vous devez d'abord créer ou modifier la fiche pour la sauvegarder.",#MB_ICONEXCLAMATION)
  Else 
  Fichier.s = SaveFileRequester("Enregistrer une fiche",RepAPIsave$+ApiFile$,"Fichier Texte |*.txt", 0); enregistrement dans le dossier par défaut avec nom de fiche en cours
  If Fichier = ""     
  Else   
    If GetExtensionPart(Fichier) = ""  
      Fichier = Fichier + ".txt"
    EndIf    
    api.s = GetFilePart(Fichier.s)
    EnregistreFichier = #True
    If FileSize(Fichier.s)>0 
      Reponse = MessageRequester("Cette fiche existe déjà !","Voulez vous remplacer la fiche :   " + api +" ?" ,#MB_ICONEXCLAMATION |#PB_MessageRequester_YesNo )      
        If Reponse <> 6 
          EnregistreFichier = #False 
        EndIf             
    EndIf 
  EndIf   
  If EnregistreFichier  
    If CreateFile(0,Fichier.s)
      Nombre_de_lignes = CountGadgetItems(#editeur) 
      For n = 0 To Nombre_de_lignes -1
        TexteEditor.s = GetGadgetItemText(#editeur,n,0)
        WriteStringN(0,TexteEditor)
      Next 
      CloseFile(0) 
    EndIf  
  EndIf 
EndIf 
EndProcedure

Procedure MoveToRecycleBin(Fiche.s)    
    Protected lpFileOp.SHFILEOPSTRUCT  
    If FileSize(Fiche) <> - 1           
      *Mem = AllocateMemory(Len(Fiche) + 2) 
      If *Mem 
        lpFileOp\hwnd = 0 
        lpFileOp\pTo  = 0 
        lpFileOp\wFunc = #FO_DELETE 
        lpFileOp\pFrom = *Mem 
        lpFileOp\fFlags = #FOF_ALLOWUNDO | #FOF_NOCONFIRMATION      
        CopyMemoryString(Fiche, @*Mem) 
        CopyMemoryString(Chr(0)) 
        CopyMemoryString(Chr(0))       
        retour=SHFileOperation_(@lpFileOp)  
        If retour=0 : retour=1 : Else : retour =0 : EndIf
          ProcedureReturn retour
        FreeMemory(*Mem) 
      EndIf 
    EndIf    
EndProcedure 

Procedure Suppression(FichierSelect$, mode.l) ; une seule procedure pour 2 modes de suppression
 
  If mode = 0
    mode$ = "SI VOUS CLIQUEZ SUR OUI LE FICHIER SERA DEFINITIVEMENT SUPPRIME !"
  ElseIf mode = 1
    mode$ = "SI VOUS CLIQUEZ SUR OUI LE FICHIER SERA ENVOYE A LA CORBEILLE !"
  EndIf 
  
  NumElement = GetGadgetState(#List_View)
    Resultat = MessageRequester("AVERTISSEMENT","VOUS ETES SUR LE POINT DE SUPPRIMER UNE FICHE!"+Chr(13)+""+Chr(13)+"VOULEZ VOUS CONTINUER ?"+Chr(13)+""+Chr(13)+"SI VOUS N'ÊTES PAS SÛR CLIQUEZ SUR NON"+Chr(13)+""+Chr(13)+mode$,#MB_ICONEXCLAMATION | #PB_MessageRequester_YesNo) 
     If Resultat = 6
       ;on a cliqué sur oui
      If mode = 0             
          If DeleteFile(FichierSelect$)<>0
            If NumElement<>-1
              RemoveGadgetItem(#List_View, NumElement)
            EndIf
             ClearGadgetItemList(#editeur) 
             SetGadgetText(#String_APIname, "")
             SetGadgetState(#List_View, -1)
             SetGadgetText(#Text_compte_lignes,"")
             SetGadgetText(#Text_compte_fichiers,"Il y a "+ Str(CountGadgetItems(#List_View))+" fiches API dans ce dossier")
          Else 
           MessageRequester("ERREUR","Le fichier n'a pu être effacé!",#MB_ICONERROR)
          EndIf 
      ElseIf mode = 1
          If MoveToRecycleBin(FichierSelect$)
            If NumElement<>-1
              RemoveGadgetItem(#List_View, NumElement)
            EndIf
             ClearGadgetItemList(#editeur) 
             SetGadgetText(#String_APIname, "")
             SetGadgetState(#List_View, -1)
             SetGadgetText(#Text_compte_lignes,"")
             SetGadgetText(#Text_compte_fichiers,"Il y a "+ Str(CountGadgetItems(#List_View))+" fiches API dans ce dossier")
          Else 
           MessageRequester("ERREUR","Le fichier n'a pu être effacé!",#MB_ICONERROR)
          EndIf             
      EndIf      
             
     ElseIf Resultat = 7
    ;on a cliqué sur non, donc rien.             
  EndIf 

EndProcedure


;-Fenêtre
ExamineDesktops() ; on se réfère au bureau pour centrer ou non la fenêtre en fonction de sa taille
  Largeur$ = Str(DesktopWidth(0))
  Hauteur$ = Str(DesktopHeight(0))
  If Val(Largeur$)>800 And Val(Hauteur$)>600
    FlagWin = #PB_Window_SystemMenu|#PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget |#PB_Window_TitleBar|#PB_Window_MaximizeGadget
  Else 
    FlagWin = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget |#PB_Window_TitleBar|#PB_Window_MaximizeGadget
  EndIf 
  
If OpenWindow(#ApiWin,0,0, #WindowWidth, #WindowHeight," API PureViewer "+#version, FlagWin)And CreateGadgetList(WindowID(#ApiWin)) 
 SetWindowColor(#ApiWin,RGB(173, 191, 193))
 

    If CreateToolBar(#ToolBar, WindowID(#ApiWin))
      ToolBarStandardButton(#TB_New, #PB_ToolBarIcon_New)  :ToolBarToolTip(#ToolBar,#TB_New,"Créer une nouvelle fiche")
      ToolBarStandardButton(#TB_Open, #PB_ToolBarIcon_Open):ToolBarToolTip(#ToolBar,#TB_Open,"Sélectionner et ouvrir un autre dossier")     
      ToolBarStandardButton(#TB_Save, #PB_ToolBarIcon_Save):ToolBarToolTip(#ToolBar,#TB_Save,"Enregistrer sous")
      ToolBarSeparator()
      
      ToolBarStandardButton(#TB_Cut,#PB_ToolBarIcon_Cut)    :ToolBarToolTip(#ToolBar,#TB_Cut,"Couper")
      ToolBarStandardButton(#TB_Copy,#PB_ToolBarIcon_Copy)  :ToolBarToolTip(#ToolBar,#TB_Copy,"Copier")    
      ToolBarStandardButton(#TB_Paste,#PB_ToolBarIcon_Paste):ToolBarToolTip(#ToolBar,#TB_Paste,"Coller")
      ToolBarSeparator()
      
      ToolBarStandardButton(#TB_Undo,#PB_ToolBarIcon_Undo):ToolBarToolTip(#ToolBar,#TB_Undo,"Annuler")
      ToolBarStandardButton(#TB_Redo,#PB_ToolBarIcon_Redo):ToolBarToolTip(#ToolBar,#TB_Redo,"Recommencer")   
      ToolBarStandardButton(#TB_Sel ,#PB_ToolBarIcon_Find):ToolBarToolTip(#ToolBar,#TB_Sel,"Sélectionner tout dans l'éditeur")
      ToolBarSeparator()
      
      ToolBarStandardButton(#TB_Print,#PB_ToolBarIcon_Print):ToolBarToolTip(#ToolBar,#TB_Print,"Imprimer la fiche en cours")
      ToolBarSeparator()
      ToolBarStandardButton(#TB_Recycle,#PB_ToolBarIcon_Replace):ToolBarToolTip(#ToolBar,#TB_Recycle,"Envoyer la fiche sélectionnée à la corbeille")
      ToolBarStandardButton(#TB_Delete ,#PB_ToolBarIcon_Delete) :ToolBarToolTip(#ToolBar,#TB_Delete ,"Supprimer définitivement la fiche sélectionnée")

    EndIf
    
    StringGadget(#String_dossier,10,25,770,18,"",#PB_String_ReadOnly)
    
    ListViewGadget(#List_View,0,47,200,483)
    SetGadgetColor(#List_View,#PB_Gadget_FrontColor,RGB(32, 233, 221))
    SetGadgetColor(#List_View,#PB_Gadget_BackColor,RGB(75, 96, 98))
    
    TextGadget(#Text_compte_fichiers,0,530,200,20,"Il y a "+ Str(CountGadgetItems(#List_View))+" fiches API dans ce dossier",#PB_Text_Border)
    SetGadgetColor(#Text_compte_fichiers,#PB_Gadget_BackColor,RGB(75, 96, 98))
    SetGadgetColor(#Text_compte_fichiers,#PB_Gadget_FrontColor,RGB(208, 219, 220))
  
  EditorGadget(#editeur,200,47,595,483)
  SendMessage_(GadgetID(#editeur), #EM_SETTARGETDEVICE, #Null, 0);retour à la ligne automatique
 ; SetGadgetFont(#editeur, Font0)
    SetGadgetColor(#editeur, #PB_Gadget_BackColor, RGB(245, 243, 199))    
    ;SetGadgetColor(#editeur, #PB_Gadget_FrontColor, RGB(64, 101, 53))
  
  TextGadget(#Text_String_APIname,205,532,40,15,"Fichier")
    SetGadgetColor(#Text_String_APIname,#PB_Gadget_BackColor,RGB(173, 191, 193))
    ;SetGadgetColor(#Text_String_APIname,#PB_Gadget_FrontColor,RGB(208, 219, 220))
 
    StringGadget(#String_APIname,245,532,300,16,"",#PB_String_ReadOnly|#PB_Text_Center)
    SetGadgetFont(#String_APIname, Font1)
    
  TextGadget(#Text_compte_lignes,545,530,250,20,"  Cette fiche est composée de "+ Str(CountGadgetItems(#editeur))+" lignes",#PB_Text_Border)
   SetGadgetColor(#Text_compte_lignes,#PB_Gadget_BackColor,RGB(75, 96, 98))
   SetGadgetColor(#Text_compte_lignes,#PB_Gadget_FrontColor,RGB(208, 219, 220))
  
  
EndIf
;-Chargement des fiches 
 Load.l = List_View_API(RepAPIsave$) 
 If Load = 0      ; si dossier par défaut est vide
  LoadApiFolder() ; on relance un chargement de dossier au choix
 EndIf 

;-Programme
Repeat 
  
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget 
    Select EventGadget()
      
          
        Case #List_View 
          Select EventType() 
            Case #PB_EventType_LeftClick 
              ClearGadgetItemList(#editeur)
              PosElement  = GetGadgetState(#List_View)
              NomFichier$ = GetGadgetText(#List_View) 
              RepAPI$     = GetGadgetText(#String_dossier)   
              FicheVue$   = RepAPI$ + NomFichier$             
               If PosElement >= 0               
                 If OpenFile(#API_choisie, FicheVue$) 
                   While Eof(#API_choisie) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
                    Texte$=Texte$+ ReadString(#API_choisie) ; lit ligne par ligne le contenu du fichier 
                   Wend 
                   CloseFile(#API_choisie) 
                   SetGadgetText( #editeur , Texte$) ;affichage dans l'éditeur
                  Texte$= "" ; variable remise à zéro
                  SetGadgetText(#Text_compte_lignes,"  Cette fiche est composée de "+ Str(CountGadgetItems(#editeur))+" lignes")
                  SetGadgetText(#String_APIname, NomFichier$)
                  Else 
                    MessageRequester("ERREUR","Impossible d'ouvrir ce fichier, il est peut être défectueux.",16)
                 EndIf                                                     
              EndIf  
          EndSelect
                   
          
      EndSelect
    EndIf 
;-Menus events   
    Select Event
      Case #PB_Event_Menu 
        Select EventMenu()
          
          Case #TB_New 
           ClearGadgetItemList(#editeur) 
           SetGadgetText(#String_APIname, "Nouvelle fiche")
           SetGadgetState(#List_View, -1)
           SetGadgetText(#Text_compte_lignes,"")
           ApiName$ = InputRequester("Création de fiche", "Donnez un nom à cette fiche","")
           If ApiName$
            SetGadgetText(#String_APIname, ApiName$+".txt")
            SetActiveGadget(#editeur)
           EndIf 
           
            
          Case #TB_Open : LoadApiFolder()
            
          Case #TB_Save : Enregistrer_Fiche()
                
          Case #TB_Cut
            Vide$ = "" 
            SendMessage_(GadgetID(#editeur),#EM_GETSEL,@StartSel,@EndSel) 
            Buffer$ = Space(EndSel-StartSel) 
            SendMessage_(GadgetID(#editeur),#EM_GETSELTEXT,0,@Buffer$) 
            ClearClipboard() 
            SetClipboardText(Buffer$) 
            SendMessage_(GadgetID(#editeur),#EM_REPLACESEL,#True,@Vide$) 
            SetGadgetText(#Text_compte_lignes,"  Cette fiche est composée de "+ Str(CountGadgetItems(#editeur))+" lignes")
            
          Case #TB_Copy
            SendMessage_(GadgetID(#editeur),#EM_GETSEL,@StartSel,@EndSel) 
            Buffer$ = Space(EndSel-StartSel) 
            SendMessage_(GadgetID(#editeur),#EM_GETSELTEXT,0,@Buffer$) 
            ClearClipboard() 
            SetClipboardText(Buffer$) 
             
          Case #TB_Paste
            Buffer$ = GetClipboardText() 
            SendMessage_(GadgetID(#editeur),#EM_REPLACESEL,#True,@Buffer$) 
            SetGadgetText(#Text_compte_lignes,"  Cette fiche est composée de "+ Str(CountGadgetItems(#editeur))+" lignes")
              
          Case #TB_Undo : SendMessage_(GadgetID(#editeur),#EM_UNDO,0,0)
            SetGadgetText(#Text_compte_lignes,"  Cette fiche est composée de "+ Str(CountGadgetItems(#editeur))+" lignes")
            
          Case #TB_Redo : SendMessage_(GadgetID(#editeur),#EM_REDO,0,0)
            SetGadgetText(#Text_compte_lignes,"  Cette fiche est composée de "+ Str(CountGadgetItems(#editeur))+" lignes")
            
          Case #TB_Sel  : selectionner_tout(#editeur)
            
          Case #TB_Print ; impression à faire, j'ai la flemme et pas le temps maintenant...
          
          Case #TB_Recycle
           If GetGadgetText(#String_APIname)=""
              MessageRequester("ERREUR","Il n'y a pas de fichier sélectionné",#MB_ICONEXCLAMATION)
            Else 
             Selection$ = GetGadgetText(#String_dossier)+GetGadgetText(#String_APIname)
             Suppression(Selection$, 1) ; mode corbeille
           EndIf 
            
          Case #TB_Delete 
           If GetGadgetText(#String_APIname)=""
              MessageRequester("ERREUR","Il n'y a pas de fichier sélectionné",#MB_ICONEXCLAMATION)
            Else 
             Selection$ = GetGadgetText(#String_dossier)+GetGadgetText(#String_APIname)
             Suppression(Selection$, 0) ; mode suppression directe
           EndIf
             
          
 ;-Fin         
        EndSelect 
        
     ; Case #WM_SIZE 
      
    Case #PB_Event_CloseWindow :Quitter = 1
      
  EndSelect 
  
Until Quitter

End

Publié : ven. 21/sept./2007 18:42
par Backup
j'aime bien :)

ce que je reproche au code par contre c'est les Case 0,1,2,3 pas tres parlant !! :? :)

pour ne pas que ce topic devienne trop long, je vous propose de rééditer au besoin vos code posté ....!!

de cette façon on va eviter une succession de code a la file !! :D
et pour chaque version proposé on saura ou la trouver :D
puisque chaque version remplace l'ancienne :D
(en attendant d'etre d'accord sur une version definitive , bien sur :D)

autre chose l'un d'entre nous a mis "m'en fout" , qui c'est ??

Publié : ven. 21/sept./2007 18:51
par wolfjeremy
Dobro a écrit : autre chose l'un d'entre nous a mis "m'en fout" , qui c'est ??
Surement quelq'un qui ne connait pas l'utilité de l'API windows... (pourtant un jour ou l'autre il en aura grandement besoin, c'est inévitable)

Publié : ven. 21/sept./2007 19:03
par Backup
j'avais pas compris que ton editeur etait "editable !!" :lol: :lol:
d'ailleurs , je ne suis pas sur qu'il ne faudrai pas une securité pour eviter de modifier une fiche existante !!

avec mon system , je pensai a un lecteur de fiche RTF ..
donc non modifiable puisqu'en lecture seule !!!
l'ecriture se faisant dans un traitement de text, mais c'est sur qu'apres
la présentation des differentes fiches ecrites par differentes personnes
risque d'avoir un aspect heu.... different :D

ps :
j'ai Réédité ton code a ta place :D
(le dernier que tu as posté)

Publié : ven. 21/sept./2007 19:09
par Ollivier
@jacobus

J'ai juste exécuté ton code : ça va, ça assure en design de ton bord!

Publié : ven. 21/sept./2007 19:13
par Backup
Ollivier a écrit :@jacobus

J'ai juste exécuté ton code : ça va, ça assure en design de ton bord!
reste plus qu'a faire une petite routine de chargement de fiche RTF presente dans le dossier !! ...

Publié : ven. 21/sept./2007 19:28
par Ollivier
On peut faire des liens (par exemple URL que je peux récupérer dans ma boucle d'événements) depuis l'EditorGadget?

Publié : ven. 21/sept./2007 19:57
par Jacobus
@Dobro
ce que je reproche au code par contre c'est les Case 0,1,2,3 pas tres parlant !!
En effet c'est nul, mais c'est un vieux code que j'ai ressorti et je ne m'étais pas cassé le tronc (juste un lecteur de code externe à l'ide pb pour soulager ce dernier) c'est donc à refaire en bonne et due forme :)
autre chose l'un d'entre nous a mis "m'en fout" , qui c'est ??
M'est avis que son pseudo commence par Bernard et fini par 13 :lol:

@Ollivier
On peut faire des liens (par exemple URL que je peux récupérer dans ma boucle d'événements) depuis l'EditorGadget?
Bonne idée, mettre des fiches en communs par exemple...

Si on veut pas choisir entre les deux formes de codes, on peut peut-être les fondre en un seul. Avec le mode containers on pourrait avoir l'editeur et le lecteur...

Publié : ven. 21/sept./2007 20:06
par Ollivier
@Jacobus.

Je n'arrive à rien avec ton code (que veux-tu, je suis trop nullos!!). Toi, par contre tu peux récupérer mon code très facilement. Il est super en présentation ton prog.

Il te suffit de:
1) copier/coller le tout en tête de ton code
2) observer les 3, 4 lignes que je vais commenter en évidence dans la procédure principale (DocApiFr() ) (dans 5, 10 minutes)
3) vérifier que les 4 noms de chaîne n'existent pas déjà dans ton code. Sinon, il faut renommer les unes ou les autres (Titre$, DLL$, Def$ et Syntax$)
4) Virer DocApiFr()

On verra plus tard pour remoduler (mettre en procédure) si nécessaire.

Publié : ven. 21/sept./2007 20:34
par Ollivier

Code : Tout sélectionner

UpDateLayeredWindow
USER32.DLL
Modifie l'apparence d'une fenêtre transparente.

WindowID.L;ID de la fenêtre qui subit la modification.;

Dst.L;Handle de l'image destinataire dans le cas d'une opération interne (à étudier). Sinon 0.;

*FenetreCoords;Pointe vers une structure POINT définissant les nouvelles coordonnées de la fenêtre. Si les coordonnées ne doivent pas être modifiées *FenetreCoords = 0;

*FenetreDims;Pointe vers une structure POINT définissant les nouvelles dimensions de la fenêtre. Si la taille de la fenêtre reste inchangée, *FenetreDims = 0;

Src.L;Handle de l'image. 0 dans le cas d'une modification autre que l'image de la fenêtre.;

*ImageCoords;Pointe vers une structure POINT définissant les coordonnées du point haut gauche de la zone à récupérer dans l'image.;

CouleurTransparence.L;Valeur de la couleur considérée comme transparente;

*Blend;Pointe vers une structure BLENDFUNCTION;

Mode.L;Mode d'exécution de la fonction;

[tag]layer;window;fenêtre;transparent;translucide;modif;change
[ex][/ex]

Publié : ven. 21/sept./2007 21:05
par Backup
Ollivier a écrit :Pardon, il n'y a pas de bug...

Code : Tout sélectionner

UpDateLayeredWindow
USER32.DLL
Modifie l'apparence d'une fenêtre transparente.
WindowID.L;ID de la fenêtre qui subit la modification.;
Dst.L;Handle de l'image destinataire dans le cas d'une opération interne (à étudier). Sinon 0.;
*FenetreCoords;Pointe vers une structure POINT définissant les nouvelles coordonnées de la fenêtre. Si les coordonnées ne doivent pas être modifiées *FenetreCoords = 0;
*FenetreDims;Pointe vers une structure POINT définissant les nouvelles dimensions de la fenêtre. Si la taille de la fenêtre reste inchangée, *FenetreDims = 0;
Src.L;Handle de l'image. 0 dans le cas d'une modification autre que l'image de la fenêtre.;
*ImageCoords;Pointe vers une structure POINT définissant les coordonnées du point haut gauche de la zone à récupérer dans l'image.;
CouleurTransparence.L;Valeur de la couleur considérée comme transparente;
*Blend;Pointe vers une structure BLENDFUNCTION;
Mode.L;Mode d'exécution de la fonction;
[tag]layer;window;fenêtre;transparent;translucide;modif;change
[ex][/ex]
@Olivier :

essaye pour la compréhension de tous d'etre plus exlicite :)
par exemple, tu poste ceci ce Quote ci dessus , mais tu ne dit pas a quoi ça sert ?? 8O


essayont d'etre le plus clair possible, quitte a paraitre lourds, il vaut mieux etre tres explicatif ! :)


je ne me suis pas intéressé encore au system d'interface que vous proposez, parce que gérer un List_View n'est pas trop mon truc
(je n'en ai jamais eu besoin , donc je vous laisse cette partie du programme que vous semblez maitriser) , j'interviendrai éventuellement après ...

intégrez moi mon code de chargement de RTF
dans votre interface (on prends laquelle ?)


A faire :
il faut rajouter une routine d'exploration de dossier du nom de "Fiches"
(faut bien lui donner un nom :lol: )

cette routine doit lire le contenu du dossier "Fiches" et charger dans le prg tout fichier RTF trouvé !!

ajouter dans la partie gauche du prg, le titre du RTF (son nom) trouvé

de façon a ce que lorsque l'on clique sur ce titre, cela affiche le contenu du fichier a Droite dans l'editeur :D

somme nous d'accord sur ce protocole ?? 8O :)

Publié : ven. 21/sept./2007 21:11
par Ollivier
Ah ben va bien falloir être d'accord!

Sinon, je suis presque en permanence sur le forum, notamment en train de faire les test copier/coller. C'est pour ça que tu as atterri sur un ramassis bizarre!

Pour tester:
1) prends mon code,
2) copie la fiche (le ramassis bizarre)
3) dans l'exécution du code: menu fichier >> importer une fiche

Sinon, pour le choix de l'interface, Jacobus a assuré donc (et j'espère que ça le dérange pas!) on la prendra au final. Ou, à l'inverse, mon code étant modulaire, il est facilement intégrable dans son code.

Et puis «mon», «ton», «son»... ça fera «notre» :D