a99  V32.6
allegro Windows Hauptprogramm
 Alle Klassen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
getl.cpp
gehe zur Dokumentation dieser Datei
1 // getl.cpp: Einzeiliges Dateneingabefeld
2 // Copyright 2011 Universitätsbibliothek Braunschweig, more see bottom
3 
4 #include "stdafx.h"
5 #include "ca99.h"
6 #include "a99.h"
7 #include "getl.h"
8 
9 #ifdef _DEBUG
10 #define new DEBUG_NEW
11 #undef THIS_FILE
12 static char THIS_FILE[] = __FILE__;
13 #endif
14 
15 // fuer Message an a99
16 #define WM_GOODBYE WM_USER + 5
17 
18 /////////////////////////////////////////////////////////////////////////////
19 // Dialogfeld GetL
20 
21 int ixmd; // 1: index and copy active
22 
23 GetL::GetL(CWnd* pParent /*=NULL*/,int md)
24  : CDialog(GetL::IDD, pParent)
25 {
26  ixmd=md;
27  m_aView=pParent; // das ist das a99-Fenster
28  //{{AFX_DATA_INIT(GetL)
29  //}}AFX_DATA_INIT
30 }
31 
32 
33 void GetL::DoDataExchange(CDataExchange* pDX)
34 {
36  //{{AFX_DATA_MAP(GetL)
37  DDX_Control(pDX, IDC_LINE, m_getl);
38  DDX_Control(pDX, IDC_GIND, m_gind);
39  DDX_Control(pDX, IDC_COPY, m_copy);
40  DDX_Control(pDX, IDC_PROMPT, m_prompt);
41  //}}AFX_DATA_MAP
42 }
43 
44 
45 BEGIN_MESSAGE_MAP(GetL, CDialog)
46  ON_MESSAGE(WM_AFORM, OnAform)
47  //{{AFX_MSG_MAP(GetL)
48 
49  ON_BN_CLICKED(IDC_GIND, OnIndex)
50  ON_BN_CLICKED(IDC_COPY, OnCopy)
51  ON_BN_CLICKED(IDC_Z, OnZ)
52  ON_WM_HELPINFO()
53  ON_BN_CLICKED(IDC_ALM, OnAltm)
54  //}}AFX_MSG_MAP
55 END_MESSAGE_MAP()
56 
57 /////////////////////////////////////////////////////////////////////////////
58 
59 int GetL::Ask(char *ask)
60 { // leider umstaendlich, aber sonst kommt ask nicht rueber!
61  extern a99 *dlg;
62  extern int fadr(CHAR *,int lg=4);
63  char *p;
64  if(strlen(ask)>4095) ask[4095]=0;
65  strcpy(aSK,ask); // Vorsicht!
66  *pref=0;
67  if(*aSK=='#') // ask #nnn
68  {
69  if(aSK[1]=='u')
70  {
71  int i=fadr((CHAR *)aSK);
72  if(i!=-1) strcpy(aSK,(char *)fa[i]+dlg->Cfg->skt);
73  else *aSK=0;
74  }
75  else
76  {
77  char *ka;
78  ka=(char *)dlg->Rec->Adr((CHAR *)aSK,0);
79  if(ka) strcpy(aSK,(char *)dlg->Rec->Adr((CHAR *)aSK,0));
80  else *aSK=0;
81  }
82  }
83 
84 extern int accu;
85  if(*aSK=='+') { amd=1; strcpy(aSK,aSK+1); } else amd=0; // ask +...
86  if(*aSK=='|')
87  { iX=aSK[1]; strcpy(aSK,aSK+2);
88  if(iX>':' && accu<5) iX='1';
89 
90  if((p=strchr(aSK,'|'))!=0) // ask |1D name
91  {
92  *p++=0;
93  strcpy(pref,aSK); // pref="D "
94  strcpy(aSK,p); // aSK="name"
95  }
96  else strcpy(pref,"");
97 
98  }
99  else { iX='1'; strcpy(pref,""); }
100 
101  return CDialog::DoModal();
102 }
103 
105 {
106 
107  return CDialog::DoModal();
108 }
109 
110 WINDOWPLACEMENT glplace;
111 
113 {
114  extern char inpu[], getzeil[];
115  if(!amd) m_getl.GetWindowText(inpu,3000); // input -> inpu
116  else m_getl.GetWindowText(inpu+strlen(inpu),3000);
117  m_getl.GetWindowText(getzeil,249); // for OnCopy
118  GetWindowPlacement(&glplace);
119 
120  CDialog::OnOK();
121 }
122 
124 {
125  extern char getzeil[];
126  m_getl.GetWindowText(getzeil,249); // for OnCopy
127  extern int answ;
128  answ=IDCANCEL;
129  OnOK();
130 }
131 
133 {
134 extern CFont *aFont;
135 extern a99 *dlg;
137  if(glplace.length) SetWindowPlacement(&glplace);
138  else GetWindowPlacement(&glplace);
139  if(!ixmd) { m_gind.EnableWindow(FALSE); m_copy.EnableWindow(FALSE); }
140  if(aFont)
141  {
142  m_getl.SetFont(aFont);
143  }
144 // MoveWindow(250,300,500,96);
145 
146  char *as;
147  if(as=strchr(aSK,'='))
148  { *as++=0;
149  if(*as=='#' && m_aView==dlg)
150  {
151  extern a99 *dlg;
152  extern ABASE *BANK;
153  extern int fadr(CHAR *,int lg=4);
154  if(as[1]=='u')
155  {
156  int i=fadr((CHAR *)as);
157  if(i!=-1) as=(char *)fa[i]+dlg->Cfg->skt;
158  else as="";
159  }
160  else as=(char *)dlg->Rec->Adr((CHAR *)as,0);
161  if(!as) as="";
162  {
163  char aS[3000]; strcpy(aS,as);
164  if(BANK) BANK->E3Coding((CHAR *)aS,0,0);
165  m_getl.SetWindowText(aS);
166  }
167  }
168  else m_getl.SetWindowText(as);
169  }
170 // m_getl.SetSel(-1,0); // klappt nicht!
171 // m_getl.SendMessage(WM_KEYDOWN,VK_END); // auch nicht
172 // if(*aSK=='+') { amd=1; strcpy(aSK,aSK+1); }
173 // if(*aSK=='|') { iX=aSK[1]; m_prompt.SetWindowText(aSK+2); }
174 // else
175 
176  if(iX=='0') { m_gind.ShowWindow(SW_HIDE); m_gind.SetWindowText("--"); m_gind.RedrawWindow(); }
177 
178  m_prompt.SetWindowText(aSK);
179  return TRUE;
180 }
181 
182 void GetL::OnIndex() // user wants to see index for this field
183 {
184  extern char zeile[];
185  extern ABASE *BANK;
186  if(!ixmd) return;
187  strcpy(zeile,"|1"); zeile[1]=iX;
188  strcat(zeile,pref);
189  int z=strlen(zeile);
190  m_getl.GetWindowText(zeile+z,80); // get input
191  BANK->E3Coding((CHAR *)zeile+z,0,1); // ANSI -> ASCII
192 if(m_aView)
193  m_aView->PostMessage(WM_AFORM, 11, 1); // and send to parent
194  m_getl.SetFocus();
195 }
196 
197 LRESULT GetL::OnAform(WPARAM wParam, LPARAM lParam)
198 {
199 
200 // diese messages werden durch Button Copy
201 // des nichtmodalen Winx ausgeloest
202 
203 if(wParam==20) // Copy a line from index
204 { // the line is in zeile
205  extern char zeile[];
206  char *a; a=zeile;
207  if(*a==*pref) a+=strlen(pref);
208 // *a=toupper(*a);
209  if(*a) m_getl.SetWindowText("");
210  while(*a)
211  {
212 // if(a[1]==' ' || a[1]=='-') a[2]=toupper(a[2]); // klein->gross
213 extern int Esc;
214  if(*a==Esc) m_getl.esc=1;
215  m_getl.SendMessage(WM_CHAR,*a++);
216  }
217 
218  m_getl.SetFocus();
219 }
220  return 0L;
221 }
222 
224 {
225  extern char getzeil[];
226 
227  m_getl.SetWindowText(getzeil);
228 }
229 
230 void GetL::OnZ()
231 {
232  m_aView->SendMessage(WM_GOODBYE,8,0); // Alt+Z
233 }
234 
235 BOOL GetL::OnHelpInfo(HELPINFO* pHelpInfo)
236 {
237  return 1;
238 
239 // return CDialog::OnHelpInfo(pHelpInfo);
240 }
241 
243 {
244  extern a99 *dlg; // main dialog
245  extern char *hptr; extern int hmod;
246  char *h; h=hptr;
247  while(*h!='|') --h; ++h;
248  if(!hmod || (strncmp(h,"spchr",5) && hmod)) { dlg->helpinfo("spchr","?"); dlg->m_rdisp.SetFocus(); }
249  ShowWindow(SW_MINIMIZE);
250 }
251 
252 /*
253  Copyright 2011 Universitätsbibliothek Braunschweig
254 
255  Licensed under the Apache License, Version 2.0 (the "License");
256  you may not use this file except in compliance with the License.
257  You may obtain a copy of the License at
258 
259  http://www.apache.org/licenses/LICENSE-2.0
260 
261  Unless required by applicable law or agreed to in writing, software
262  distributed under the License is distributed on an "AS IS" BASIS,
263  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
264  See the License for the specific language governing permissions and
265  limitations under the License.
266 */
267