Seite 1 von 2
Fensterinhalt nicht aktuell ???
Verfasst: 24.01.2005 00:14
von DerProgrammierer78
Hallo zusammen,
Ich schreibe gerade an einem Programm bei dem ich mehrere StringGadgets benutze. Nun versuche ich diese zeitweise zu verstecken und wieder sichtbar zu machen. Mein Problem liegt da, dass er sie zwar prima sichtbar macht, aber nicht wieder versteckt ?????
Nun kam mir der Gedanke, dass der Bildschirm evtl. nicht neu aufgebaut wird nach der Veränderung ?????
Wer kann mir da helfen ???
Verfasst: 24.01.2005 00:19
von Laurin
Probiere mal eine UpdateWindow_(WindowID()). Vielleicht reicht das ja schon.
Verfasst: 24.01.2005 00:26
von DerProgrammierer78
Das funktioniert leider nicht
Was nun ???
Verfasst: 24.01.2005 00:36
von Laurin
Eventuell hilft dir das hier:
http://www.robsite.de/php/pureboard/vie ... php?t=1431
Schau mal nach dem Post, den Danilo geschrieben hat.
Greetz Laurin
Verfasst: 24.01.2005 00:52
von DerProgrammierer78
Danke, das ist nen guter Anfang, aber wenn 4 Bildschirme komplett anfangen zu flackern (Habe 4 an meinem PC), dann ist das nervig. Und in dem Beitrag steht etwas von hinzufügen zur Windowinitialisierung. Das siet bei mir so aus:
If OpenWindow(1,0,0,900,700,#PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #WS_CLIPCHILDREN,"NAME DES PROGRAMMS")
Und das hilft nicht
was nun ??
Verfasst: 24.01.2005 02:47
von Rob
Klappt doch gut, zumindest bei mir (Win2000):
Code: Alles auswählen
win=OpenWindow(0,0,0,60,80,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Test")
CreateGadgetList(win)
StringGadget(0,10,1,80,20,"String")
StringGadget(1,10,25,80,20,"Auch String")
ButtonGadget(2,1,50,100,25,"Hide")
Repeat
eventid = WaitWindowEvent()
If eventid = #PB_Event_Gadget
If EventGadgetID() = 2
state=1-state
HideGadget(1,state)
If state=0:SetGadgetText(2,"Hide"):Else:SetGadgetText(2,"Show"):EndIf
EndIf
EndIf
Until eventid = #PB_Event_CloseWindow
Verfasst: 24.01.2005 12:24
von DerProgrammierer78
Das funktioniert so, wie du es geschrieben hast auch ganz gut. Nur wenn ich den Code in ein Panelgadget einbaue klappt es leider nicht. Und da liegt mein Problem. Hätte ich aber evtl. beischreiben müssen. An dieser Stelle entschuldige ich mich dafür, dass ich dies vergessen habe.
Evtl. gibt es ja eine Routine um nur den aktivierten Bereich des Panelgadgets zu aktualisieren.
Verfasst: 24.01.2005 12:55
von Laurin
Das PanelGadget hat sicherlich mehrere Panels. Schalte einfach mal zwischen diesen hin und her. Das müsste genügen.
Verfasst: 24.01.2005 13:03
von DerProgrammierer78
Die Idee ist gut und funktioniert auch. Nur ist das ziemlich lästig nach jeder Eingabe (Das Aussehen ist abhängig von den Eingaben) das Panel zu wechseln und zurück zu wechseln.
Also langsam verzweifel ich

Verfasst: 24.01.2005 14:19
von Danilo
http://robsite.de/php/pureboard-archiv/ ... php?t=3048
Und schau mal folgenden Code an:
http://www.purearea.net/pb/CodeArchiv/G ... &Height.pb
Code: Alles auswählen
tc.TC_ITEM\mask = #TCIF_PARAM
If SendMessage_(GadgetID(PanelGadget),#TCM_GETITEM,item,@tc)
; hWnd des Childs in tc\lParam, also refreshen
InvalidateRect_( tc\lParam, 0, 1)
UpdateWindow_( tc\lParam )
EndIf
Mußt mal selbst bissl damit rumspielen.