Aktuelle Zeit: 23.08.2019 21:29

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: StringGadget + DrawText
BeitragVerfasst: 28.01.2019 15:11 
Offline
Benutzeravatar

Registriert: 10.01.2019 12:16
Hallo,

eine erneute Frage an euch, wie kann es sein, dass dieser Code Funktioniert und der anschließende nicht ?
Ich probiere schon ein paar Tage an diesem Problem und finde keine vernünftige Antwort darauf... :|

Ich finde keine logischen Fehler :( Hoffe Ihr könnt mir helfen...

Vielen Dank schon einmal im voraus.

P.s. : Eins noch, im Programmcode gibt es bei der Ausgabe eine Zeilenverschiebung bitte nicht beachten.

Hier der funktionierende Code 1:
Code:
Global Dim MyGadgetHandle(20)
#information ="Hinweis"


Procedure WaitMouse()
  Repeat
    Dummy=WaitWindowEvent()
  Until Dummy=#PB_Event_RightClick       
  EndProcedure

Procedure SetzeEingabeFelder(WindowHandle,MyFontHandle)
 
 
  MVar$="TEST"
  FVar$="test"
 
  If Not StartDrawing(WindowOutput(WindowHandle))
    MessageRequester(#information,"Kein Zeichnen möglich!", #PB_MessageRequester_Ok|#PB_MessageRequester_Error)
    End
  EndIf
 
    TxTHoehe=22
    DrawingFont(FontID(MyFontHandle))
    DrawingMode(#PB_2DDrawing_Transparent)
   
    MyGadgetHandle(0)=OptionGadget(#PB_Any, 200, 200, TextWidth(MVar$)+40, TxTHoehe, MVar$ )
    MyGadgetHandle(1)=OptionGadget(#PB_Any, 200+TextWidth(MVar$)+40, 200, TextWidth(FVar$)+40, TxTHoehe, FVar$)
    SetGadgetState(MyGadgetHandle(0), 1)
   
    Restore EingabeFelderData
    For Dummy=2 To 4
      Read.s DataEingabeFelder$
      MyGadgetHandle(Dummy)=StringGadget (#PB_Any, 200, (TxTHoehe*(Dummy-1))+200, 250, TxTHoehe, DataEingabeFelder$)
      SetGadgetColor(MyGadgetHandle(Dummy), #PB_Gadget_FrontColor, RGB(80, 80, 80))
      ; DrawText(100, (TxTHoehe*(Dummy))+205, DataEingabeFelder$,RGB(255, 255, 255),RGB(90,90,90)) ; !!!!!!!!!!!!!!!!!!!!!! Hier der Fehler deshalb die Schleife  !!!!!!!!!!!!!!!!!!!!!!!!
    Next
   
    DrawText(100, 205, "Anklicken",RGB(255, 255, 255),RGB(90,90,90))
    Restore EingabeFelderData
    For Dummy=1 To 3 ; !!!!!!!!!!!!!!!!!!! Hier die funktionierende Schleife !!!!!!!!!!!!!!!!!!!!!
      Read.s DataEingabeFelder$
      DrawText(100, (TxTHoehe*(Dummy))+205, DataEingabeFelder$,RGB(255, 255, 255),RGB(90,90,90))
    Next
    SetActiveGadget(MyGadgetHandle(2))
   
    StopDrawing()
 
  DataSection
    EingabeFelderData:
    Data.s "Erster","Zweiter","Dritter" ; Etc.
  EndDataSection
 
EndProcedure

MyHauptFensterHandle=OpenWindow(#PB_Any,0, 0, 800, 600, "Irgendetwas",#PB_Window_SystemMenu) ;#PB_Window_Maximize|
If Not MyHauptFensterHandle
  MessageRequester(#information,"Fehler beim Öffnen vom Fenster", #PB_MessageRequester_Ok|#PB_MessageRequester_Error)
  End 
EndIf

MyFontHandle=LoadFont(#PB_Any, "Arial", 12)
If MyFontHandle
  SetGadgetFont(#PB_Default, FontID(MyFontHandle))   ; Arial Zeichensatz als neuen Standard festlegen
Else
  MessageRequester(#information,"Fehler beim Öffnen des Zeichensatzes", #PB_MessageRequester_Ok|#PB_MessageRequester_Error)
  End
EndIf

SetWindowColor(MyHauptFensterHandle, RGB(99, 99, 99))
SetzeEingabeFelder(MyHauptFensterHandle,MyFontHandle)

WaitMouse() ; Rightclick to exit
End


Und hier das Bild dazu:

https://www.magentacloud.de/lnk/hBrp0jYk

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hier der nicht funktionierende Code 2:
Code:
Global Dim MyGadgetHandle(20)
#information ="Hinweis"


Procedure WaitMouse()
  Repeat
    Dummy=WaitWindowEvent()
  Until Dummy=#PB_Event_RightClick       
  EndProcedure

Procedure SetzeEingabeFelder(WindowHandle,MyFontHandle)
 
 
  MVar$="TEST"
  FVar$="test"
 
  If Not StartDrawing(WindowOutput(WindowHandle))
    MessageRequester(#information,"Kein Zeichnen möglich!", #PB_MessageRequester_Ok|#PB_MessageRequester_Error)
    End
  EndIf
 
    TxTHoehe=22
    DrawingFont(FontID(MyFontHandle))
    DrawingMode(#PB_2DDrawing_Transparent)
   
    MyGadgetHandle(0)=OptionGadget(#PB_Any, 200, 200, TextWidth(MVar$)+40, TxTHoehe, MVar$ )
    MyGadgetHandle(1)=OptionGadget(#PB_Any, 200+TextWidth(MVar$)+40, 200, TextWidth(FVar$)+40, TxTHoehe, FVar$)
    SetGadgetState(MyGadgetHandle(0), 1)
   
    Restore EingabeFelderData
    For Dummy=2 To 4
      Read.s DataEingabeFelder$
      MyGadgetHandle(Dummy)=StringGadget (#PB_Any, 200, (TxTHoehe*(Dummy-1))+200, 250, TxTHoehe, DataEingabeFelder$)
      SetGadgetColor(MyGadgetHandle(Dummy), #PB_Gadget_FrontColor, RGB(80, 80, 80))
      DrawText(100, (TxTHoehe*(Dummy))+205, DataEingabeFelder$,RGB(255, 255, 255),RGB(90,90,90)) ;  !!!!!!!!!Hier der Fehler .. siehe GfX !!!!!!!!!!!!!!!!!!!
    Next
   
    DrawText(100, 205, "Anklicken",RGB(255, 255, 255),RGB(90,90,90))
    Restore EingabeFelderData
    For Dummy=1 To 3
      Read.s DataEingabeFelder$
     ; DrawText(100, (TxTHoehe*(Dummy))+205, DataEingabeFelder$,RGB(255, 255, 255),RGB(90,90,90)) ; !!!!!!!!!!!!!!!!!!!!!!!!! Hier nur ausge - "Rem't" damit der obere Fehler ersichtlich ist !!!!!!!!
    Next
    SetActiveGadget(MyGadgetHandle(2))
   
    StopDrawing()
 
  DataSection
    EingabeFelderData:
    Data.s "Erster","Zweiter","Dritter" ; Etc.
  EndDataSection
 
EndProcedure

MyHauptFensterHandle=OpenWindow(#PB_Any,0, 0, 800, 600, "Irgendetwas",#PB_Window_SystemMenu) ;#PB_Window_Maximize|
If Not MyHauptFensterHandle
  MessageRequester(#information,"Fehler beim Öffnen vom Fenster", #PB_MessageRequester_Ok|#PB_MessageRequester_Error)
  End 
EndIf

MyFontHandle=LoadFont(#PB_Any, "Arial", 12)
If MyFontHandle
  SetGadgetFont(#PB_Default, FontID(MyFontHandle))   ; Arial Zeichensatz als neuen Standard festlegen
Else
  MessageRequester(#information,"Fehler beim Öffnen des Zeichensatzes", #PB_MessageRequester_Ok|#PB_MessageRequester_Error)
  End
EndIf

SetWindowColor(MyHauptFensterHandle, RGB(99, 99, 99))
SetzeEingabeFelder(MyHauptFensterHandle,MyFontHandle)

WaitMouse() ; Rightclick to exit
End


Auch hier das passende Bild dazu:

https://www.magentacloud.de/lnk/skLpUvaO


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: StringGadget + DrawText
BeitragVerfasst: 28.01.2019 17:47 
Offline

Registriert: 30.03.2011 20:53
Schiebe mal dein Fenster aus dem Bildschirm und wieder zurück. Die selbstgemalten Texte verschwinden in beiden Codes.

Wenn du direkt auf das Fenster zeichnest, mußt du dich auch um das Neuzeichnen kümmern. Windows schickt das Event #PB_Event_Repaint, wenn ein Teil im Fenster neu gezeichnet werden muß.


Das Problem hast du nicht, wenn du stattdessen Gadgets verwendest, dann kümmert sich PB um die Redraws.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: StringGadget + DrawText
BeitragVerfasst: 28.01.2019 18:15 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Zum Beispiel CanvasGadget. Mit dem Flag #PB_Canvas_Container" kannst du auch Gadgets hinzufügen.

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: StringGadget + DrawText
BeitragVerfasst: 29.01.2019 14:03 
Offline
Benutzeravatar

Registriert: 10.01.2019 12:16
Alles klar werde umdenken müssen :oops:

Ihr macht es vielen von uns viel Leichter hier einzusteigen.

:praise: Vielen Dank für eure Hilfe :allright:

:bounce:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye