Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| KGF_dll - nouvelles versions | |
|
+13The Gamer Nardo26 silverman Minibug Pedro mindstorm pascal10000 Jicehel papydall Jean Claude JL35 Yannick Klaus 17 participants | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 1:25 | |
| Pour les pages, j' appelle page les objets synedit... - Code:
-
SUB PrintProjectSources() ' -- Impression des fichiers source dim_local n%,t$,num%,a$,i%,sep%,nl% if checked(FP_Check%(1))=1:n%=n%+1:t$=t$+"1,":end_if if checked(FP_Check%(2))=1:n%=n%+1:t$=t$+"2,":end_if if checked(FP_Check%(3))=1:n%=n%+1:t$=t$+"3,":end_if if checked(FP_Check%(4))=1:n%=n%+1:t$=t$+"4,":end_if if checked(FP_Check%(5))=1:n%=n%+1:t$=t$+"5,":end_if for i%=1 to n% sep%=instr(t$,",") num%=val(left$(t$,sep%-1)):t$=right$(t$,len(t$)-sep%) : ' recup du synedit à imprimer Syn_res% = dll_call3("SyneditFunction",Syn%(num%),2,0) : ' activation du dit synedit Syn_hnd% = dll_call3("SyneditFunction",Syn%(num%),20,0) : ' recup de son handle Clav_res% = dll_call5("SendSingleKey",Syn_hnd%,65,1,0,0) : ' simulation clavier pour selectionner tout le texte pause 100 clipboard_string_copy "" : ' nettoyage du presse papier Syn_res% = dll_call3("SyneditFunction",Syn%(num%),22,0) : ' copie du texte dans le presse papier pause 1000 : ' pause indispensable pour laisser le temps à la machine de faire le job nl% = dll_call3("SyneditFunction",Syn%(num%),28,0) : ' recup de la derniere ligne Syn_res% = dll_call3("SyneditFunction",Syn%(num%),18,nl%) : ' aller à la derniere ligne, pour éviter que tout reste sélectionné et faire une gaffe a$=clipboard_string_paste$ : ' récupération du texte dans une variable depuis le presse papier Syn_res% = dll_call3("SyneditFunction",Syn%(num%),27,adr(a$)) : ' envoie vers l' imprimante wait 10000 : delai pour laisser le temps à la machine de faire le job, indispensable sinon 1 page sur 2 next i% END_SUB
Dernière édition par ygeronimi le Jeu 19 Fév 2015 - 1:39, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 1:31 | |
| Si je mets :
message a$
avant l' envoi vers l' imprimante, j' ai bien les texte de chaque objet qui s' affiche.
Seulement, quand je regarde la file d' attente de l' imprimante, à la place du nom de fichier, on a le texte de l' objet Ce qui est déroutant. Pour voir qui était pris ou pas, j' ai mis "Page x" en début de chaque objet avec son numéro à la place de x j' ai bien les objets 1,3,4,5 mais pas le 2 | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 19 Fév 2015 - 1:46 | |
| Déjà, il y a une incompréhension à la base. SyneditFunction a trois paramètres: 1. l'objet Synedit choisi - tu utilises correctement Syn%(num%) 2. le code fonction - tu utilises correctement 27 pour imprimer 3. l'adresse d'une variable chaîne de caractères qui contient le titre de l'édition - tu y places tout le texte ! Je te propose une version "épurée" de ton code: - Code:
-
for i%=1 to n% sep%=instr(t$,",") num%=val(left$(t$,sep%-1)):t$=right$(t$,len(t$)-sep%) Syn_res% = dll_call3("SyneditFunction",Syn%(num%),2,0) a$ = "Page "+str$(num%) : ' ou n'importe quel titre décrivant le contenu de l'édition... message "on imprime la page "+str$(num%) Syn_res% = dll_call3("SyneditFunction",Syn%(num%),27,adr(a$)) ' wait 10000 : ' inutile... next i% Ca devrait mieux se passer. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 1:50 | |
| Tu vois, un petit exemple vaut mieux qu' un long discours. Je n' avais pas compris adr(titre$) comme cela mais je préfère que ce soit ainsi, cela sera plus rapide... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 1:55 | |
| Extra Klaus ! Cela fonctionne effectivement beaucoup mieux ainsi. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 19 Fév 2015 - 1:58 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 2:16 | |
| Au sujet de l' utilité du web browser, celui ci me sert pour l' aide Panoramic. Comme il n' existe pas de *.chm, je me sers des pages en ligne du site. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 19 Fév 2015 - 2:23 | |
| D'accord, je comprends mieux. Mais fais-moi ce petit code dont je t'ai suggéré la structure... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 19 Fév 2015 - 2:54 | |
| Bon, je ferme boutique pour cette nuit Zzzzzzzzzzzzzzz........ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 3:04 | |
| Voilà mon code pour l' aide panoramic : clique sur le bouton du form 0 - Code:
-
dim kgf$,no%,clic%,WB1%
dim b1% :no%=no%+1 : B1% =no% dim FormPanoramicHelp% :no%=no%+1 : FormPanoramicHelp% =no% dim HP1_button% :no%=no%+1 : HP1_button% =no% dim HP2_button% :no%=no%+1 : HP2_button% =no% dim HP3_button% :no%=no%+1 : HP3_button% =no%
label clic
kgf$="C:\Users\Yannick\Desktop\PPE_Vs2_Travail\dll\KGF.dll" dll_on kgf$
button B1% on_click B1%,clic
end ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
clic: clic%=number_click if clic%=B1% : FormPanoramicHelp():end_if if clic%=HP1_button% : Preced_page() :end_if if clic%=HP2_button% : Home_Page() :end_if if clic%=HP3_button% : Next_Page() :end_if return
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB FormPanoramicHelp() ' -- Fenêtre d' aide Panoramic dim_local hnd%,res%,url$ url$="http://panoramic-language.pagesperso-orange.fr/French/DOCUMENTS.htm" if Object_exists(FormPanoramicHelp%)=1 show FormPanoramicHelp% else O_Form(FormPanoramicHelp%,0,1,0,0,480,740,"Aide Panoramic") hnd%=handle(FormPanoramicHelp%) res% = DLL_call2("SetMinimizeMaximize",hnd%,0) O_Button(HP1_button%,FormPanoramicHelp%,1,5,5,20,20,"",1) font_name HP1_button%,"Webdings":caption HP1_button%,"3":font_size HP1_button%,12 O_Button(HP2_button%,FormPanoramicHelp%,1,5,30,20,20,"",1) font_name HP2_button%,"Webdings":caption HP2_button%,"H":font_size HP2_button%,12 O_Button(HP3_button%,FormPanoramicHelp%,1,5,55,20,20,"",1) font_name HP3_button%,"Webdings":caption HP3_button%,"4":font_size HP3_button%,12 WB1% = dll_call1("WB_Create",hnd%) res% = dll_call5("WB_Locate",WB1%,5,30,width(FormPanoramicHelp%)-30,height(FormPanoramicHelp%)-80) end_if res% = dll_call2("WB_Url",WB1%,adr(url$)) END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB Preced_page() dim_local res% res% = dll_call2("WB_Function",WB1%,1) END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB Next_Page() dim_local res% res% = dll_call2("WB_Function",WB1%,2) END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB Home_Page() dim_local res%,url$ url$="http://panoramic-language.pagesperso-orange.fr/French/DOCUMENTS.htm" res% = dll_call2("WB_Url",WB1%,adr(url$)) END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB O_Form(Obj%,P%,V%,T%,L%,H%,W%,C$) ' --Ajout d' un form if Obj%> 0 then FORM Obj% if P% > 0 then Parent Obj%,P% if V% = 0 then hide Obj% if H% > 0 then Height Obj%,H% if W% > 0 then Width Obj%,W% if T% > 0 Top Obj%,T% else Top Obj%,(Screen_y-H%)/2 end_If if L% > 0 Left Obj%,L% else Left Obj%,(Screen_x-W%)/2 end_If if C$<>"" then Caption Obj%,C$ END_SUB
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SUB O_Button(Obj%,P%,V%,T%,L%,H%,W%,C$,Cl%) BUTTON Obj% if P% > 0 then Parent Obj%,P% if V% = 0 then hide Obj% if H% > 0 then Height Obj%,H% if W% > 0 then Width Obj%,W% if T% > 0 then Top Obj%,T% if L% > 0 then Left Obj%,L% if C$<>"" then Caption Obj%,C$ if Cl%> 0 then on_click Obj%,Clic cursor_point Obj% END_SUB
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 19 Fév 2015 - 9:39 | |
| Nouvelle version: KGF.dll V4.30 du 19/02/2015
Nouveautés: - correction d'un bug dans WB_Function
Modules modifiés: KGF.dll
Les sources sont à jour. La doc est inchangée.
Les fonctions "Page suivante" et "Page précédente" marchent maintenant dans toutes les circonstances. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 19 Fév 2015 - 13:04 | |
| Je suis assez content de tester PPE de Ygeronimi, car cela entraîne des corrections de KGF.dll. A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 19 Fév 2015 - 13:59 | |
| Nouvelle version: KGF.dll V4.31 du 19/02/2015
Nouveautés: - nouvelle fonction ClipboardFunction
Modules modifiés: KGF.dll KGF.chm
La doc et les sources sont à jour.
Cette fonction effectue certaines actions sur le presse-papier, en fonction de son unique parmètre act% aui est un code action: code de l'action à effectuer 1 = retourner le handle de la fenêtre Windows ayant ouvert le presse-papier 2 = retourner le handle de la fenêtre principale du programme ayant ouvert le presse-papier
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 19 Fév 2015 - 17:47 | |
| La réparation des fonctions du Web Browser fonctionne même si j' ai une dégradation du visuelle pendant la création de l' objet. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Jeu 19 Fév 2015 - 18:06 | |
| Euh... je n'ai rien changé à ce niveau. J'ai uniquement changé un seul caractère, dans WB_Function. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Jeu 19 Fév 2015 - 18:26 | |
| Je ne sais pas pour les autres mais chez moi, la toolbar s' "efface" le temps que le web browser se charge. Je t' invite à tester le programme pour visualiser. A moins que...je venais de lancer mon ordi et le temps que ma machine se réveille... elle est un peu lente... Edit : Apparemment, tout se passe bien maintenant. Il va falloir que je parte à la chasse aux qui tourne en arrière plan et me bouffe de la vitesse d' exécution... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Fév 2015 - 12:43 | |
| Nouvelle version: KGF.dll V4.32 du 22/02/2015Nouveautés: - nouvelle fonction SetFormPropertiesModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette fonction permet de connaître l'état de certaines propriétés d'une form Panoramic, ou de les modifier. Pour l'heure, ces paramètres sont: 1 = blocage complet de l'actualisation de l'affichage d'une form 2 = mise en place du double tampon pour l'affichage de la form 4 = style "opaque" de la form (ce qui empêche l'effacement de l'arrière-plan avant de la redessiner) Voici une petite démo de l'utilité de cette fonction, pour réduire le clignotement d'une fenêtre lorsqu'un fait des mises à jour visuelles rapides. C'est le cas par exemple lors du dessin successif de plusieurs graphismes dans un picture. Le programme réagit à 2 touches frappées au clavier: A = avec blocage de l'actualisation de l'affichage B = sans blocage de l'actualisation de l'affichage La différence est notable: - Code:
-
' test_SetFormProperties.bas
label avec, sans, cercle, touche
dim i%, f%, c%, prop% width 0,620 : height 0,500 : color 0,0,0,255 caption 0,"A=avec blocage S=sans blocage" on_key_down 0,touche
picture 1 : width 1,500 : height 1,400 2d_target_is 1
dll_on "KGF.dll" f% = 1 dessiner()
end
sub dessiner() color 1,255,0,0 2d_fill_color 255,255,255 2d_rectangle 20,20,50,80 2d_rectangle 100,20,350,350 2d_fill_color 255,255,0 2d_circle 200,200,80 for i%=1 to 20 gosub cercle top 0,top(0) + f% left 0,left(0) + 2*f% next i% if f%=1 f% = -1 else f% = 1 end_if end_sub
touche: c% = scancode if c%=65 then gosub avec if c%=83 then gosub sans return avec: prop% = dll_call3("SetFormProperties",object_internal(0),0,0) i% = dll_call3("SetFormProperties",object_internal(0),1,1+2+4) dessiner() i% = dll_call3("SetFormProperties",object_internal(0),1,prop%) return
sans: dessiner() return cercle: 2d_circle int(rnd(50.99)*10),int(rnd(40.99)*10),int(rnd(20.99)*5) return
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Fév 2015 - 13:38 | |
| - Klaus a écrit:
- Le programme réagit à 2 touches frappées au clavier:
A = avec blocage de l'actualisation de l'affichage B = sans blocage de l'actualisation de l'affichage Tu veux dire - Citation :
- S = sans blocage de l'actualisation de l'affichage
Testé et approuvé ! Effectivement la différence est notable. Astuce : Les lignes 31 à 35 - Code:
-
if f%=1 f% = -1 else f% = 1 end_if peuvent être remplacé par cette ligne : - Code:
-
f% = 0-f% mais ça n'enlève rien du charme de cette nouvelle fonction de la dll. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Fév 2015 - 14:48 | |
| Je suis content que tu apprécies. Merci pour le code simplifié ! Ce serait bien si Jack ajoutait une fonction de ce genre, afin de permettre de gérer correctement l'affichage dans ces cas-là, mais je viens de suggérer des choses au niveau des évènements, et je ne voudrais pas abuser. A toutes fins utiles, le code (tr_s simple) de cette fonction est le suivant: - Code:
-
function SetFormProperties(obj: TWinControl; act,opt: integer):integer; stdcall; export;
function IsWindowUpdateLocked(hwd: THandle; bKeepLocked: Boolean): Boolean; begin Result := LockWindowUpdate(hwd); //try to lock and compare result if (not Result) and (not bKeepLocked) then LockWindowUpdate(0); //then unlock if you want end;
begin result := -1; case act of 0: begin result := 0; if IsWindowUpdateLocked(obj.Handle,false) then result := result + 1; if obj.DoubleBuffered then result := result + 2; if csOpaque in obj.ControlStyle then result := result + 4; end; 1: begin if (opt and 1)>0 then LockWindowUpdate(obj.Handle) else LockWindowUpdate(0); if (opt and 2)>0 then obj.DoubleBuffered := true else obj.DoubleBuffered := false; if (opt and 4)>0 then obj.ControlStyle := obj.ControlStyle + [csOpaque] else obj.ControlStyle := obj.ControlStyle - [csOpaque]; result := opt; end; end; end; | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Fév 2015 - 14:51 | |
| C'est clair, ce serait carrément utile ... Et ça éviterait beaucoup de bidouilles pour avoir un bon rendu. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Fév 2015 - 3:16 | |
| allo...Houston ! On a un problème... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Fév 2015 - 3:44 | |
| Le code suivant me renvoie ceci KGF.dll V04.32 122/02/201 PANORAMIC V 0.9.26i5 Je dispose de KGF.dll V4.32 du 22/02/2015 - Code:
-
' quelle_version.bas dim version%, kversion$, pversion$ width 0,270 : height 0,90 top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 memo 1 :width 1,150 : full_space 1 dll_on "c:\users\acer\desktop/kgf.dll" kversion$ = string$(25," ") version% = DLL_call1("KGFdllVersion",adr(kversion$))
pversion$ = string$(25," ") version% = DLL_call1("PanoramicVersion",adr(pversion$))
item_add 1,kversion$ item_add 1,pversion$ end
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Fév 2015 - 3:58 | |
| @ Papydall, - La fonction que tu utilises te renvoie la version que tu possèdes sur ton ordi. - La fonction mise en cause, est censée me renvoyer la dernière version disponible par l' intermédiare du fichier *.txt qui est téléchargé sur le site. Les deux fonctions sont nécessaires pour une mise à jour de la dll par programme en comparant la version dont tu disposes et celle qui est disponible. Apparemment, le fichier du site est un peu en retard dans les versions... Edit : Petit ajout avant que Klaus ouvre les yeux... Il manque une fonction à l' objet Tab, La fonction pour supprimer un onglet... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Fév 2015 - 19:39 | |
| Voici le contenu du fichier versions.txt: - Citation :
- KGF.dll V04.32 22/02/2015
BDR.dll V01.01 26/04/2013 Quant à la version retournée par la DLL, il y avait un chiffre "1" de trop - c'est corrigé. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Fév 2015 - 19:42 | |
| Ok Klaus, merci.
Je vais refaire mon test. | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |