Fragen zu gadget

Anfängerfragen zum Programmieren mit PureBasic.
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Fragen zu gadget

Beitrag von Raphi »

Hi Leute ich habe gleich 2 Fragen zu gadget.

ich habe ja diese chat programm geschrieben:

Server Seite:

Code: Alles auswählen

If InitNetwork() = 0

  MessageRequester("Error", "Netzwerk konnte nicht Initialisiert werden!", 0)
  End
  
EndIf

;*********************************************************************

Global     Port = 6832
Global  *Buffer = AllocateMemory(1000)
Global ClientID
Global    Text$
Global   SEvent
Global    Name$
Global        n
Global  beenden
Global     quit
Global   Result 

;********************************************************************************

Procedure CEV(x)


Repeat

  SEvent = NetworkServerEvent() 
  
    If SEvent
     
      ClientID = EventClient()
      
        Select SEvent
        
        Case 0
        
          Delay(100)
        
        Case 1
        
          If x=0
          
            MessageRequester("PureBasic - Server", "A new client has connected !"+Str(ClientID), 0)
            x=1
  
          EndIf
  
        Case 2
          
          ReceiveNetworkData(ClientID, *Buffer, 1000)
          AddGadgetItem (0, -1, "An "+name$+": "+PeekS(*Buffer))
          n+1
          SetGadgetState(0, n)
          
          FreeMemory(*buffer)
          *Buffer = AllocateMemory(1000)

      EndSelect
     
    EndIf
    
Until quit=1

EndProcedure

Procedure ServerS()

If ClientID

  If SendNetworkString(ClientID, Text$)

  Else

    MessageRequester("Server", "Naricht konnte nicht gesendet werden", 0)
     
  EndIf
  
Else

MessageRequester("Error","Client nicht gefunden(Ist er Online?)")  
  
EndIf


  EndProcedure

Procedure NRicht(x)

Repeat

  If GetGadgetState(2)=1
    
    text$=GetGadgetText(1)
    SetGadgetState(2,0)
    SetGadgetText(1,"")
    
    n+1
    AddGadgetItem(0,-1,name$+":"+Text$)
    SetGadgetState(0, n)
    
    ServerS()
    
  ElseIf GetGadgetState(3)=1
  
    beenden=1
    SetGadgetState(3,0)  
    
  EndIf
  
Until quit=1
  
EndProcedure

Procedure Liste(x)

If OpenWindow(0, 100, 0, 270, 640, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  ListViewGadget(0, 10, 30, 250, 580)
  StringGadget(1, 10,  5, 195, 20, "Normal StringGadget...")
  ButtonGadget(2, 207,5, 55, 20, "Senden", #PB_Button_Toggle)
  ButtonGadget(3, 10,615, 250, 20, "Beenden", #PB_Button_Toggle)
  AddGadgetItem (0, -1, "Chat Verlauf")
  
  CreateThread(@NRicht(),1)
  
  Repeat :Until WaitWindowEvent() = #PB_Event_CloseWindow Or quit=1
    
EndIf
  
  EndProcedure
  


;******************************************************************************************************

Name$=InputRequester("Name","Bitte geben sie ihren namen ein","Herr ...")



If CreateNetworkServer(1, Port)

  MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
  
  CreateThread(@CEV(),1)
  CreateThread(@Liste(),1)
 
  
;*****************************************Hauptschleife*******************************************
 
 Repeat
 
   If beenden=1
   
     Result=MessageRequester("PureBasic - Server", "Server beenden?",1 )
  
      If Result=1
      
        Quit=1
  
        If CloseNetworkServer(1)
    
          MessageRequester("Server", "Der Server wurde Beendet",0 )
      
        Else
          
          MessageRequester("Server", "Der Server konnte nicht beendet werden",0 )
          
        EndIf
      
      Else
      
      beenden=0
          
      EndIf
   
   EndIf
 
 Until quit=1  
 
  
;*****************************************************************************************************

  
  
Else

  MessageRequester("Error", "Server konnte nicht erstellt werden", 0)
  
EndIf
Client seite:

Code: Alles auswählen

If InitNetwork() = 0

  MessageRequester("Error", "Netzwerk konnte nicht Initialisiert werden!", 0)
  End
  
EndIf

;*********************************************************************

Global         Port = 6832
Global ConnectionID
Global       SEvent
Global        Text$
Global      *Buffer = AllocateMemory(1000)
Global        name$
Global       result
Global         quit
Global      beenden

;********************************************************************************

Procedure CEV(x)

Repeat

 SEvent = NetworkClientEvent(ConnectionID) 

    If SEvent
        
        Select SEvent
        
        Case 0
        
          Delay(100)
        
        Case 2
        
          ReceiveNetworkData(ConnectionID, *Buffer, 1000)
          AddGadgetItem (0, -1, "An "+name$+": "+PeekS(*Buffer))
          n+1
          SetGadgetState(0, n)
          
          FreeMemory(*buffer)
          *Buffer = AllocateMemory(1000)
          
        EndSelect
      
    EndIf
    
Until quit=1 

EndProcedure

Procedure ServerSendung()

If connectionID

  If SendNetworkString(ConnectionID, Text$)

    CloseNetworkConnection(ConnectionID)
    ConnectionID=OpenNetworkConnection("169.254.77.235", Port)
  
  Else

    MessageRequester("Error","Naricht konnt nicht gesendet werden")

  EndIf
  
Else 

  MessageRequester("Error","Server nicht gefunden!(Ist er Online?)")
  
EndIf

  EndProcedure

Procedure NRicht(x)

Repeat

  If GetGadgetState(2)=1
    
    text$=GetGadgetText(1)
    SetGadgetState(2,0)
    SetGadgetText(1,"")
    
    n+1
    AddGadgetItem(0,-1,name$+":"+Text$)
    SetGadgetState(0,n)
    
    ServerSendung()
    
  ElseIf GetGadgetState(3)=1
  
    beenden=1
    SetGadgetState(3,0)
    
  EndIf
  
Until quit=1
  
EndProcedure

Procedure Liste(x)

If OpenWindow(0, 100, 0, 270, 640, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  ListViewGadget(0, 10, 30, 250, 580)
  StringGadget(1, 10,  5, 195, 20, "Normal StringGadget...")
  ButtonGadget(2, 207,5, 55, 20, "Senden", #PB_Button_Toggle)
  ButtonGadget(3, 10,615, 250, 20, "Beenden", #PB_Button_Toggle)
  AddGadgetItem (0, -1, "Chat Verlauf")
  
  CreateThread(@NRicht(),1)
  
  Repeat :Until WaitWindowEvent() = #PB_Event_CloseWindow
    
EndIf
  
  EndProcedure

;*****************************************************************************************

Name$=InputRequester("Name","Bitte geben sie ihren namen ein","Herr ...")

ConnectionID=OpenNetworkConnection("169.254.77.235", Port)

CreateThread(@CEV(),1)
CreateThread(@Liste(),1)

;********************Hauptschleife**********************************************

Repeat
 
   If beenden=1
   
     Result=MessageRequester("Server", "Client beenden",1 )
  
      If Result=1
      
        Quit=1
  
        If CloseNetworkServer(1)
    
          MessageRequester("Server", "Der Client wurde Beendet",0 )
      
        Else
          
          MessageRequester("Server", "Der Client konnte nicht beendet werden",0 )
          
        EndIf
      
      Else
      
      beenden=0
          
      EndIf
   
   EndIf
 
 Until quit=1  

;***************************************************************************************

  
Und nun möchte ich wissen wie man:

1. Machen kann das man die nachricht mit Enter abschickt

2.Wie man machen kann das man den Text automatisch eingeben kann ohne ins
Eingabefeld zu klicken


Für antworten oder hinweise währe ich sehr dankbar
Zuletzt geändert von Raphi am 20.09.2009 19:56, insgesamt 1-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Fragen zu gadget

Beitrag von STARGÅTE »

> 1. Machen kann das man die naricht mit Enter abschickt
Pure Basic Hilfe hat geschrieben:AddKeyboardShortcut(#Window, Shortcut, Event)
> 2.Wie man machen kann das man den Text automatisch eingeben kann ohne ins
Eingabefeld zu klicken
Pure Basic Hilfe hat geschrieben:SetActiveGadget(#Gadget)
Infos dazu in der Hilfe
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: Fragen zu gadget

Beitrag von jojo1541 »

zu 1:

Code: Alles auswählen

AddKeyboardShortcut(0,#PB_Shortcut_Return,event)
Dafür musst du aber die Menüevents abfragen.


zu 2:

Code: Alles auswählen

SetActiveGadget(#Gadget)
Du solltest das beenden noch perfektionieren, das executable läuft weiter, auch wenn man es beendet hat...
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Fragen zu gadget

Beitrag von HeX0R »

und es heisst NACHRICHT!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fragen zu gadget

Beitrag von ts-soft »

HeX0R hat geschrieben:und es heisst NACHRICHT!
:allright:
Endlich weiß ich worum es sich hier handelt, hab den Beitrag vorher nämlich nicht verstehen können.

Gruß

Thomas
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Re: Fragen zu gadget

Beitrag von Raphi »

ok vielen Dank! :allright: :bounce:
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Re: Fragen zu gadget

Beitrag von Raphi »

jojo1541 hat geschrieben: Du solltest das beenden noch perfektionieren, das executable läuft weiter, auch wenn man es beendet hat...
wie meinst du das, im pure basic editor steht immer Executable has finished?

Oder meinst du die Fehlermeldung Server konnte nicht beendet werden?

Klar men man einfach nur auf x drückt gehts nocht nicht, mach ich aber demnächts!
Antworten