frage zu ListViewGadget u. #PB_Event_ActivateWindow

Anfängerfragen zum Programmieren mit PureBasic.
SB2006
Beiträge: 4
Registriert: 15.09.2006 16:01

frage zu ListViewGadget u. #PB_Event_ActivateWindow

Beitrag von SB2006 »

1.
Warum wird die liste nicht sofort beim fuellen angezeigt, sondern erst wenn sie gefuellt ist?
Beispiel:

OpenWindow(0,50,50,300,300,"test")

CreateGadgetList(WindowID(0))
ListViewGadget(1,5,45,290,165)

For i=0 To 50
AddGadgetItem(1,i,"test")
Delay(100)
Next

Repeat
eventID = WaitWindowEvent()
Until eventID = #PB_Event_CloseWindow

End


2.
gibt es fuer #PB_Event_ActivateWindow auch das gegenstueck fuer ein nicht aktives fenster?
auf der basis z.b:
(zeige einen text "hallo" wenn das fenster aktive (#PB_Event_ActivateWindow) ist - zeige den text "test" wenn das fenster inaktive (???) ist.

mfg
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 »

Zu 1:
Das Fenster arbeitet keine Ereignisse ab, deshalb wird auch nichts
angezeit, for dem eigentlichen Loop!

Am besten zeigt man das Fenster auch erst nach dem erstellen an. Ich
denke aber, Du möchtest sowas wie einen Effekt erreichen, dann
vielleicht so:

Code: Alles auswählen

OpenWindow(0,50,50,300,300,"test")

CreateGadgetList(WindowID(0))
ListViewGadget(1,5,45,290,165)

For i=0 To 50
AddGadgetItem(1,i,"test")
While WindowEvent() : Wend
Delay(100)
Next

Repeat
eventID = WaitWindowEvent()
Until eventID = #PB_Event_CloseWindow

End
Wobei der Schließen Knopf aber erst nach der Darstellung wieder Funktioniert.

Zu 2:
Da gibts es keine nativen PB-Befehle für.
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
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Bein füllen von sehr vielen Daten schaltet ich sogar mit "HideGadget(#Gadget, Status)" das Gadget unsichtbar.
Geht da durch um einiges schneller.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

ts-soft hat geschrieben:Zu 2:Da gibts es keine nativen PB-Befehle für.
Danach wurde ja gar nicht gefragt !?

@SB2006

Es gibt in PB kein Event dafuer , du kannst aber die Api nutzen

Beispiel :

Code: Alles auswählen

  Procedure callback(hwnd,msg,wParam,lParam)
    
    If msg = #WM_SETFOCUS
      SetGadgetText(0,"hallo")
    ElseIf msg = #WM_KILLFOCUS
      SetGadgetText(0,"test")
    EndIf
    
    ProcedureReturn #PB_ProcessPureBasicEvents
  EndProcedure
  
  hwnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,200,200,"")
  
  SetWindowCallback(@callback(),0)
  
  CreateGadgetList(hwnd)
  
  TextGadget(0,10,10,100,20,"hallo")
  
  Repeat
    
  Until WaitWindowEvent() = #WM_CLOSE
SB2006
Beiträge: 4
Registriert: 15.09.2006 16:01

Beitrag von SB2006 »

danke, ist genau das was ich wollte

mfg
Antworten