TAB-Taste im Combobox-Gadget abfangen

Für allgemeine Fragen zur Programmierung mit PureBasic.
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

Beitrag von ts-soft »

>> Da alle Tab-Shortcuts ausgeschalten werden, muss ich dann fuer jedes Gadget das Tab-Handling einbauen, oder?

Ja, aber wenn Du schon EasyVent einbindest, kannste alle damit machen,
haste keine Probleme mehr. Ich verwende es auch in einigen Projekten,
erspart viel Arbeit.

PS: das Tab-Handling kannste in eine Procedure packen, schau Dir die
PB_Gadget Structure an :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Würde sowas nicht auch per Subclassing gehen?
Ich habe jetzt gerade kein Purebasoc-Beispiel zur Hand, aber normalerweise dürfte man übers Subclassing doch auch Events wie "Tab" abfangen können..?

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
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

Beitrag von ts-soft »

Tafkadasom2k5 hat geschrieben:Würde sowas nicht auch per Subclassing gehen?
Ich habe jetzt gerade kein Purebasoc-Beispiel zur Hand, aber normalerweise dürfte man übers Subclassing doch auch Events wie "Tab" abfangen können..?

Gr33tz
Tafkadasom2k5
Würde auch gehen, aber EasyVent macht das selbständig über
SuperClassing. Man muß nicht soviel im MSDN wühlen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

ts-soft hat geschrieben:
Tafkadasom2k5 hat geschrieben:Würde sowas nicht auch per Subclassing gehen?
Ich habe jetzt gerade kein Purebasoc-Beispiel zur Hand, aber normalerweise dürfte man übers Subclassing doch auch Events wie "Tab" abfangen können..?

Gr33tz
Tafkadasom2k5
Würde auch gehen, aber EasyVent macht das selbständig über
SuperClassing. Man muß nicht soviel im MSDN wühlen :mrgreen:
Kann ich nicht so stehen lassen :D. Hier wird kein Superclassing benutzt,
sondern Subclassing. Sollte somit die Frage von Tafka auch beantworten.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

edel hat geschrieben: Kann ich nicht so stehen lassen :D. Hier wird kein Superclassing benutzt,
sondern Subclassing.
@TS-Soft:
Bild :mrgreen:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
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

Beitrag von ts-soft »

In der Anleitung von EasyVent stehts so. Ich nutze es als UserLib, hab also
den Source nicht ständig vor Augen.

@Tafkadasom2k5
Die kleine Rotznase mit ausgestreckter Zunge, bist Du das :lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

der is ja echt voll knuffig, was ein Lausbub. :D

...ist das dein junge?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

...ne, kenn ich nicht... ;)
Aber ich habe ihn gesehen und fand ihn niedlich :mrgreen:

Gr33tz
Tafkadasom2k5

Edit: Ne, mit eigenen Lausbubs warte ich wohl noch <)
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

ts-soft hat geschrieben:In der Anleitung von EasyVent stehts so. Ich nutze es als UserLib, hab also
den Source nicht ständig vor Augen.
Weder im Source noch in der Anleitung steht etwas ueber Klassenableitung,
geschweige denn 'superclassing'. Was das mit der Lib zu tun hat weiss ich nicht , klingt aber nach einer Ausrede :lol:

Hier mal 2 Beispiele :

subclassing :

Code: Alles auswählen

  
  Procedure Callback(h,m,w,p)
    shared oldProc
    
    If m = #WM_CHAR
      
      select w
        case 48 to 57 , 8 ; 0-9 + backspace
        default 
          ProcedureReturn 0
      EndSelect
      
    EndIf
    
    ProcedureReturn CallWindowProc_(oldProc,h,m,w,p)
  EndProcedure
  
  hwnd  = OpenWindow(0,0,0,200,200,"")
  
  hedit = CreateWindowEx_(0,"edit","0123456789",#WS_CHILD|#WS_VISIBLE,10,10,180,20,hwnd,0,0,0)
  
  oldProc = SetWindowLong_(hedit,#GWL_WNDPROC,@callback()) ;<- subclassing
  
  Repeat
    
  Until WaitWindowEvent() = 16
superclassing

Code: Alles auswählen

  
  Procedure Callback(h,m,w,p)
    shared oldProc
    
    If m = #WM_CHAR
      
      select w
        case 48 to 57 , 8 ; 0-9 + backspace
        default 
          ProcedureReturn 0
      EndSelect
      
    EndIf
    
    ProcedureReturn CallWindowProc_(oldProc,h,m,w,p) ; alte adresse aufrufen
  EndProcedure
  
  Procedure RegisterMyCLass()
    shared oldProc
    Protected wndex.WNDCLASSEX\cbSize = sizeof(WNDCLASSEX)
    Protected hInstance = GetModuleHandle_(0)
    GetClassInfoEx_(0,"edit",@wndex) ; info ueber 'edit' holen
    oldproc = wndex\lpfnWndProc ; alte adresse speichern
    wndex\lpszClassName = @"MyWinClass" ; unseren Klassen namen eintragen
    wndex\hInstance     = hInstance
    wndex\lpfnWndProc   = @Callback() ; unsere procedure angeben
    RegisterClassEx_(@wndex)
  EndProcedure
  
  RegisterMyCLass() ; superclassing
  
  hwnd  = OpenWindow(0,0,0,200,200,"")
  
  hedit = CreateWindowEx_(0,"MyWinClass","0123456789",#WS_CHILD|#WS_VISIBLE,10,10,180,20,hwnd,0,0,0)
  
  Repeat
  
  Until WaitWindowEvent() = 16
Wuerde in EasyEvent also gar keinen Sinn machen.
Antworten