File: PROTOCOL\TProtocolDiffractometryDlg.cpp
1 //******************************************************************************
2 //Datei : TProtocolDiffractometryDlg.cpp
3 //Projekt : XCTL
4 //Subsystem : Protokollbuch
5 //Autor : Jens Klier <klier@informatik.hu-berlin.de>
6 // Institut fuer Informatik,
7 // Humboldt-Universitaet Berlin
8 //Inhalt : Implementation der Klasse TProtocolDiffractometryDlg
9 //******************************************************************************
10 //!neu klier Protokollbuch
11 #include "internls\evrythng.h"
12 #include "winresrc\rc_prtow.h" // Ressourcen-IDs
13 #include <commdlg.h>
14 #include <commctrl.h>
15
16 //! neu: klier Allgemeine Einstellungen
17 //#include "mespara\mespara.h"
18
19 #include "protocol\TProtocolLanguage.h"
20 #include "protocol\TProtocol.h"
21 #include "protocol\TProtocolDiffractometry.h"
22 #include "protocol\TProtocolDlg.h"
23 #include "protocol\TProtocolDiffractometryDlg.h"
24 #include "protocol\TProtocolManagePrintDlg.h"
25 #include "protocol\TProtocolDiffractometryManagePrintDlg.h"
26
27 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--
28
29 extern TProtocolLanguage *ProtocolLanguage;
30 extern TProtocolDiffractometry *ProtocolDiffractometry;
31 extern HINSTANCE hModuleInstance;
32
33 extern TModelessDlg *ProtoPrintDlg; //! neu Kullmann+Reinecker: TheModeless ersetzt durch ProtoPrintDlg
34
35 //!neu klier Allgemeine Einstellungen
36 //extern TMeasurementParameter *MeasurementParameter;
37
38
39 TProtocolDiffractometryDlg::TProtocolDiffractometryDlg(LPSTR Dlg, int idDlg) : TModalDlg(Dlg,hModuleInstance)
40 {
41 Protocol= ProtocolDiffractometry;
42 ProtocolCombobox.InitializeManageComboboxProtocolDlg(Protocol);
43 CurrentDlg= idDlg;
44 };
45
46
47 void TProtocolDiffractometryDlg::ShowDialog( int id , int idShow)
48 {
49 int ButtonShow;
50
51 switch (idShow)
52 {
53 case SHOW:
54 ShowDialog(CurrentDlg, HIDE);
55 ButtonShow= HIDE;
56 CurrentDlg= id;
57 ProtocolDiffractometry->SetCurrentDlg(id);
58 RefreshDlg(hwndDlg, CurrentDlg);
59 break;
60
61 case HIDE:
62 ButtonShow= SHOW;
63 break;
64
65 default:
66 return;
67 }
68
69 switch (id)
70 {
71 case MessungDlg:
72 if (idShow==SHOW) TabCtrl_SetCurSel(hTab, 0);
73 ShowDlgItem( id_GruppeMessungParameter, idShow );
74 ShowDlgItem( id_SpannungText, idShow );
75 ShowDlgItem( id_StromText, idShow );
76 ShowDlgItem( id_WellenlaengeText, idShow );
77 ShowDlgItem( id_MessdateiText, idShow );
78 ShowDlgItem( id_Spannung, idShow );
79 ShowDlgItem( id_SpannungEinheit, idShow );
80 ShowDlgItem( id_Strom, idShow );
81 ShowDlgItem( id_StromEinheit, idShow );
82 ShowDlgItem( id_Wellenlaenge, idShow );
83 ShowDlgItem( id_WellenlaengeEinheit, idShow );
84 ShowDlgItem( id_Messdatei, idShow );
85 break;
86
87 case ScanDlg:
88 if (idShow==SHOW) TabCtrl_SetCurSel(hTab, 1);
89 ShowDlgItem( id_GruppeScan, idShow );
90 ShowDlgItem( id_ScantypText, idShow );
91 ShowDlgItem( id_ScanachseText, idShow );
92 ShowDlgItem( id_SOffsetText, idShow );
93 ShowDlgItem( id_MinimumText, idShow );
94 ShowDlgItem( id_SchrittweiteText, idShow );
95 ShowDlgItem( id_MaximumText, idShow );
96 ShowDlgItem( id_Scantyp, idShow );
97 ShowDlgItem( id_Scanachse, idShow );
98 ShowDlgItem( id_SOffset, idShow );
99 ShowDlgItem( id_Minimum, idShow );
100 ShowDlgItem( id_Schrittweite, idShow );
101 ShowDlgItem( id_Maximum, idShow );
102 if ( AreaScan || Omega2Theta || (idShow == HIDE) )
103 {
104 ShowDlgItem( id_Scanachse1, idShow );
105 ShowDlgItem( id_Scanachse2, idShow );
106 }
107 if ( Continuous || (idShow == HIDE) )
108 {
109 ShowDlgItem( id_GeschwindigkeitText, idShow );
110 ShowDlgItem( id_Geschwindigkeit, idShow );
111 }
112 break;
113
114 case BlendeAbsorberDlg:
115 if (idShow==SHOW) TabCtrl_SetCurSel(hTab, 2);
116 ShowDlgItem( id_GruppeBlende, idShow );
117 ShowDlgItem( id_GruppeAbsorber, idShow );
118 ShowDlgItem( id_BhorizontalText, idShow );
119 ShowDlgItem( id_BvertikalText, idShow );
120 ShowDlgItem( id_BPSText, idShow );
121 ShowDlgItem( id_BPShorizontal, idShow );
122 ShowDlgItem( id_BPSvertikal, idShow );
123 ShowDlgItem( id_BPShorizontalEinheit, idShow );
124 ShowDlgItem( id_BPSvertikalEinheit, idShow );
125 ShowDlgItem( id_BDText, idShow );
126 ShowDlgItem( id_BDhorizontal, idShow );
127 ShowDlgItem( id_BDvertikal, idShow );
128 ShowDlgItem( id_BDhorizontalEinheit, idShow );
129 ShowDlgItem( id_BDvertikalEinheit, idShow );
130 ShowDlgItem( id_AArtText, idShow );
131 ShowDlgItem( id_AFaktorText, idShow );
132 ShowDlgItem( id_AArt, idShow );
133 ShowDlgItem( id_AFaktor, idShow );
134 break;
135
136 case DetektorDlg:
137 if (idShow==SHOW) TabCtrl_SetCurSel(hTab, 3);
138 ShowDlgItem( id_GruppeDetektor, idShow );
139 ShowDlgItem( id_GruppeMonitor, idShow );
140 ShowDlgItem( id_DetektorText, idShow );
141 ShowDlgItem( id_MesszeitText, idShow );
142 ShowDlgItem( id_MesszeitEinheit, idShow );
143 ShowDlgItem( id_ImpulseText, idShow );
144 ShowDlgItem( id_MonitorText, idShow );
145 ShowDlgItem( id_Detektor, idShow );
146 ShowDlgItem( id_Messzeit, idShow );
147 ShowDlgItem( id_Impulse, idShow );
148 ShowDlgItem( id_Monitor, idShow );
149 if ( PSD || (idShow == HIDE) )
150 {
151 ShowDlgItem( id_GruppePSD, idShow );
152 ShowDlgItem( id_MesskanalText, idShow );
153 ShowDlgItem( id_WinkelbereichText, idShow );
154 ShowDlgItem( id_WinkelbereichEinheit, idShow );
155 ShowDlgItem( id_KanalabstandText, idShow );
156 ShowDlgItem( id_KanalabstandEinheit, idShow );
157 ShowDlgItem( id_AddiereText, idShow );
158 ShowDlgItem( id_AddiereEinheit, idShow );
159 ShowDlgItem( id_Messkanal, idShow );
160 ShowDlgItem( id_Winkelbereich, idShow );
161 ShowDlgItem( id_Kanalabstand, idShow );
162 ShowDlgItem( id_Addiere, idShow );
163 }
164 if ( !PSD || (idShow == HIDE) )
165 {
166 ShowDlgItem( id_DistanzText, idShow );
167 ShowDlgItem( id_Distanz, idShow );
168 ShowDlgItem( id_DistanzEinheit, idShow );
169 }
170 break;
171
172 case BemerkungDlg:
173 if(idShow==SHOW) TabCtrl_SetCurSel(hTab, 4);
174 ShowDlgItem( id_GruppeBemerkung, idShow );
175 ShowDlgItem( id_BemerkungText, idShow );
176 ShowDlgItem( id_Bemerkung, idShow );
177 break;
178 }
179 };
180
181 void TProtocolDiffractometryDlg::EnableAreaScan( BOOL Status )
182 {
183 switch (Status)
184 {
185 case ENABLE:
186 AreaScan= TRUE;
187 ProtocolCombobox.DeleteComboboxItem(hScanmethodeList, "ContinuousScan");
188 CheckDlgButton(hwndDlg, id_Scanachse1, 1);
189 CheckDlgButton(hwndDlg, id_Scanachse2, 0);
190 if ( CurrentDlg == ScanDlg )
191 {
192 ShowDlgItem( id_Scanachse1, SHOW );
193 ShowDlgItem( id_Scanachse2, SHOW );
194 }
195 if (Continuous)
196 EnableContinuous( FALSE );
197 break;
198
199 case DISABLE:
200 AreaScan= FALSE;
201 ProtocolCombobox.AddComboboxItem(hScanmethodeList, "ContinuousScan");
202 if (!Omega2Theta)
203 {
204 ScanachseAnzahl= 1;
205 Scanachse= Scanachse1;
206 if ( CurrentDlg == ScanDlg )
207 {
208 ShowDlgItem( id_Scanachse1, HIDE );
209 ShowDlgItem( id_Scanachse2, HIDE );
210 }
211 }
212 if (Continuous)
213 EnableContinuous( TRUE );
214 break;
215 }
216 };
217
218 void TProtocolDiffractometryDlg::EnableOmega2Theta( BOOL Status )
219 {
220 switch (Status)
221 {
222 case ENABLE:
223 Omega2Theta= TRUE;
224 ScanachseAnzahl= 2;
225 Scanachse= Scanachse1;
226 CheckDlgButton(hwndDlg, id_Scanachse1, 1);
227 CheckDlgButton(hwndDlg, id_Scanachse2, 0);
228 if ( CurrentDlg == ScanDlg )
229 {
230 ShowDlgItem( id_Scanachse1, SHOW );
231 ShowDlgItem( id_Scanachse2, SHOW );
232 }
233 break;
234
235 case DISABLE:
236 Omega2Theta= FALSE;
237 if (!AreaScan)
238 {
239 ScanachseAnzahl= 1;
240 Scanachse= Scanachse1;
241 if ( CurrentDlg == ScanDlg )
242 {
243 ShowDlgItem( id_Scanachse1, HIDE );
244 ShowDlgItem( id_Scanachse2, HIDE );
245 }
246 }
247 break;
248 }
249 };
250
251 void TProtocolDiffractometryDlg::EnableContinuous( BOOL Status )
252 {
253 switch (Status)
254 {
255 case ENABLE:
256 Continuous= TRUE;
257 ProtocolCombobox.DeleteComboboxItem(hScantypList, "Omega2Theta");
258 SetDlgItemText(hwndDlg, id_MinimumText, ProtocolLanguage->TranslateParameter("Start:"));
259 SetDlgItemText(hwndDlg, id_MaximumText, ProtocolLanguage->TranslateParameter("Ende:"));
260 SetDlgItemText(hwndDlg, id_SchrittweiteText, ProtocolLanguage->TranslateParameter("Bereichsgröße:"));
261 if ( CurrentDlg == ScanDlg )
262 {
263 ShowDlgItem( id_GeschwindigkeitText, SHOW );
264 ShowDlgItem( id_Geschwindigkeit, SHOW );
265 }
266 if (Omega2Theta)
267 EnableOmega2Theta( FALSE );
268 if (AreaScan)
269 EnableAreaScan( FALSE );
270 break;
271
272 case DISABLE:
273 Continuous= FALSE;
274 ProtocolCombobox.AddComboboxItem(hScantypList, "Omega2Theta");
275 SetDlgItemText(hwndDlg, id_MinimumText, ProtocolLanguage->TranslateParameter("Minimum:"));
276 SetDlgItemText(hwndDlg, id_MaximumText, ProtocolLanguage->TranslateParameter("Maximum:"));
277 SetDlgItemText(hwndDlg, id_SchrittweiteText, ProtocolLanguage->TranslateParameter("Schrittweite:"));
278 ShowDlgItem( id_GeschwindigkeitText, HIDE );
279 ShowDlgItem( id_Geschwindigkeit, HIDE );
280 if (Omega2Theta)
281 EnableOmega2Theta( TRUE );
282 if (AreaScan)
283 EnableAreaScan( TRUE );
284 break;
285 }
286 };
287
288 void TProtocolDiffractometryDlg::EnablePSD( BOOL Status )
289 {
290 switch (Status)
291 {
292 case ENABLE:
293 PSD= TRUE;
294 if ( (Protocol->IsProtocolOn() || Protocol->IsProtocolReadOnly()) &&
295 !Protocol->IsProtocolDelete() )
296 Protocol->SetParameterReadOnly(Winkelbereich);
297 else
298 Protocol->SetParameterReadWrite(Winkelbereich);
299 ShowDlgItem( id_DistanzText, HIDE );
300 ShowDlgItem( id_Distanz, HIDE );
301 ShowDlgItem( id_DistanzEinheit, HIDE );
302 if ( CurrentDlg == DetektorDlg )
303 {
304 ShowDlgItem( id_GruppePSD, SHOW );
305 ShowDlgItem( id_MesskanalText, SHOW );
306 ShowDlgItem( id_WinkelbereichText, SHOW );
307 ShowDlgItem( id_WinkelbereichEinheit, SHOW );
308 ShowDlgItem( id_KanalabstandText, SHOW );
309 ShowDlgItem( id_KanalabstandEinheit, SHOW );
310 ShowDlgItem( id_AddiereText, SHOW );
311 ShowDlgItem( id_AddiereEinheit, SHOW );
312 ShowDlgItem( id_Messkanal, SHOW );
313 ShowDlgItem( id_Winkelbereich, SHOW );
314 ShowDlgItem( id_Kanalabstand, SHOW );
315 ShowDlgItem( id_Addiere, SHOW );
316 }
317 break;
318
319 case DISABLE:
320 PSD= FALSE;
321 Protocol->SetParameterReadWrite(Winkelbereich);
322 ShowDlgItem( id_GruppePSD, HIDE );
323 ShowDlgItem( id_MesskanalText, HIDE );
324 ShowDlgItem( id_WinkelbereichText, HIDE );
325 ShowDlgItem( id_WinkelbereichEinheit, HIDE );
326 ShowDlgItem( id_KanalabstandText, HIDE );
327 ShowDlgItem( id_KanalabstandEinheit, HIDE );
328 ShowDlgItem( id_AddiereText, HIDE );
329 ShowDlgItem( id_AddiereEinheit, HIDE );
330 ShowDlgItem( id_Messkanal, HIDE );
331 ShowDlgItem( id_Winkelbereich, HIDE );
332 ShowDlgItem( id_Kanalabstand, HIDE );
333 ShowDlgItem( id_Addiere, HIDE );
334 if ( CurrentDlg == DetektorDlg )
335 {
336 ShowDlgItem( id_DistanzText, SHOW );
337 ShowDlgItem( id_Distanz, SHOW );
338 ShowDlgItem( id_DistanzEinheit, SHOW );
339 }
340 break;
341 }
342 };
343
344 void TProtocolDiffractometryDlg::InitializeDlgItems(HWND hwnd)
345 {
346 PSD= Continuous= Omega2Theta= FALSE;
347 ScanachseAnzahl= 1;
348 Scanachse= Scanachse1;
349
350 hLfdNr= GetDlgItem( hwndDlg, id_LfdNr );
351
352 ProtocolCombobox.InitializeCombobox(hwnd, hNutzerList, id_Nutzer, Nutzer, "Nutzer");
353 ProtocolCombobox.InitializeCombobox(hwnd, hMaterialList, id_Material, Material, "Material");
354 ProtocolCombobox.InitializeCombobox(hwnd, hAArtList, id_AArt, AArt, "Absorber");
355 ProtocolCombobox.InitializeCombobox(hwnd, hScanartList, id_Scanart, Scanart, "-,LineScan,AreaScan");
356 ProtocolCombobox.InitializeCombobox(hwnd, hScanmethodeList, id_Scanmethode, Scanmethode, "-,StepScan,ContinuousScan");
357 ProtocolCombobox.InitializeCombobox(hwnd, hScantypList, id_Scantyp, Scantyp, "-,Omega,Omega2Theta");
358 ProtocolCombobox.InitializeCombobox(hwnd, hScanachseList, id_Scanachse, Scanachse, "Motor");
359 ProtocolCombobox.InitializeCombobox(hwnd, hDetektorList, id_Detektor, Detektor, "Device");
360 ProtocolCombobox.InitializeCombobox(hwnd, hMonitorList, id_Monitor, Monitor, "Device");
361
362 CheckRadioButton( hwndDlg, id_Scanachse1, id_Scanachse2, id_Scanachse1);
363 };
364
365 void TProtocolDiffractometryDlg::SaveDlgItems(HWND hwnd)
366 {
367 ProtocolCombobox.SaveCombobox(hwnd, id_Nutzer, "Nutzer");
368 ProtocolCombobox.SaveCombobox(hwnd, id_Material, "Material");
369 ProtocolCombobox.SaveCombobox(hwnd, id_AArt, "Absorber");
370 };
371
372 LPSTR TProtocolDiffractometryDlg::GetDlgItemText_LfdNr(HWND hwnd, LPSTR lLfdNr)
373 {
374 char buf[MaxString];
375
376 GetDlgItemText(hwnd, id_LfdNr, buf, MaxString);
377 strcpy(lLfdNr, buf);
378 return lLfdNr;
379 };
380
381 BOOL TProtocolDiffractometryDlg::TestDlgItemText_LfdNr(HWND hwnd, LPSTR lLfdNr)
382 {
383 char buf[MaxLfdNr];
384
385 strcpy(lLfdNr, "");
386 GetDlgItemText(hwnd, id_LfdNr, buf, MaxLfdNr);
387 if (ProtocolDiffractometry->TestLfdNr(buf))
388 {
389 strcpy(lLfdNr, buf);
390 return TRUE;
391 }
392 return FALSE;
393 };
394
395 BOOL TProtocolDiffractometryDlg::IsDlgItemModify(void)
396 {
397 BOOL bEdit;
398
399 bEdit= Edit_GetModify(hLfdNr);
400 if (bEdit)
401 Edit_SetModify(hLfdNr, 0);
402 return bEdit;
403 };
404
405 void TProtocolDiffractometryDlg::SetDlgItemText_LfdNr(HWND hwnd)
406 {
407 char buf[MaxString];
408
409 Edit_LimitText(hLfdNr, 8);
410 SetDlgItemText(hwnd, id_LfdNr, ProtocolDiffractometry->GetLfdNr(buf));
411 };
412
413 void TProtocolDiffractometryDlg::EnableDlgItem_LfdNr(BOOL Status)
414 {
415 EnableDlgItem(id_LfdNr, Status);
416 };
417
418 BOOL TProtocolDiffractometryDlg::Dlg_OnInit(HWND hwnd, HWND hwndCtl, LPARAM lParam)
419 {
420 TCITEM titem;
421 char buf[MaxString];
422 int iTab=0;
423
424 TProtocolDlg::Dlg_OnInit(hwnd, hwndCtl, lParam);
425
426 titem.mask= TCIF_TEXT;
427 titem.pszText= buf;
428 titem.cchTextMax= MaxString;
429 titem.iImage= -1;
430
431 strcpy(buf,"Messung");
432 TabCtrl_InsertItem(hTab, iTab++, &titem);
433
434 strcpy(buf,"Scan");
435 TabCtrl_InsertItem(hTab, iTab++, &titem);
436
437 strcpy(buf,"Blende/Absorber");
438 TabCtrl_InsertItem(hTab, iTab++, &titem);
439
440 strcpy(buf,"Detektoren");
441 TabCtrl_InsertItem(hTab, iTab++, &titem);
442
443 strcpy(buf,"Bemerkung");
444 TabCtrl_InsertItem(hTab, iTab++, &titem);
445
446 ProtocolLanguage->SetDiffractometryDlgLanguage(hwnd);
447
448 return TRUE;
449 };
450
451 void TProtocolDiffractometryDlg::Dlg_OnDestroy( HWND hwnd )
452 {
453 TProtocolDlg::Dlg_OnDestroy(hwnd);
454 };
455
456
457 BOOL TProtocolDiffractometryDlg::Dlg_OnSysCommand(HWND hwnd, int id, LPARAM lParam)
458 {
459 RECT Rect;
460
461 switch ( id )
462 {
463 case cm_ProtcolDeutsch:
464 case cm_ProtcolEnglisch:
465 ProtocolLanguage->SetDiffractometryDlgLanguage(hwnd, id);
466 if ( ProtoPrintDlg )
467 {
468 _FREEOBJ(ProtoPrintDlg);
469 GetClientRect( GetDlgItem(hwndDlg, id_Skizze), &Rect );
470 ProtoPrintDlg= new TProtocolDiffractometryManagePrintDlg( "ProtocolDiffractometryManagePrintDlg", this, Rect.right, Rect.bottom, &ProtoPrintDlg );
471 if ( ProtoPrintDlg )
472 ProtoPrintDlg->Initialize( hModuleInstance, GetFrameHandle() );
473 SetActiveWindow(hwnd);
474 }
475 return TRUE;
476
477 default:
478 return FALSE;
479 }
480 };
481
482 void TProtocolDiffractometryDlg::Dlg_OnNotify(HWND hwnd, int message, UINT id, UINT wParam)
483 {
484 int iTab;
485
486 if (message!=WM_NOTIFY || id!=id_Tab ) return;
487
488 iTab=TabCtrl_GetCurFocus(hTab)+2;
489 if (CurrentDlg!=iTab)
490 switch ( iTab )
491 {
492 case MessungDlg:
493 SaveDlg( hwnd, CurrentDlg);
494 ShowDialog( MessungDlg, SHOW );
495 SetDlgItemText(hwnd, id_StatusLine, "Parameter Messung");
496 break;
497
498 case ScanDlg:
499 SaveDlg( hwnd, CurrentDlg);
500 ShowDialog( ScanDlg, SHOW );
501 SetDlgItemText(hwnd, id_StatusLine, "Parameter Scan");
502 break;
503
504 case BlendeAbsorberDlg:
505 SaveDlg( hwnd, CurrentDlg);
506 ShowDialog( BlendeAbsorberDlg, SHOW );
507 SetDlgItemText(hwnd, id_StatusLine, "Parameter Blende/Absorber");
508 break;
509
510 case DetektorDlg:
511 SaveDlg( hwnd, CurrentDlg);
512 ShowDialog( DetektorDlg, SHOW );
513 SetDlgItemText(hwnd, id_StatusLine, "Parameter Detektor");
514 break;
515
516 case BemerkungDlg:
517 SaveDlg( hwnd, CurrentDlg);
518 ShowDialog( BemerkungDlg, SHOW );
519 SetDlgItemText(hwnd, id_StatusLine, "Parameter Bemerkung");
520 break;
521 } // switch ( iTab )
522 };
523
524 void TProtocolDiffractometryDlg::Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
525 {
526 char buf[MaxString];
527 RECT Rect;
528
529 if (TProtocolDlg::Dlg_OnCommand(hwnd, id, codeNotify))
530 return;
531
532 switch (id)
533 {
534 case id_Scanart:
535 if ( codeNotify==CBN_SELCHANGE )
536 {
537 ComboBox_GetText(hScanartList, buf, MaxString);
538 if (strstr(buf, "AreaScan") == NULL)
539 {
540 EnableAreaScan(DISABLE);
541 }
542 else
543 {
544 EnableAreaScan(ENABLE);
545 }
546 }
547 break;
548
549 case id_Scanmethode:
550 if ( codeNotify==CBN_SELCHANGE )
551 {
552 ComboBox_GetText(hScanmethodeList, buf, MaxString);
553 if (strstr(buf, "Continuous") == NULL)
554 {
555 EnableContinuous(DISABLE);
556 }
557 else
558 {
559 EnableContinuous(ENABLE);
560 }
561 }
562 break;
563
564 case id_Scantyp:
565 if ( codeNotify==CBN_SELCHANGE )
566 {
567 ComboBox_GetText(hScantypList, buf, MaxString);
568 if (strstr(buf, "Omega2Theta") == NULL)
569 {
570 EnableOmega2Theta(DISABLE);
571 }
572 else
573 {
574 EnableOmega2Theta(ENABLE);
575 }
576 RefreshScanachse(Scanachse);
577 ManageDlgItem(hwnd, id_SOffset, SOffset1, Refresh);
578 ManageDlgItem(hwnd, id_Minimum, Minimum1, Refresh);
579 ManageDlgItem(hwnd, id_Maximum, Maximum1, Refresh);
580 ManageDlgItem(hwnd, id_Schrittweite, Schrittweite1, Refresh);
581 ManageDlgItem(hwnd, id_Geschwindigkeit, Geschwindigkeit1, Refresh);
582 break;
583 }
584 break;
585
586 case id_Scanachse1:
587 SaveDlg( hwnd, CurrentDlg);
588 Scanachse= Scanachse1;
589 RefreshDlg(hwnd, CurrentDlg);
590 break;
591
592 case id_Scanachse2:
593 SaveDlg( hwnd, CurrentDlg);
594 Scanachse= Scanachse2;
595 RefreshDlg(hwnd, CurrentDlg);
596 break;
597
598 case id_Detektor:
599 if ( codeNotify==CBN_SELCHANGE )
600 {
601 ComboBox_GetText(hDetektorList, buf, MaxString);
602 if (strstr(buf, "PSD") == NULL)
603 {
604 EnablePSD(DISABLE);
605 ManageDlgItem(hwnd, id_Distanz, Winkelbereich, Refresh);
606 }
607 else
608 {
609 EnablePSD(ENABLE);
610 ManageDlgItem(hwnd, id_Winkelbereich, Winkelbereich, Refresh);
611 }
612 }
613 break;
614
615 case IDPRINT:
616 if ( !ProtoPrintDlg )
617 {
618 GetClientRect( GetDlgItem(hwndDlg, id_Skizze), &Rect );
619 ProtoPrintDlg= new TProtocolDiffractometryManagePrintDlg( "ProtocolDiffractometryManagePrintDlg", this, Rect.right, Rect.bottom, &ProtoPrintDlg );
620 if ( ProtoPrintDlg )
621 ProtoPrintDlg->Initialize( hModuleInstance, GetFrameHandle() );
622 }
623 break;
624
625 default:
626 TModalDlg::Dlg_OnCommand(hwnd, id, hwndCtl, codeNotify);
627 }
628 };
629
630 BOOL TProtocolDiffractometryDlg::TestPflichtDlg(HWND hwnd)
631 {
632 /*char buf[MaxLine];
633
634 MeasurementParameter->SetUser(GetMeasurementParameter(hwnd, id_Nutzer, Nutzer, buf));
635 if( !MeasurementParameter->SetOrientation(GetMeasurementParameter(hwnd, id_Orientierung, Orientierung, buf)) ) {
636 MeasurementParameterError(hwnd, id_Orientierung, Orientierung, buf);
637 return FALSE;
638 }
639 if( !MeasurementParameter->SetReflection(GetMeasurementParameter(hwnd, id_UReflex, UReflex, buf)) ) {
640 MeasurementParameterError(hwnd, id_UReflex, UReflex, buf);
641 return FALSE;
642 }
643 if( !MeasurementParameter->SetVoltage(GetMeasurementParameter(hwnd, id_Spannung, Spannung, buf)) ) {
644 MeasurementParameterError(hwnd, id_Spannung, Spannung, buf);
645 return FALSE;
646 }
647 if( !MeasurementParameter->SetCurrent(GetMeasurementParameter(hwnd, id_Strom, Strom, buf)) ) {
648 MeasurementParameterError(hwnd, id_Strom, Strom, buf);
649 return FALSE;
650 }
651 if( !MeasurementParameter->SetWaveLength(GetMeasurementParameter(hwnd, id_Wellenlaenge, Wellenlaenge, buf)) ) {
652 MeasurementParameterError(hwnd, id_Wellenlaenge, Wellenlaenge, buf);
653 return FALSE;
654 }
655 */
656 if ( !ManageDlgItem(hwnd, id_Datum, Datum, DefaultTest) )
657 return FALSE;
658 if ( !ManageDlgItem(hwnd, id_ProbenNr, ProbenNr, DefaultTest) )
659 return FALSE;
660 if ( !ManageDlgItem(hwnd, id_BPShorizontal, BPShorizontal, DefaultTest) )
661 return FALSE;
662 if ( !ManageDlgItem(hwnd, id_BPSvertikal, BPSvertikal, DefaultTest) )
663 return FALSE;
664 if ( !ManageDlgItem(hwnd, id_BDhorizontal, BDhorizontal, DefaultTest) )
665 return FALSE;
666 if ( !ManageDlgItem(hwnd, id_BDvertikal, BDvertikal, DefaultTest) )
667 return FALSE;
668 return TRUE;
669 };
670
671 /*
672 LPSTR TProtocolDiffractometryDlg::GetMeasurementParameter(HWND hwnd, int id, int Nr, LPSTR buf)
673 {
674 if( IsWindowVisible(GetDlgItem( hwnd, id)) )
675 GetDlgItemText(hwnd,id, buf, MaxParameterString);
676 else Protocol->GetProtocolValue(Nr, buf);
677 return buf;
678 }
679
680 void TProtocolDiffractometryDlg::MeasurementParameterError(HWND hwnd, int id, int Nr, LPSTR buf)
681 {
682 char buf2[MaxString];
683 HWND DlgHwnd;
684
685 DlgHwnd=GetDlgItem( hwnd, id);
686 sprintf(buf, ProtocolLanguage->GetMessage(28), Protocol->GetParameterNamen(Nr, buf2));
687 SetDlgItemText(hwnd,id_StatusLine,buf);
688 MessageBox(GetFocus(),buf,ProtocolLanguage->GetFailure(), MBFAILURE);
689 if( !IsWindowVisible(DlgHwnd) ) {
690 SaveDlg( hwnd, CurrentDlg);
691 ShowDialog( GetDlg(id), SHOW );
692 }
693 SetFocus(DlgHwnd);
694 };
695 */
696
697 void TProtocolDiffractometryDlg::RefreshScanachse( int id )
698 {
699 char buf[MaxString];
700
701 ProtocolDiffractometry->GetProtocolValue(id, buf);
702 ProtocolCombobox.AddAndSelectComboboxItem(hScanachseList, buf);
703 };
704
705 void TProtocolDiffractometryDlg::RefreshDetektor( )
706 {
707 char buf[MaxString];
708
709 ProtocolDiffractometry->GetProtocolValue(Detektor, buf);
710 if (strstr(buf, "PSD") == NULL)
711 EnablePSD(DISABLE);
712 else
713 EnablePSD(ENABLE);
714 ProtocolCombobox.AddAndSelectComboboxItem(hDetektorList, buf);
715
716 ProtocolDiffractometry->GetProtocolValue(Monitor, buf);
717 ProtocolCombobox.AddAndSelectComboboxItem(hMonitorList, buf);
718 };
719
720 void TProtocolDiffractometryDlg::RefreshCombobox( )
721 {
722 char buf[MaxString];
723
724 ProtocolDiffractometry->GetProtocolValue(Scanart, buf);
725 if (strstr(buf, "AreaScan") == NULL)
726 EnableAreaScan( DISABLE );
727 else
728 EnableAreaScan( ENABLE );
729 ComboBox_SelectString(hScanartList, -1, buf);
730
731 ProtocolDiffractometry->GetProtocolValue(Scanmethode, buf);
732 if (strstr(buf, "Continuous") == NULL)
733 EnableContinuous( DISABLE );
734 else
735 EnableContinuous( ENABLE );
736 ComboBox_SelectString(hScanmethodeList, -1, buf);
737
738 ProtocolDiffractometry->GetProtocolValue(Scantyp, buf);
739 if (strstr(buf, "Omega2Theta") == NULL)
740 EnableOmega2Theta( DISABLE );
741 else
742 EnableOmega2Theta( ENABLE );
743 ComboBox_SelectString(hScantypList, -1, buf);
744
745 Scanachse= Scanachse1;
746 RefreshScanachse(Scanachse);
747 RefreshDetektor();
748 };
749
750 BOOL TProtocolDiffractometryDlg::ManageDlg(HWND hwnd, int id, TAction Action)
751 {
752 switch (id)
753 {
754 case ProbeSkizzeDlg:
755 if ( !ManageDlgItem(hwnd, id_Datum, Datum, Action) )
756 return FALSE;
757 if ( !ManageDlgItem(hwnd, id_Nutzer, Nutzer, Action) )
758 return FALSE;
759 if ( !ManageDlgItem(hwnd, id_ProbenNr, ProbenNr, Action) )
760 return FALSE;
761 if ( !ManageDlgItem(hwnd, id_Material, Material, Action) )
762 return FALSE;
763 if ( !ManageDlgItem(hwnd, id_FehlWinkel, FehlWinkel, Action) )
764 return FALSE;
765 if ( !ManageDlgItem(hwnd, id_FehlRichtung, FehlRichtung, Action) )
766 return FALSE;
767 if ( !ManageDlgItem(hwnd, id_Orientierung, Orientierung, Action) )
768 return FALSE;
769 if ( !ManageDlgItem(hwnd, id_UReflex, UReflex, Action) )
770 return FALSE;
771 if ( !ManageDlgItem(hwnd, id_Scanart, Scanart, Action) )
772 return FALSE;
773 if ( !ManageDlgItem(hwnd, id_Scanmethode, Scanmethode, Action) )
774 return FALSE;
775 break;
776
777 case MessungDlg:
778 if ( !ManageDlgItem(hwnd, id_Spannung, Spannung, Action) )
779 return FALSE;
780 if ( !ManageDlgItem(hwnd, id_Strom, Strom, Action) )
781 return FALSE;
782 if ( !ManageDlgItem(hwnd, id_Wellenlaenge, Wellenlaenge, Action) )
783 return FALSE;
784 if ( !ManageDlgItem(hwnd, id_Messdatei, Messdatei, Action) )
785 return FALSE;
786 break;
787
788 case ScanDlg:
789 if ( !ManageDlgItem(hwnd, id_Scantyp, Scantyp, Action) )
790 return FALSE;
791 if ( !ManageDlgItem(hwnd, id_Scanachse, Scanachse, Action) )
792 return FALSE;
793 if ( Action == Refresh )
794 RefreshScanachse(Scanachse);
795 if ( Scanachse == Scanachse1 )
796 {
797 if ( !ManageDlgItem(hwnd, id_SOffset, SOffset1, Action) )
798 return FALSE;
799 if ( !ManageDlgItem(hwnd, id_Minimum, Minimum1, Action) )
800 return FALSE;
801 if ( !ManageDlgItem(hwnd, id_Maximum, Maximum1, Action) )
802 return FALSE;
803 if ( !ManageDlgItem(hwnd, id_Schrittweite, Schrittweite1, Action) )
804 return FALSE;
805 if ( !ManageDlgItem(hwnd, id_Geschwindigkeit, Geschwindigkeit1, Action) )
806 return FALSE;
807 }
808 else
809 {
810 if ( !ManageDlgItem(hwnd, id_SOffset, SOffset2, Action) )
811 return FALSE;
812 if ( !ManageDlgItem(hwnd, id_Minimum, Minimum2, Action) )
813 return FALSE;
814 if ( !ManageDlgItem(hwnd, id_Maximum, Maximum2, Action) )
815 return FALSE;
816 if ( !ManageDlgItem(hwnd, id_Schrittweite, Schrittweite2, Action) )
817 return FALSE;
818 if ( !ManageDlgItem(hwnd, id_Geschwindigkeit, Geschwindigkeit2, Action) )
819 return FALSE;
820 }
821 break;
822
823 case BlendeAbsorberDlg:
824 if ( !ManageDlgItem(hwnd, id_BPShorizontal, BPShorizontal, Action) )
825 return FALSE;
826 if ( !ManageDlgItem(hwnd, id_BPSvertikal, BPSvertikal, Action) )
827 return FALSE;
828 if ( !ManageDlgItem(hwnd, id_BDhorizontal, BDhorizontal, Action) )
829 return FALSE;
830 if ( !ManageDlgItem(hwnd, id_BDvertikal, BDvertikal, Action) )
831 return FALSE;
832 if ( !ManageDlgItem(hwnd, id_AArt, AArt, Action) )
833 return FALSE;
834 if ( !ManageDlgItem(hwnd, id_AFaktor, AFaktor, Action) )
835 return FALSE;
836 break;
837
838 case DetektorDlg:
839 if ( !ManageDlgItem(hwnd, id_Detektor, Detektor, Action) )
840 return FALSE;
841 if ( !ManageDlgItem(hwnd, id_Messzeit, Messzeit, Action) )
842 return FALSE;
843 if ( !ManageDlgItem(hwnd, id_Impulse, Impulse, Action) )
844 return FALSE;
845 if ( !ManageDlgItem(hwnd, id_Monitor, Monitor, Action) )
846 return FALSE;
847 if ( Action == Refresh )
848 RefreshDetektor();
849 if ( !ManageDlgItem(hwnd, id_Kanalabstand, Kanalabstand, Action) )
850 return FALSE;
851 if ( !ManageDlgItem(hwnd, id_Messkanal, Messkanal, Action) )
852 return FALSE;
853 if ( !ManageDlgItem(hwnd, id_Addiere, Addiere, Action) )
854 return FALSE;
855 if ( PSD )
856 {
857 if ( !ManageDlgItem(hwnd, id_Winkelbereich, Winkelbereich, Action) )
858 return FALSE;
859 }
860 else
861 {
862 if ( !ManageDlgItem(hwnd, id_Distanz, Winkelbereich, Action) )
863 return FALSE;
864 }
865 break;
866
867 case BemerkungDlg:
868 if ( !ManageDlgItem(hwnd, id_Bemerkung, Bemerkung, Action) )
869 return FALSE;
870 break;
871 }
872 SetFocus(GetDlgItem(hwnd, IDOK));
873 return TRUE;
874 };
875
876 int TProtocolDiffractometryDlg::GetDlg(int id)
877 {
878 switch (id)
879 {
880 case id_Datum:
881 case id_Nutzer:
882 case id_ProbenNr:
883 case id_Material:
884 case id_FehlWinkel:
885 case id_FehlRichtung:
886 case id_Orientierung:
887 case id_UReflex:
888 case id_Scanart:
889 case id_Scanmethode:
890 return ProbeSkizzeDlg;
891
892 case id_Spannung:
893 case id_Strom:
894 case id_Wellenlaenge:
895 case id_Messdatei:
896 return MessungDlg;
897
898 case id_Scantyp:
899 case id_Scanachse:
900 case id_SOffset:
901 case id_Minimum:
902 case id_Maximum:
903 case id_Schrittweite:
904 case id_Geschwindigkeit:
905 return ScanDlg;
906
907 case id_BPShorizontal:
908 case id_BPSvertikal:
909 case id_BDhorizontal:
910 case id_BDvertikal:
911 case id_AArt:
912 case id_AFaktor:
913 return BlendeAbsorberDlg;
914
915 case id_Detektor:
916 case id_Messzeit:
917 case id_Impulse:
918 case id_Monitor:
919 case id_Winkelbereich:
920 case id_Kanalabstand:
921 case id_Messkanal:
922 case id_Addiere:
923 case id_Distanz:
924 return DetektorDlg;
925
926 case id_Bemerkung:
927 return BemerkungDlg;
928 }
929 return -1;
930 };
931
932 int TProtocolDiffractometryDlg::GetStatusId( void )
933 {
934 return Status;
935 };
936
937 int TProtocolDiffractometryDlg::GetDatumId( void )
938 {
939 return Datum;
940 };
941
942 BOOL TProtocolDiffractometryDlg::CanClose(void)
943 {
944 return TRUE;
945 };
946
947 void TProtocolDiffractometryDlg::Dlg_OnRButtonDown(HWND hwnd, UINT codeNotify1, int x, int y, UINT codeNotify2)
948 {
949 TProtocolDlg::Dlg_OnRButtonDown(hwnd, codeNotify1, x, y, codeNotify2);
950 };
951
952 void TProtocolDiffractometryDlg::Dlg_OnLButtonDown(HWND hwnd, UINT codeNotify1, int x, int y, UINT codeNotify2)
953 {
954 TProtocolDlg::Dlg_OnLButtonDown(hwnd, codeNotify1, x, y, codeNotify2);
955 };
956
957 void TProtocolDiffractometryDlg::Dlg_OnLButtonUp(HWND hwnd, int x, int y, UINT codeNotify)
958 {
959 TProtocolDlg::Dlg_OnLButtonUp(hwnd, x, y, codeNotify);
960 };
961
962 void TProtocolDiffractometryDlg::Dlg_OnMouseMove(HWND hwnd, int x, int y, UINT codeNotify)
963 {
964 TProtocolDlg::Dlg_OnMouseMove(hwnd, x, y, codeNotify);
965 };
966
967
968 // LastLine
969
970
971