Seite 1 von 1

frage zu ListViewGadget u. #PB_Event_ActivateWindow

Verfasst: 15.09.2006 17:39
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

Verfasst: 15.09.2006 17:53
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.

Verfasst: 15.09.2006 18:00
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:

Verfasst: 15.09.2006 19:36
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

Verfasst: 15.09.2006 20:28
von SB2006
danke, ist genau das was ich wollte

mfg