Datum
-
Wie wäre es, wenn du den Code nicht in OnDraw schreibst (lies mal nach, wann OnDraw aufgerufen wird, du kriegst graue Haare...)
... sondern in OnLButtonDown oder vielleicht gleich eine Menühandlerfunktion?
Oder gib die Werte dem Dialog mit. Du kannst dem Dialog eine Membervariable geben, wo das alles drin steht.
Ich hab leider immernoch nicht das Kapitel gelesen, also zu wenig Ahnung von ADO - sonst würde ich dir mal deine Anwendung wieder in "normale" Bahnen schieben.
Warum machst du das eigentlich in einem Dialog und nicht in einem Formview? Gibt es nicht sogar einen CAdoRecordView oder so ähnlich?
-
habs endlich geschafft
anstatt dem FALSE einfach TRUE eingeben
-
Wo?
..aber wenns geht ist ja gut.
-
m_pDialog->UpdateData(TRUE);
andere Richtung
nur kann ich dann keine Daten mehr von der Datenbank mehr holen
Aber ich will ja eh in die Datenbank reinschreiben...egal
-
Die Stelle, die ich befürchtet hatte...
Lies dir das hier bitte mal durch.
BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
Return Value
Nonzero if the operation is successful; otherwise 0. If bSaveAndValidate is TRUE, then a return value of nonzero means that the data is successfully validated.
Parameters
bSaveAndValidate
Flag that indicates whether dialog box is being initialized (FALSE) or data is being retrieved (TRUE).
Remarks
Call this member function to initialize data in a dialog box, or to retrieve and validate dialog data.
The framework automatically calls UpdateData with bSaveAndValidate set to FALSE when a modal dialog box is created in the default implementation of CDialog::OnInitDialog. The call occurs before the dialog box is visible. The default implementation of CDialog::OnOK calls this member function with bSaveAndValidate set to TRUE to retrieve the data, and if successful, will close the dialog box. (If the Cancel button is clicked in the dialog box, the dialog box is closed without the data being retrieved.)
-
morgen
das hab ich auch schon mal gelesen...
Jetzt ist's klar, dafür kann ich nicht mehr von der Datenbank lesenaber ne andere Frage, weißt du warum das
GetDlgItem(IDC_DATETIMEPICKER4)->SetWindowText("");
nur Dialogbasierend geht?
-
Was meinst du mit dialogbasieren? In einem Formview geht das auch.
Wenn ich mir das ansehe, habe ich die Vermutung, dass du in dem DateTimeCtrl "nichts" anzeigen willst.
Das geht leider nicht so, wie du gerade vor hast. Guck mal in die Eigenschaften von dem Control, da ist irgendwo ein Häkchen, wenn du das setzt, kriegt das Control ein Häkchen.Wie du das Teil behandelst, findest du hier:
http://www.c-plusplus.net/forum/viewtopic.php?t=81779&highlight=gettime+gdtvalid
http://www.c-plusplus.net/forum/viewtopic.php?t=60380&highlight=cdatetimectrlDie Funktion SetFormat vom CDateTimeCtrl könntest du vielleicht auch interessant finden, denn wenn man ein Leerzeichen nimmt, sieht das Control leer aus. Nur um etwas einzugeben muss man wieder ein Datum zulassen. Ist also etwas kompliziert. Dafür aber dummusersicherer als ein normales Eingabefeld.
-
yup
ich hab jetzt 2 Steuerelemente Datum/Zeitauswahl
( Auswertedatum und Versuchsdatum) und beide zeigen mir immer das aktuelle Datum. Möchte aber bloß bei Auswertedatum,dass es mir immer das aktuelle Datum anzeigt. und bei Versuchsdatum sollte nichts drin stehen (von Hand eingeben oder über die Datumauswahlbox)
beide Varibalen sind jetzt vom Typ COleDateTimeWerds vielleicht mal mit CDateTimeCtrl probieren, wies du beschrieben hast
Danke
-
"Guck mal in die Eigenschaften von dem Control, da ist irgendwo ein Häkchen, wenn du das setzt, kriegt das Control ein Häkchen. "
da meinst du aber schon rechte Maustaste und dann Eigenschaften
aber da seh ich nichts gescheites wo ich ein Häkchen setzten sollte
(Allgemein,Formate,ErweiterteFormate)
-
Das ist unter Formate und heißt "Nichts anzeigen"
Sorry, war vorhin zu faul zum Nachgucken...
-
no problem
ist das richtig, ich seh dann vor dem Datum ein Kästchen mit einem Häkchen drin?
(ich lass mal COleDateTime lieber stehen stehen, sonst passt das andere Zeugs nicht mehr und bin dann voll im Sumpf...)
Ich probiers jetzt mal mit SetTime...
-
hi
wenn das löschen möcht,muss ich doch bloß dass hier eingeben oder?* Checkbox löschen (default-Wert NULL wird übergeben) */ m_oledtVersuchsdatum.SetTime();
bringt mir aber folgende Fehlermeldung
error C2660: 'SetTime' : Funktion akzeptiert keine 0 Parameter
-
Du versuchst das mit der WERT-Variablen. Du brauchst aber die CONTROL-Variable.
Deswegen brauchst du die Variable aber nicht löschen. Du kannst einfach die andere anlegen.
Oder du holst dir den Zeiger.CDateTimeCtrl* pCtrl = dynamic_cast<CDateTimeCtrl*>(GetDlgItem(IDC_DATETIMEPICKER2)); ASSERT(pCtrl); pCtrl->SetTime();
Die ID ist geraten. Kann sein, dass du sie anpassen musst.
-
frag lieber kurz nach,bevor ich alles lösch...
Hab ich das so richtig verstanden, ich muss nun die Variable löchen und eine neue Variable mit Kategorie "WERT" und Typ "CTime" anlegen?
-
äh ja
hat sich erledigt....
sorry hab dein Beitrag nicht ganz gelesen bzw. übersehen
-
NEEEEEEIIIIIIIIN!
Nochmal, diesmal bitte LESEN:
Deswegen brauchst du die Variable aber nicht löschen. Du kannst einfach die andere anlegen.
Also: Lass alles wie es ist, du machst jetzt was DAZU.
Klassenassi auf. Membervariable zu dem Control anlegen.
Kategorie Control!!!
Als Typ sollte dann CDateTimeCtrl stehen.Wenn du dir das nicht zutraust, kannst du den Quelltext verwenden, den ich gepostet habe.
---------------------------------
Edit: Okay - Brille kaufen.
-
jaja schon gut, hab's halt beim ersten Mal durchlesen nicht wahrgenommen,sorry
Yup,aber sehen tu ich das datum immer noch, wollte eigentlich dass man gar nichts sieht wenn man das Programm startet und dann ein Datum auswählt
-
Tja, dann wird es schwierig für dich. Das, was du jetzt hast, ist die Lösung, die Microsoft für richtig hält.
Alles andere ist Eigenbau. Guck, ob du bei codeproject.com was findest. Schau dir da an, wie man eigene Controls schreibt.
Klingt nach viel Arbeit - ist es. Klingt kompliziert - finde ich auch.Wenn dein Control fertig ist, kannst du es mir schicken - ich hab mich auch schon über das Standardcontrol geärgert, aber ein eigenes schreiben habe ich hinten an gestellt.
-
okay danke dir für die Hilfe, ich lass es dann so...ist ja auch nicht schlimm
wenn du es schon kompliziet findest was soll ich dann sagen *g*
Jetzt mach nichts mehr an der Datumgeschichte rum...