hilfe zu AddGadgetItem bitte

Anfängerfragen zum Programmieren mit PureBasic.
Charly
Beiträge: 39
Registriert: 20.02.2010 20:10

hilfe zu AddGadgetItem bitte

Beitrag von Charly »

moinmoin nochmal,

i bin immer noch am 'kaempfen' und hab euch folgenden Ausschnitt
aus meinem PRG 'vorbereitet'

Code: Alles auswählen

Procedure mkwindowandbutton()
  
  If OpenWindow(0,0,0,800,400," TEST ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget)
    
    EditorGadget(2,10,30,WindowWidth(0)-20,WindowHeight(0)-33);,#PB_Editor_WordWrap)    
    SetGadgetColor(2, #PB_Gadget_BackColor, $666666)
    SetGadgetColor(2,#PB_Gadget_FrontColor, $00FFFF)
  EndIf
EndProcedure

mkwindowandbutton()
pos = -1

Repeat
  
  ;EventID=WaitWindowEvent()
  EventID=WindowEvent()
 
  Delay (50)
  
  i = Random(999999999999)
  
  AddGadgetItem(2,Pos,Str(i)+ " ",0,0) 
    
  If EventID = #PB_Event_CloseWindow
    End
  EndIf
  
ForEver
    

jetzt meine vielen Fragen/Probleme

1. wenn das Fenster nicht im Vordergrund ist 'steht' die
Ausgabe, warum? und wie kann man das aendern

2. wenn das Prg startet rollt die ausgabe nach unten
dann erscheint Re. der Rollbalken aber im Fenster scrollt
es nicht hoch, erst wenn i in das Fenster reinklicke, wie
aendere i das ?

3. wenn jetzt das Fenster am scrolle ist und ich mit der
Maus den Scrollbalken hochschiebe um zb. was zu suchen
springt er bei der naechste ausgabe sofort unten, finde i
nicht gut, i moechte das er dann dort bleibt bis zb. ctrl+end
gedrueckt wird oder er wird bis unten hin bewegt, auch hier:
wie ist das zu loesen ?


vielen dank! & vG
Charly

ps. der Code ist ein 'gekuerztes' Bsp. und dient zur anschauung meiner
mieserablen Programierkunst :oops:
vlG Charly / PB 5.42 x86
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: hilfe zu AddGadgetItem bitte

Beitrag von RSBasic »

Charly hat geschrieben:1. wenn das Fenster nicht im Vordergrund ist 'steht' die
Ausgabe, warum? und wie kann man das aendern
Weil es mit dem Cursor zu tun hat, der nur im EditorGadget aktiv ist, wenn das Fenster auch den Fokus hat.
Wenn das Fenster nicht im Vordergrund ist, dann ist gleichzeitig auch dein EditorGadget nicht aktiv. Also auch kein Cursor.
Du könntest beispielsweise folgenden Code verwenden: http://www.rsbasic.de/aktualisierung/wi ... crollen.pb
Charly hat geschrieben:2. wenn das Prg startet rollt die ausgabe nach unten
dann erscheint Re. der Rollbalken aber im Fenster scrollt
es nicht hoch, erst wenn i in das Fenster reinklicke, wie
aendere i das ?
3. wenn jetzt das Fenster am scrolle ist und ich mit der
Maus den Scrollbalken hochschiebe um zb. was zu suchen
springt er bei der naechste ausgabe sofort unten, finde i
nicht gut, i moechte das er dann dort bleibt bis zb. ctrl+end
gedrueckt wird oder er wird bis unten hin bewegt, auch hier:
wie ist das zu loesen ?
Das liegt am Cursor, der sich am Ende befindet. Wenn eine neue Zeile hinzugefügt wird, ist der Cursor weiterhin am Ende und es scrollt deshalb mit.

Wie man das ausschaltet, dass er nicht mitscrollt, wenn man selber scrollen möchte, weiß ich grad gar nicht. :roll:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Omi
Beiträge: 143
Registriert: 25.03.2013 09:59

Re: hilfe zu AddGadgetItem bitte

Beitrag von Omi »

Hallo Charly, hier iss auch Einer :wink:

Das ganze Verhalten beim Hinzufügen von Zeilen wird wohl ans System weitergereicht.
Dein Code (mit hinzugefügter Routine zum Neuzeichnen nach jedem AddGadgetItem(), damit man überhaupt was sieht) verhält sich auf Linux-Xubuntu scheinbar so wie Du es gerne hättest (bzw. wie ich's verstanden hab).
Also jeder Eingriff müßte hier sehr system-spezifisch ausfallen.

Gruß
Charly, der 2.
PureBasic Linux-API-Library: http://www.chabba.de
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: hilfe zu AddGadgetItem bitte

Beitrag von udg »

zu Punkt 1, starten und ins EditorGadget klicken, dann mal in ein anderes Fenster oder auf den Desktop. Nun kannst du sehen wie es fleißig weiterscrollt.
Um nach Resume wieder das Scrollen global sehen zu können, musst Du wieder in das EditorGadget klicken. Dies müsste man automatisch callen, dass man nicht erst reinklicken muss. Das Klick Event hab ich jedoch nicht eingebaut.


Die anderen Punkte habe ich auch mit eingepflanzt, aber da muss noch gefeilt werden. Geht hier jedoch gut ( Windows 7 64bit )

Code: Alles auswählen

; Prozedur für Pause und Resume der Auflistung
Procedure Thread (*zzz)
  
  Repeat
    
    i = Random(125)
    AddGadgetItem(2,-1,Str(i)+ " ",0,0)
    Delay(60)

  ForEver
 EndProcedure
 
Procedure mkwindowandbutton()
 
  If OpenWindow(0,0,0,800,400," TEST ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget)
   
    EditorGadget(2,10,6,WindowWidth(0)-20,WindowHeight(0)-40)
    SetGadgetColor(2, #PB_Gadget_BackColor, $666666): SetGadgetColor(2,#PB_Gadget_FrontColor, $00FFFF)
    ButtonGadget(1,10,370,60,25,"anhalten")
    ButtonGadget(3,80,370,60,25,"weiter")
    ButtonGadget(4,150,370,90,25,"alles löschen")
  EndIf
  
EndProcedure

mkwindowandbutton()

Define A = CreateThread(@Thread(), #NUL) ; erstelle Pause / Resume Thread
SetGadgetState(2, #PB_EventType_Focus);EditorGadget hat Mausklick bekommen und zeigt nun unten den Auflistungsfortschritt an auch wenn Du wo anders hinklickst"

Repeat
  Event = WindowEvent()
  eventtype = EventType() 
  EventGadget = EventGadget()
  
  SetForegroundWindow_(FindWindow_(0," TEST ")) ;Fenster Fokus beibehalten wenn Du wo anders ausserhalb deines Tools klickst 
  
;=================
;- unsere Buttons
;=================
  If EventGadget = 1
     PauseThread(A)
     Debug "Auflistung angehalten"
          
     ElseIf EventGadget = 3
             ResumeThread(A)
             Debug "Auflistung geht weiter"
            
             ElseIf EventGadget = 4
                     SetGadgetText(2," ")  
                     Debug "EditorGadget Inhalt gelöscht"
  EndIf 
   
Until Event = #PB_Event_CloseWindow:End
Ich hoffe das hilft wirtschaften
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: hilfe zu AddGadgetItem bitte

Beitrag von udg »

mal das von mir ausprobiert? bringt das etwas?
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Charly
Beiträge: 39
Registriert: 20.02.2010 20:10

Re: hilfe zu AddGadgetItem bitte

Beitrag von Charly »

Danke an alle f. die Hilfe,
hab z.Z. von der 'Chefin' des Hauses ein paar wichtige Auftraege
die i z.Z. zuerst abarbeiten muss hihihi , danach werde ich euch wieder
belaestigen

@udg es laeuf wenn das Fenster nicht im Fokus ist, mehr konnte ich noch nicht testen

vG & einen schoenen Sonntag
Charly
vlG Charly / PB 5.42 x86
Antworten