PureRequester - Neue DialogBoxen-Library für PB

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
al90
Beiträge: 1101
Registriert: 06.01.2005 23:15
Kontaktdaten:

PureRequester - Neue DialogBoxen-Library für PB

Beitrag von al90 »

Hi All,

PureRequester ist eine UserLibrary die einige neue DialogBoxen für PB zur verfügung stellt.
Dabei werden die Buttontexte automatisch in Deutsch angezeigt, wenn die Systemsprache
auch in Deutsch eingestellt ist. Anderfalls werden Englische ButtonTexte angezeigt.
Ausserdem habe ich mich bemüht, die Requester Systemnahe zu gestalten. Soll heißen,
das sie das ParentWindow auch automatisch blocken. Also genauso wie die Windows-
eigenen Requester. Ich hoffe der eine oder andere kann was damit anfangen.

Download entweder über den LibraryUpdater oder halt von http://www.puretools.eu :wink:
PureRequester DOC hat geschrieben:
Befehlsübersicht

PR_CheckBoxRequester()
PR_DateRequester()
PR_InputRequester()
PR_MultiButtonRequester()
PR_RgbRequester()
PR_TimeRequester()



PR_CheckBoxRequester(Title$, Text$)
Diese Funktion öffnet eine DialogBox mit einer CheckBox. D.H. das neben den üblichen "JA & NEIN" Buttons,
auch eine CheckBox mit dem Text Diese Meldung nicht mehr anzeigen unten links angezeigt wird.
Parameter
Title$ = Der Name des Titels für die DialogBox.
Text$ = Der Text der in der DialogBox erscheinen soll. (Mehrzeilige Texte können durch "|" getrennt werden.)
Rückgabewert
#PureRequester_Yes - Wenn der JA Button ohne CheckBox-Hacken betätigt wurde.
#PureRequester_No - Wenn der NEIN Button ohne CheckBox-Hacken betätigt wurde.
#PureRequester_YesWithCheckBox - Wenn der JA Button mit CheckBox-Hacken betätigt wurde.
#PureRequester_NoWithCheckBox - Wenn der NEIN Button mit CheckBox-Hacken betätigt wurde.
Hinweis
Alternativ kann natürlich auch #IDYES oder #IDNO (Bei inaktivierter CheckBox) benutzt werden.



PR_DateRequester()
Diese Funktion öffnet eine DialogBox zur eingabe eines Datums.
Parameter
Keine
Rückgabewert
Das gewählte Datum im PureBasic format oder #PureRequester_CancelDate wenn die DialogBox abgebrochen wurde.
Hinweis
Wenn die Systemsprache nicht in Deutsch eingestellt ist, wird der Tag & Monat in der DialogBox vertauscht.



PR_InputRequester (Title$, Text$, DefaultText$, StoredText$)
Diese Funktion öffnet eine DialogBox zur Eingabe eines Textes über einer Editierbaren ComboBox.
Parameter
Title$ = Der Name des Titels für die DialogBox.
Text$ = Der Text der in der DialogBox erscheinen soll.
DefaultText$ = Der vorgabetext der in dem Eingabefeld erscheinen soll.
StoredText$ = Mehrzeilige durch "|" getrennte Texte, die in der ComboBox eingetragen werden sollen.
Rückgabewert
Der eingegebene Text oder ("") wenn die DialogBox abgebrochen wurde.



PR_MultiButtonRequester (Title$, Text$)
Diese Funktion öffnet eine DialogBox mit mehreren Buttons. (JA / NEIN / JA ALLE / NEIN ALLE / ABBRECHEN)
Parameter
Title$ = Der Name des Titels für die DialogBox.
Text$ = Der Text der in der DialogBox erscheinen soll. (Mehrzeilige Texte können durch "|" getrennt werden.)
Rückgabewert
#PureRequester_Yes - Wenn der JA Button betätigt wurde.
#PureRequester_No - Wenn der NEIN Button betätigt wurde.
#PureRequester_YesAll - Wenn der JA ALLE Button betätigt wurde.
#PureRequester_NoAll - Wenn der NEIN ALLE Button betätigt wurde.
#PureRequester_Cancel - Wenn der ABBRECHEN Button betätigt wurde.
Hinweis
Alternativ kann natürlich auch #IDYES, #IDNO und #IDCANCEL (Bei JA / NEIN / ABBRECHEN) benutzt werden.



PR_RgbRequester (Color.l)
Diese Funktion öffnet eine DialogBox zum auswählen einer Farbe. (RGB-Werte)
Parameter
Color = Der Startwert der beim öffnen der DialogBox eingetragen werden soll.
Rückgabewert
Die ausgewählte Farbe oder #PureRequester_CancelRGB wenn die DialogBox abgebrochen wurde.



PR_TimeRequester (Title$, Text$, Seconds.l, DefaultButton.l)
Diese Funktion öffnet eine DialogBox, die sich nach Ablauf einer voreingestellten Zeit von selbst schließt.
Parameter
Title$ = Der Name des Titels für die DialogBox.
Text$ = Der Text der in der DialogBox erscheinen soll. (Mehrzeilige Texte können durch "|" getrennt werden.)
Seconds = Eine vorgegebene Zeit in Sekunden, nach der sich die DialogBox von selbst schließen soll.
DefaultButton = Der Button der nach Ablauf der Zeit ausgelöst werden soll. (Event)
Rückgabewert
#PureRequester_Yes - Wenn der JA Button betätigt wurde.
#PureRequester_No - Wenn der NEIN Button betätigt wurde.
Hinweis
Alternativ kann natürlich auch #IDYES oder #IDNO benutzt werden.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von TomS »

Heyho.
Ein paar Screenshots wären nicht schlecht ;)
Benutzeravatar
al90
Beiträge: 1101
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von al90 »

TomS hat geschrieben:Heyho.
Ein paar Screenshots wären nicht schlecht ;)
Biddeschööön. :)

Bild

Bild

Bild

Bild

Bild

Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von STARGÅTE »

[OT]
PR_MultiButtonRequester()

Ja ? Nein ? Ja Alle ? Nein Alle ? Abbrechen ? .... Ja Ab und Zu ? Nein Ab und Zu ? Ja jedes Zweite ? Nein jedes Dritte ? Ja jedes 4. und Nein jedes 3. und jedes 12. Abbrechen ?

ich finde diese Optionenn sollte mit rein :lol:
[/OT]

Im Ernst, nette Sache ... aber ich bin überhaupt kein Freund dieser Popups ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von Thorium »

Ich warte immernoch auf ein Programm, was mir nen zusätzlichen Button in Message Boxes einbaut mit der Aufschrift. "Halts Maul und mach einfach." :mrgreen:
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von Rings »

Eigentlich keine schlechte Sache.
Solche Standard-Dialoge benötigt man doch schon mal öfters.
Allerdings fehlt der source um sowas auch
unter linux/osx/x64 (gescheiht) nutzen zu können.
Und beim nächsten PB-update funktioniert wieder was nicht.
Rings hat geschrieben:ziert sich nich beim zitieren
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von Kaeru Gaman »

ich stimme Rings zu.
die Gesamtfunktionalität wird ja nicht so geheimnisvoll sein, dass man es nicht auch als Include veröffentlichen könnte.
und dann hat man zusätzlich zur Portabilität auch noch den Lerneffekt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von Andesdaf »

schöne Sache :allright:
Win11 x64 | PB 6.20
Benutzeravatar
al90
Beiträge: 1101
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von al90 »

STARGÅTE hat geschrieben:[OT]
PR_MultiButtonRequester()

Ja ? Nein ? Ja Alle ? Nein Alle ? Abbrechen ? .... Ja Ab und Zu ? Nein Ab und Zu ? Ja jedes Zweite ? Nein jedes Dritte ? Ja jedes 4. und Nein jedes 3. und jedes 12. Abbrechen ?

ich finde diese Optionenn sollte mit rein :lol:
[/OT]
Für ein Gagproggi wäre der aufwand aber wohl zu groß. :lol:
Im Ernst, nette Sache ... aber ich bin überhaupt kein Freund dieser Popups ^^
Manchmal werden sie aber benötigt. Z.B bei Dateimanagern braucht man sowas schonmal öfters.
Thorium hat geschrieben:Ich warte immernoch auf ein Programm, was mir nen zusätzlichen Button in Message Boxes einbaut mit der Aufschrift. "Halts Maul und mach einfach." :mrgreen:
Für Vista würde ich mir sowas auch schon gerne wünschen. :mrgreen:
Andesdaf hat geschrieben:schöne Sache :allright:
Danke! :D

@Rings & @Kaeru Gaman

Hab hier mal einen kleinen Code zusammengestellt. Den Rest kann sich ja jetzt jeder selbst weiter ausbauen. :wink:

Code: Alles auswählen

Procedure.l CheckBoxRequester(Title$, Text$)

If GetUserDefaultLangID_() & $FF = #LANG_GERMAN
  Ja$="Ja"
  Nein$="Nein"
  Msg$="Diese Meldung nicht mehr anzeigen"
Else
  Ja$="Yes"
  Nein$="No"
  Msg$="Don't show again this message"
EndIf

If ExamineDesktops()
  DeskWidth=DesktopWidth(0)
  DeskHeight=DesktopHeight(0)
EndIf

txt$=ReplaceString(Text$,#CRLF$,"|")
Text$=ReplaceString(txt$,#LFCR$,"|")
txt$=ReplaceString(Text$,#CR$,"|")
Text$=ReplaceString(txt$,#LF$,"|")
txt$=ReplaceString(Text$,"|",Chr(10))
Text$=txt$
If Right(Text$,1)<>Chr(10):Text$+Chr(10):EndIf

oldwin=GetActiveWindow_()
win=OpenWindow(#PB_Any,50,50,400,200,Title$,#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered,oldwin)

If win
  EnableWindow_(oldwin,#False)

  fnt=LoadFont(#PB_Any,"Arial",9)
  If fnt
    SetGadgetFont(#PB_Default,FontID(fnt))
  EndIf

  sum=CountString(Text$,Chr(10))
  If StartDrawing(WindowOutput(win))
    If fnt : DrawingFont(FontID(fnt)) : EndIf
    For i=1 To sum
      c$=StringField(Text$,i,Chr(10))
      height+TextHeight(c$)
      If TextWidth(c$)>width
        width=TextWidth(c$)+95
      EndIf
    Next
    If width<480:width=480:EndIf
    If width>DeskWidth:width=DeskWidth-20:EndIf
    height+10
    StopDrawing()
  EndIf

  x=(DeskWidth/2)-((width)/2)
  y=(DeskHeight/2)-((height+111)/2)

  ResizeWindow(win,x,y,width,height+111)
  icon=LoadIcon_(0,#IDI_QUESTION)
  ImageGadget=ImageGadget(#PB_Any,25,25,10,10,icon)
  TextGadget=TextGadget(#PB_Any,80,33,width-85,height,Text$)
  CheckBox=CheckBoxGadget(#PB_Any,15,height+72,220,25,Msg$)
  x=width-120
  Yes=ButtonGadget(#PB_Any,x-105,height+70,100,27,Ja$)
  No=ButtonGadget(#PB_Any,x,height+70,100,27,Nein$)
  MessageBeep_(#MB_ICONQUESTION)

  Repeat
    Event=WaitWindowEvent()
    If Event=#PB_Event_Gadget
      st=EventGadget()
      If st=Yes : state=#IDYES : EndIf
      If st=No : state=#IDNO : EndIf
      If st<>CheckBox : Break : EndIf
    EndIf
  Until Event=#PB_Event_CloseWindow

  If Event=#PB_Event_CloseWindow
    state=#IDNO
  EndIf
  If GetGadgetState(CheckBox)=#True
    If state=#IDYES : state=-6 : EndIf
    If state=#IDNO : state=-7 : EndIf
  EndIf

  SetGadgetFont(#PB_Default, #PB_Default)
  If fnt : FreeFont(fnt) : EndIf
  DestroyIcon_(icon)
  EnableWindow_(oldwin,#True)
  CloseWindow(win)

  ProcedureReturn state

EndIf

EndProcedure


If OpenWindow(0, 100, 100, 600, 400, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  Debug CheckBoxRequester("Frage","Möchten Sie das Programm jetzt wirklich beenden ?")
  CloseWindow(0)
EndIf

End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: PureRequester - Neue DialogBoxen-Library für PB

Beitrag von Kaeru Gaman »

öhm... ist ja lieb gemeint...

aber besser anständig OpenSource, also den Code der kompletten Lib als Include, ausführlich kommentiert, als Bestandteil des Downloadpaketes.

mit ausführlich meine ich hier kein Anfängertutorial,
sondern einfach einen ausführlichen Kommentarkopf mit der kompletten Aufruf-Konvention,
und an besonderen Stellen beikommentiert was da gemacht wird.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten