Salut,
Je prend plaisir a lire la notice de BP et je me suis mis aux gadget mais difficilement. J'ai 2 question de newbie :
Comment afficher un text$ qui est plutot grand pour que le gadget dans lequel on l'affiche nous fasse un alignement par le bas ? (quand un texte est trop grand, on ne vois pas le bas car il est aligné sur le bord haut. Moi, je veux un alignement en bas style déroulement de texte dans un tchat) (j'ai essayé les scroll mais rien y a fait)
Comment faire un gadget noir qui affiche le text$ mais avec une marge noire autour pour que le texte ne soit pas collé aux bords ? (La seule solution que j'ai trouvé est d'afficher en dessous un autre gadget noir mais plus grand pour faire un cadre, mais est ce la bonne solution ?)
thxxx
Newbie en gadgets
Newbie en gadgets
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Re: Newbie en gadgets
Je ne sais pas si ça correspond à ta recherche mais je trouve qu'un tchat ressemble à ça..
En ajoutant des espaces et saut de ligne ??
Je t'ai mis en commentaire la procédure retourauto que j'utilise (windows necessaire) à utiliser avec un editor gadget.
En ajoutant des espaces et saut de ligne ??
Je t'ai mis en commentaire la procédure retourauto que j'utilise (windows necessaire) à utiliser avec un editor gadget.
Code : Tout sélectionner
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Window_0
#EDITOR : #message : #go
EndEnumeration
; ProcedureDLL RetourAuto(gadget)
; SendMessage_(GadgetID(gadget), #EM_SETTARGETDEVICE, #Null, 0)
; EndProcedure
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0, 450, 300, 280, 150, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
EditorGadget(#EDITOR, 5, 10, 270, 70,#PB_Editor_ReadOnly)
SetGadgetText(#EDITOR,"Le fonctionnement d'un tchat ressemble à ça non ?")
RetourAuto(#EDITOR)
StringGadget(#message,5,90,250,20,"Tape ton textre ici puis clic sur le bouton",#PB_String_BorderLess)
ButtonGadget(#go,5,120,50,20,"envoyer")
; Gadget Colors
PureCOLOR_SetGadgetColor(#EDITOR, $38F4FA, $0)
EndIf
EndProcedure
OpenWindow_Window_0()
;{- Event loop
Repeat
Select WaitWindowEvent()
; ///////////////////
Case #PB_Event_Gadget
Select EventGadget()
Case #go
message$=Space(5)+GetGadgetText(#message)
EditorMessage$=Space(5)+GetGadgetText(#EDITOR)
MessageTotal$=Chr(10)+message$+Chr(10)+EditorMessage$
SetGadgetText(#EDITOR,MessageTotal$)
SetGadgetText(#message,"")
EndSelect
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Window_0
CloseWindow(#Window_0)
Break
EndSelect
EndSelect
ForEver
;
;}
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Newbie en gadgets
Merci Ar-s. Je m'appercois que tu es tres prolifique. Je vais etudier ta routine car c'est ce qui se rapproche le plus de ce que je cherche. En fait, un tchat accumule les nouvelles lignes ecrites en bas du texte et non en haut et la fenetre 'cadre' le dernier texte. Je vais etudier ca et je te dirais quoi 
EDIT :
Ha bè, que je suis bête, comme j'ai mon ordi, je peux poster mon code :
PS : la ligne 20 sert a 'encadrer' en noir le texte blanc sur fond noir. Supprimez la et vous verrez le texte trop collé aux bords.

EDIT :
Ha bè, que je suis bête, comme j'ai mon ordi, je peux poster mon code :
Code : Tout sélectionner
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;; HyperCryptTchat v1.0 par SPH ;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#WindowWidth = 800
#WindowHeight = 480
If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, "HyperCryptTchat v1.0", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
port$="666"
If LoadFont(0, "Arial", 8)
SetGadgetFont(#PB_Default, FontID(0))
EndIf
PanelGadget(0,8,8, #WindowWidth-16, #WindowHeight-40)
OpenGadgetList(0)
AddGadgetItem(0, 0, "Tchat")
TextGadget(99,4,4,#WindowWidth-30, #WindowHeight-73,"");,#PB_String_ReadOnly)
SetGadgetColor(99,#PB_Gadget_BackColor,RGB(20,20,20))
TextGadget(100,10,10,#WindowWidth-42, #WindowHeight-85,"");,#PB_String_ReadOnly|#PB_Button_MultiLine)
SetGadgetColor(100,#PB_Gadget_BackColor,RGB(20,20,20))
SetGadgetColor(100,#PB_Gadget_FrontColor,RGB(255,255,255))
CloseGadgetList()
OpenGadgetList(0)
AddGadgetItem(0, 1, "Options")
Frame3DGadget(1, 10, 10, #WindowWidth-42, 52,"Vous")
TextGadget(4,10+20,10+25,50,20,"Pseudo :",#PB_String_ReadOnly)
StringGadget(5,10+80,10+21,100,20,"Alpha")
TextGadget(6,10+206,10+25,150,20,"IP :")
TextGadget(7,10+206+32,10+25,150,20,"127.0.0.001")
Frame3DGadget(2, 10, 70, #WindowWidth-42, 52,"Votre contact")
TextGadget(8,10+20,70+25,50,20,"Pseudo :",#PB_String_ReadOnly)
StringGadget(9,10+80,70+21,100,20,"Charlie")
TextGadget(10,10+206,70+25,50,20,"IP :",#PB_String_ReadOnly)
IPAddressGadget(11,10+206+32,70+21,110,20)
TextGadget(12,380,70+25,50,20,"Port :",#PB_String_ReadOnly)
StringGadget(13,420,70+21,50,20,port$,#PB_String_Numeric)
ButtonGadget(14,680,70+21,70,20,"Connect")
Frame3DGadget(3, 10, 130, #WindowWidth-42, 260,"Cryptage")
For i=0 To 9
;TextGadget(20+i,30,130+25+i*23,50,20,"Clé N°"+Str(i+1)+" :",#PB_String_ReadOnly)
ButtonGadget(40+i,30,130+21+i*23,70,20,"Clé N°"+Str(i+1)+" :",#PB_String_ReadOnly)
Next
For i=0 To 9
StringGadget(30+i,110,130+21+i*23,640,20,"")
Next
For i=0 To 9
;ButtonGadget(40+i,680,130+21+i*23,70,20,"Open File")
Next
CloseGadgetList()
CloseGadgetList()
StringGadget(50,8,#WindowHeight-26,#WindowWidth-16, 20,"")
SetActiveGadget(50)
AddKeyboardShortcut(0, #PB_Shortcut_Return, 1)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dim key$(10)
Dim pointeurs(10)
key$(0)=Chr(13)+Chr(10)
txt$="HyperCryptTchat permet de dialoguer en TOTALE sécurité avec votre interloculeur. Le niveau de sécurité est extrèmement grand même si vous choisissez mal vos clés de cryptage. Il est cependant préférable de choisir comme clés des fichiers 'compressés' comme des .ZIP, .ACE, .RAR, .MP3, .MP4 et .AVI par exemple. "
txt$+"Toute la sécurité réside dans le fait que seul votre interlocuteur et vous connaissez à quoi correspondent ces clés. Par exemple, la clé N°1 peut etre un mp3 que votre interlocuteur et vous avez sur votre disque dur (il faut que ce soit EXACTEMENT le même fichier). Le problème n'est pas que d'autres internautes possèdent ce fichier mais plutôt que quelqu'un SACHE que la clé N°1 est CE mp3. "
txt$+"La sécurité est d'avoir convenu oralement (pas par téléphone, ni par email et autre SMS) quelles seront vos clés et de garder ce secret !"+key$(0)
txt$+"Un exemple : Je rencontre Charlie dans un bar et nous convenons ensemble que :"+key$(0)
txt$+"La clé N°1 sera tel .MP3"+key$(0)
txt$+"La clé N°2 sera tel .AVI"+key$(0)
txt$+"On ne choisira rien pour les clés N°3, N°4 et N°5"+key$(0)
txt$+"La clé N°6 sera tel .ZIP"+key$(0)
txt$+"La clé N°7 et N°8 sera tel et tel .JPG"+key$(0)
txt$+"La clé N°9 sera la premiere image rencontré sur le site WWW.CLUBIC.COM et que vous aurez sauvegardé sur votre disque dur"+key$(0)
txt$+"La clé N°10 sera le fichier que vous aurez récement recommandé sur tel ou tel site"+key$(0)
txt$+key$(0)
txt$+"Une fois connecté sur HyperCryptTchat, vous pourrez choisir de rechanger certaines clés tous les X jours pour les futurs dialogues."+key$(0)
txt$+key$(0)
txt$+"Comment se transmettre son IP actuelle ? Par un quelconque moyen : le téléphone, un email, un SMS, un tchat classique comme MSN ou encore un site en particulier sur lequel vous laisserez en commentaire votre IP."+key$(0)
txt$+key$(0)
txt$+"PS :"+key$(0)
txt$+"- Les pseudos ne sont pas transmis dans la communication."+key$(0)
txt$+"- Utilisez au moins 3 clés différentes et changez-en au moins une fois que vous avez écrit l'équivalent de plus de 10 pages de livres."+key$(0);+key$(0)
txt$+"_________"+key$(0)+key$(0)
SetGadgetText(100, txt$)
;;;;;;;;;;;;;;;;;;;;;;;;;;;
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Menu And EventMenu() = 1
If GetGadgetText(50)<>""
envoyer$=GetGadgetText(50)
StartDrawing(WindowOutput(0))
txt$+GetGadgetText(5)+" : "+envoyer$+" ("+Str(TextWidth(txt$))+")"+key$(0)
StopDrawing()
SetGadgetText(100, txt$)
SetGadgetText(50, "")
SetActiveGadget(50)
;envoyer$ est a crypter et a envoyer
Else
SetActiveGadget(50)
EndIf
EndIf
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 14
DisableGadget(14,1)
;se connecter en ftp a l'IP et le port mentionné
Case 40
key$(1) = OpenFileRequester("Clé N°1", "","",0)
SetGadgetText(30, key$(1))
Case 41
key$(2) = OpenFileRequester("Clé N°2", "","",0)
SetGadgetText(31, key$(2))
Case 42
key$(3) = OpenFileRequester("Clé N°3", "","",0)
SetGadgetText(32, key$(3))
Case 43
key$(4) = OpenFileRequester("Clé N°4", "","",0)
SetGadgetText(33, key$(4))
Case 44
key$(5) = OpenFileRequester("Clé N°5", "","",0)
SetGadgetText(34, key$(5))
Case 45
key$(6) = OpenFileRequester("Clé N°6", "","",0)
SetGadgetText(35, key$(6))
Case 46
key$(7) = OpenFileRequester("Clé N°7", "","",0)
SetGadgetText(36, key$(7))
Case 47
key$(8) = OpenFileRequester("Clé N°8", "","",0)
SetGadgetText(37, key$(8))
Case 48
key$(9) = OpenFileRequester("Clé N°9", "","",0)
SetGadgetText(38, key$(9))
Case 49
key$(10) = OpenFileRequester("Clé N°10", "","",0)
SetGadgetText(39, key$(10))
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
;Beep_(1500,5)
End
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
-
- Messages : 471
- Inscription : dim. 23/déc./2007 18:10
Re: Newbie en gadgets
Salut.
Déjà je ne pense pas que le TextGadget(100,10,10,#WindowWidth-42, #WindowHeight-85,"") soit approprié pour ce que tu veux faire.
Peut-être l'as-tu choisit pour ses retours à la ligne automatique.
Mais de mémoire ce retour auto ne fonctionne pas sous Linux pour le TextGadget multi-ligne.
La meilleur solution est celle proposé par Ar-S pour ce qui concerne Windows.
En plus dés que ton texte descendra trop bas tu n'auras pas de scrollbar pour descendre le texte.
Maintenant tu as peut-être prévu d'effacer le texte au fur et à mesure pour gérer ça.
Et si j'étais toi, je donnerai des noms explicites à l'ID de tes gadgets.
Ex :Au moins dés que je vois un bouton sur mon interface et que je dois en modifier le texte je retrouve mes petits facilement.
Il s'agit ici d'un interface simplette mais quand il y a 1 tonne de gadget comme sur la tienne, c'est plus facile pour éviter une erreur.
Si je veux envoyer du texte dans mon "EditorGadget" et que je vois
SetGadgetText(#Button_VerifierMaj, Texte$)
Je vois vite fait que j'envoie mon texte dans un #Button_ plutôt que dans un #Editor_
C'est mieux que SetGadgetText(100, Texte$)
Mais bon, chacun sa façon de programmer.
Bye.
Déjà je ne pense pas que le TextGadget(100,10,10,#WindowWidth-42, #WindowHeight-85,"") soit approprié pour ce que tu veux faire.
Peut-être l'as-tu choisit pour ses retours à la ligne automatique.
Mais de mémoire ce retour auto ne fonctionne pas sous Linux pour le TextGadget multi-ligne.
La meilleur solution est celle proposé par Ar-S pour ce qui concerne Windows.
En plus dés que ton texte descendra trop bas tu n'auras pas de scrollbar pour descendre le texte.
Maintenant tu as peut-être prévu d'effacer le texte au fur et à mesure pour gérer ça.
Et si j'étais toi, je donnerai des noms explicites à l'ID de tes gadgets.
Ex :
Code : Tout sélectionner
; -------------------------------------------------------------------------------------------
;- Enumeration
; -------------------------------------------------------------------------------------------
Enumeration #PB_Compiler_EnumerationValue
; - Windows
#WINDOW_Maj
; - Gadgets
#BUTTON_VerifierMaj
#EDITOR_InsertionText
EndEnumeration
; -------------------------------------------------------------------------------------------
;- Procédures
; -------------------------------------------------------------------------------------------
Procedure Open_Window_Maj()
If OpenWindow(#Window_Maj, 220, 0, 550, 221, "Vérification des mises à jour.", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ButtonGadget(#Button_VerifierMaj, 170, 180, 180, 24, "Verifier les mises à jour")
EditorGadget(#Editor_InsertionText, 10, 10, 510, 160) ;, #PB_Editor_ReadOnly
EndIf
EndProcedure
Il s'agit ici d'un interface simplette mais quand il y a 1 tonne de gadget comme sur la tienne, c'est plus facile pour éviter une erreur.
Si je veux envoyer du texte dans mon "EditorGadget" et que je vois
SetGadgetText(#Button_VerifierMaj, Texte$)
Je vois vite fait que j'envoie mon texte dans un #Button_ plutôt que dans un #Editor_
C'est mieux que SetGadgetText(100, Texte$)
Mais bon, chacun sa façon de programmer.
Bye.
Re: Newbie en gadgets
Effacer le texte au fur et a mesure est possible seulement si l'on sait quelle hauteur a le txt$. Mais il n'y a pas d'instruction PB qui le dise en prenant en compte les retour a la ligne automatique et la taille de la police... Alors ...
Je vais continuer a fouiller
Je vais continuer a fouiller
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits