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