Fenster gestalten

Anfängerfragen zum Programmieren mit PureBasic.
Abraxus
Beiträge: 22
Registriert: 13.01.2011 15:23

Fenster gestalten

Beitrag von Abraxus »

Hi, habe eine Frage zum allgemeinem "OpenConsole()"-Fenster.
Inwieweit kann man dieses Fenster optisch besser gestalten, so dass später ein ansehnlicher Abfragebildschirm entsteht.
Ich habe bislang nirgends davon gelesen und möchte nur diese vielleicht dumme Frage stellen ob man mit PureBasic genügend gestalterische Möglichkeiten hat.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Fenster gestalten

Beitrag von Kiffi »

Hallo Abraxus,

stellt sich die Frage, ob Du nicht von vornherein 'richtige' Fenster willst
(OpenWindow() & Co) anstatt Dich mit Konsolenfenstern herumzuquälen.

Was willst Du denn in dem Fenster darstellen?

Grüße ... Kiffi
a²+b²=mc²
Abraxus
Beiträge: 22
Registriert: 13.01.2011 15:23

Re: Fenster gestalten

Beitrag von Abraxus »

Also, es soll ein Abfragefenster sein. Dem Benutzer sollen mehrere beschriebene Eingabefelder vorgelegt sein, in denen dann die nachgefragten Daten eingetragen werden sollen.
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

Re: Fenster gestalten

Beitrag von ts-soft »

"DOS"-Zeichensatz findest Du hier: http://de.wikipedia.org/wiki/Codepage_437

Kleines Beispiel:

Code: Alles auswählen

EnableExplicit
Define i

OpenConsole()
ConsoleTitle("PureBasic Console")
ConsoleColor(14, 4)
EnableGraphicalConsole(1)
Print(Chr($C9))
For i = 1 To 78
  Print(Chr($CD))
Next
PrintN(Chr($BB))
For i = 1 To 3
  PrintN(Chr($BA))
Next
Print(Chr($C8))
For i = 1 To 78
  Print(Chr($CD))
Next
PrintN(Chr($BC))
ConsoleLocate(79, 1)
Print(Chr($BA))
ConsoleLocate(79, 2)
Print(Chr($BA))
ConsoleLocate(79, 3)
Print(Chr($BA))
ConsoleColor(14, 0)
ConsoleLocate(19, 2)
Print("Copyright 2011 by Thomas (ts-soft) Schulz")
ConsoleLocate(24, 7)
ConsoleColor(15, 0)
Print("Taste druecken zum beenden:")
Input()
CloseConsole()
Gruß
Thomas
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
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Fenster gestalten

Beitrag von Kiffi »

auch auf die Gefahr, dass ich jetzt Kloppe bekomme, hier
mal ein kleiner Beispielcode:

Code: Alles auswählen

Enumeration 
  #MainWindow
EndEnumeration
Enumeration 
  #MainWindow_lblGesamtmenge
  #MainWindow_txtGesamtmenge
  #MainWindow_lblMengeStoffA
  #MainWindow_txtMengeStoffA
  #MainWindow_cmdErgebnis
EndEnumeration

EnableExplicit

Define Quit, WWE
Define Zahl1.f, Zahl2.f, Ergebnis.f

If OpenWindow(#MainWindow, #PB_Ignore, #PB_Ignore, 332, 112, "Rezeptermittlung", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  TextGadget(#MainWindow_lblGesamtmenge, 10, 10, 175, 20, "Gesamtmenge (Kg):", #SS_CENTERIMAGE)
  StringGadget(#MainWindow_txtGesamtmenge, 190, 10, 135, 20, "")
  
  TextGadget(#MainWindow_lblMengeStoffA, 10, 35, 175, 20, "Menge Stoff A (100 g pro 1000 Kg):", #SS_CENTERIMAGE)
  StringGadget(#MainWindow_txtMengeStoffA, 190, 35, 135, 20, "")
  
  ButtonGadget(#MainWindow_cmdErgebnis, 125, 75, 80, 25, "Ergebnis")
  
  SetActiveGadget(#MainWindow_txtGesamtmenge)
  
  Repeat
    
    WWE = WaitWindowEvent()
    
    Select WWE
        
      Case #PB_Event_CloseWindow
        
        Select EventWindow()
            
          Case #MainWindow
            
            Quit = #True
            
        EndSelect
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
            
          Case #MainWindow_cmdErgebnis
            
            Zahl1 = ValF(GetGadgetText(#MainWindow_txtGesamtmenge))
            Zahl2 = ValF(GetGadgetText(#MainWindow_txtMengeStoffA))
            
            Ergebnis = Zahl2 / 1000 * Zahl1
            
            MessageRequester("Ergebnis", "Das Ergebnis lautet: " + StrF(Ergebnis),0)

        EndSelect
        
    EndSelect
    
  Until Quit = #True
  
EndIf
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Fenster gestalten

Beitrag von rolaf »

ts-soft hat geschrieben:

Code: Alles auswählen

Print("Copyright 2011 by Thomas (ts-soft) Schulz")
Ick schmeiss mich wech... :bounce:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Abraxus
Beiträge: 22
Registriert: 13.01.2011 15:23

Re: Fenster gestalten

Beitrag von Abraxus »

danke euch beiden! Der Code von Kiffi lässt sich leider nicht abspielen, aber am Code von Thomas konnt ich sehen, dass durchaus was möglich ist.
Lässt sich auch der komplett schwarze Hintergrund in eine andere Farbe umwandeln?
Kann man Kästchen für die Abfragefelder entwickeln?
Wo sind die Grenzen bei der Gestaltung des Fensters?
Muss all dies wissen um zu entscheiden ob ich mit PureBasic weiterarbeiten kann.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Fenster gestalten

Beitrag von Kiffi »

Abraxus hat geschrieben:Der Code von Kiffi lässt sich leider nicht abspielen
Fehlermeldung?

Grüße ... Kiffi
a²+b²=mc²
Abraxus
Beiträge: 22
Registriert: 13.01.2011 15:23

Re: Fenster gestalten

Beitrag von Abraxus »

"Zeile 19: Konstante nicht gefunden #SS_Centerimage."
Arbeite mit der Demo 4.51
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

Re: Fenster gestalten

Beitrag von ts-soft »

Abraxus hat geschrieben:Lässt sich auch der komplett schwarze Hintergrund in eine andere Farbe umwandeln?

Code: Alles auswählen

EnableExplicit
Define i, j

OpenConsole()
ConsoleTitle("PureBasic Console")
ConsoleColor(0, 1)
EnableGraphicalConsole(1)
For i = 0 To 79
  For j = 0 To 24
    ConsoleLocate(i, j)
    Print(" ")
  Next
Next
ConsoleLocate(0, 0)
ConsoleColor(14, 1)
Print(Chr($C9))
For i = 1 To 78
  Print(Chr($CD))
Next
PrintN(Chr($BB))
For i = 1 To 3
  PrintN(Chr($BA))
Next
Print(Chr($C8))
For i = 1 To 78
  Print(Chr($CD))
Next
PrintN(Chr($BC))
ConsoleLocate(79, 1)
Print(Chr($BA))
ConsoleLocate(79, 2)
Print(Chr($BA))
ConsoleLocate(79, 3)
Print(Chr($BA))
ConsoleColor(14, 1)
ConsoleLocate(19, 2)
Print("Copyright 2011 by Thomas (ts-soft) Schulz")
ConsoleLocate(24, 7)
ConsoleColor(15, 1)
Print("Taste druecken zum beenden:")
Input()
CloseConsole()
Ansonsten: Kannst Du alles machen, ist in einer Console aber sehr aufwendig!
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
Antworten