DateGadget ohne Datum

Anfängerfragen zum Programmieren mit PureBasic.
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

DateGadget ohne Datum

Beitrag von gnaps »

Hallo Forum,

ich erstelle eine Datenbank in der 4 verschiedene Datumsfelder für verschiedene Ereignisse sind.
Beim erstellen eines neuen Datensatzes soll das aktuelle Datum im ersten DateGadget eingefügt werden.

Dies ist kein Problem.

Jedoch sollen die anderen DateGadgets leer bleiben und erst durch den Anwender gefüllt werden.

Wie erstelle ich ein leeres DateGadget das auf die Eingabe des Anwenders wartet ??

Gruß gnaps
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
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: DateGadget ohne Datum

Beitrag von ts-soft »

DateGadget ohne startwert geht nicht und macht keinen Sinn, was soll den der Kalender anzeigen, wenn der
geöffnet wird?

Ein Eingabefeld für ein Datum wirst Du Dir wohl selber programmieren müssen.

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
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: DategGadget ohne Datum

Beitrag von rolaf »

gnaps hat geschrieben:Hallo Forum,

ich erstelle eine Datenbank in der 4 verschiedene Datumsfelder für verschiedene Ereignisse sind.
Beim erstellen eines neuen Datensatzes soll das aktuelle Datum im ersten DateGadget eingefügt werden.

Dies ist kein Problem.

Jedoch sollen die anderen DateGadgets leer bleiben und erst durch den Anwender gefüllt werden.

Wie erstelle ich ein leeres DateGadget das auf die Eingabe des Anwenders wartet ??

Gruß gnaps
Nun, ich würde jedes deiner DateGadgets mit dem aktuellen Datum füllen und beim Abspeichern prüfen ob die drei übrigen verändert wurden. Wenn nicht wird kein Datum gespeichert oder der Anwender darauf hingewiesen doch bitte eine Angabe vorzunehmen.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: DateGadget ohne Datum

Beitrag von gnaps »

Hallo,

zuerst vielen Dank für die Antworten.

Leider kann ich hier das DateGadget nicht verwenden. Ich nehme jetzt ein StringGadget, setze einen Button neben dem
Gadget und öffne ein CalenderGadget und hole mir darüber das Datum.

Funkt soweit ganz gut, jedoch wenn ich ein CalenderGadget öffne, muss ich das über andere StringGadgets
öffnen, fahre ich jetzt mit der Maus auf dem Kalender herum, kommen die darunterliegenden Gadgets zum Vorschein.

Wie kann ich das verhindern ??
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: DateGadget ohne Datum

Beitrag von HeX0R »

Setze das CalenderGadget einfach in ein neues kleines (Popup-)Fenster oder gib uns ein wenig Beispielcode.

...und ein Fragezeichen genügt i.d.R.
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: DateGadget ohne Datum

Beitrag von gnaps »

an das Extra-Fenster habe ich auch schon gedacht, jedoch möchte ich das CalenderGadget unter dem dazugehörigen StringGadget
plazieren um so eine bessere Zugehörigkeit zu erzielen.

Mein Code ist zu Groß für das Problem.
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: DateGadget ohne Datum

Beitrag von gnaps »

hier doch einen code der das ganze aufzeigt.

Code: Alles auswählen


EnableExplicit

Global xFensterButton.i

Global KalenderX.i=230
Global KalenderY.i=330
Global KalenderW.i=200
Global KalenderH.i=180

Enumeration

  
  #datum1
  #datum2

#datum1_txt
#datum2_txt


#kalender
#datum

#button
EndEnumeration
 
 OpenWindow(0,0,0, 1000, 700, "Testfenster",#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_MinimizeGadget)
 TextGadget(#datum1_txt, 210, 415, 120, 20, "Datum-2", #PB_Text_Right)
 StringGadget(#datum1, 280, 300, 90, 25,"123")
 StringGadget(#datum2, 340, 410, 100, 25, "1232")

 ButtonGadget(#kalender,375,300,20,25,"T")
 Repeat 
   Select WaitWindowEvent() 
       
  Case #PB_Event_Gadget 
   Select EventGadget()
      
   Case #kalender
     CalendarGadget(#datum,KalenderX.i,KalenderY.i,KalenderW.i,KalenderH.i,0)
 
   EndSelect 
                
     Case #PB_Event_CloseWindow
       End      
     EndSelect 

ForEver
End
wenn die Maus jetzt im rechten Bereich des Kalenders bewegt wird, kommt das StringGadget 2 nach vorne.

warum?
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: DateGadget ohne Datum

Beitrag von RSBasic »

Ich hab mal einfach einen eigenen Code gebastelt, vielleicht ist es das was du brauchst:

Code: Alles auswählen

EnableExplicit

Define EventID

Procedure CalendarWindow(Gadget, X, Y, Width, Height)
  Protected GadgetRect.RECT
  
  GetWindowRect_(GadgetID(Gadget),@GadgetRect)
  
  If OpenWindow(1,GadgetRect\left,GadgetRect\Top+GadgetHeight(Gadget),Width,Height,"",#PB_Window_BorderLess,WindowID(0))
    CalendarGadget(3,0,0,Width,Height,0)
    
  EndIf
  
EndProcedure

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  StringGadget(1,100,100,200,20,"",0)
  ButtonGadget(2,GadgetX(1)+GadgetWidth(1),GadgetY(1),20,20,"T",0)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
        Case 2
          CalendarWindow(1, GadgetX(1), GadgetY(1), GadgetWidth(1)+GadgetWidth(2), 200)
        Case 3
          SetGadgetText(1,FormatDate("%dd.%mm.%yyyy", GetGadgetState(3)))
          CloseWindow(1)
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Was noch natürlich fehlt, ist die Abfrage, ob das Calendar-Window noch den Fokus hat. Wenn nicht, dann soll dieses automatisch geschlossen werden.
Und es ist natürlich nur ein Anfangsbeispielcode. Kann man aber noch aufbauen wie z.B., dass das Fenster erst dann geschlossen wird, wenn man wirklich auf ein Tag geklickt hat oder man fügt noch einen Button im Fenster hinzu.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
gnaps
Beiträge: 151
Registriert: 02.09.2008 13:02

Re: DateGadget ohne Datum

Beitrag von gnaps »

Hallo,

so jetzt habe ich das ganze mit einem neuen Fenster umgesetzt.
Jetzt habe ich noch eine Frage:

Kann ich das zweite geöffnete Window (Kalenderwindow) an das Window eins vom Hauptprgamm anheften.

Wäre schön, dann kann ich mein Hauptfenster verschieben und das Kalenderfenster (sollte es offen sind) verschiebt sich mit.
PureBasic Vollversion V 5.71 für Windows - Windows 10 (64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: DateGadget ohne Datum

Beitrag von RSBasic »

Naja, ich würds eher so machen, dass das Aufklappfenster automatisch geschlossen wird, wenn das Hauptfenster verschoben wird, weil das Aufklappfenster ja dann keinen Fokus mehr hat.
Das ist ja bei anderen Controls genauso. Wenn du beispielsweise ein ComboBoxGadget erstellst und die Liste aufklappst und anschließend das Hauptfenster verschiebst, dann wird die Liste ebenfalls automatisch geschlossen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten