Subversion Repositories winbugtracker

Rev

Rev 5 | Rev 7 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5 Rev 6
1
unit BugtrackerMain;
1
unit BugtrackerMain;
2
 
2
 
3
(*
3
(*
4
 * TODO:
4
 * TODO:
5
 * - abfragen ob speichern wenn fenster geschlossen wird
5
 * - abfragen ob speichern wenn fenster geschlossen wird
6
 * - Spezielle Filter
6
 * - Spezielle Filter
7
 *   ... Auflisten nach Modul
7
 *   ... Auflisten nach Modul
8
 *   ... Anzeigen der Agenda
8
 *   ... Anzeigen der Agenda
9
 * - verbinden mit ticketsystem von HS
9
 * - verbinden mit ticketsystem von HS
10
 * - rtf controls?
10
 * - rtf controls?
11
 * - Neue Felder:
11
 * - Neue Felder:
12
 *   ... Erfasser
12
 *   ... Erfasser
13
 *   ... Agenda
13
 *   ... Agenda
14
 *   ... Status = Offen, gefixt, Abgelehnt, Veröffentlicht
14
 *   ... Status = Offen, gefixt, Abgelehnt, Veröffentlicht
15
 *   ... RTF Feld als BIGTEXT definieren
15
 *   ... RTF Feld als BIGTEXT definieren
16
 * - Neue Aufteilung der States
16
 * - Neue Aufteilung der States
17
 *   ... Open, Fixed, Published, Wontfix/Rejected, Planned(Agenda)
17
 *   ... Open, Fixed, Published, Wontfix/Rejected, Planned(Agenda)
18
 *)
18
 *)
19
 
19
 
20
interface
20
interface
21
 
21
 
22
uses
22
uses
23
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
23
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
24
  Dialogs, DBXpress, WideStrings, DB, SqlExpr, StdCtrls, ExtCtrls, DBCtrls,
24
  Dialogs, WideStrings, DB, SqlExpr, StdCtrls, ExtCtrls, DBCtrls,
25
  ADODB, ComCtrls, Grids, DBGrids, Mask, Menus, XPMan;
25
  ADODB, ComCtrls, Grids, DBGrids, Mask, Menus, XPMan;
26
 
26
 
27
type
27
type
28
  TfrmBugtracker = class(TForm)
28
  TfrmBugtracker = class(TForm)
29
    Panel1: TPanel;
29
    Panel1: TPanel;
30
    DBGrid1: TDBGrid;
30
    DBGrid1: TDBGrid;
31
    ComboBox1: TComboBox;
31
    ComboBox1: TComboBox;
32
    DBNavigator2: TDBNavigator;
32
    DBNavigator2: TDBNavigator;
33
    Panel2: TPanel;
33
    Panel2: TPanel;
34
    Label1: TLabel;
34
    Label1: TLabel;
35
    Label2: TLabel;
35
    Label2: TLabel;
36
    Label3: TLabel;
36
    Label3: TLabel;
37
    Label4: TLabel;
37
    Label4: TLabel;
38
    Label5: TLabel;
38
    Label5: TLabel;
39
    Label6: TLabel;
39
    Label6: TLabel;
40
    DBNavigator1: TDBNavigator;
40
    DBNavigator1: TDBNavigator;
41
    DBRichEdit1: TDBRichEdit;
41
    DBRichEdit1: TDBRichEdit;
42
    DBEdit1: TDBEdit;
42
    DBEdit1: TDBEdit;
43
    DBLookupComboBox1: TDBLookupComboBox;
43
    DBLookupComboBox1: TDBLookupComboBox;
44
    DBEdit2: TDBEdit;
44
    DBEdit2: TDBEdit;
45
    DBEdit3: TDBEdit;
45
    DBEdit3: TDBEdit;
46
    DBLookupComboBox2: TDBLookupComboBox;
46
    DBLookupComboBox2: TDBLookupComboBox;
47
    DBLookupComboBox3: TDBLookupComboBox;
47
    DBLookupComboBox3: TDBLookupComboBox;
48
    TrackBar1: TTrackBar;
48
    TrackBar1: TTrackBar;
49
    ADOConnection1: TADOConnection;
49
    ADOConnection1: TADOConnection;
50
    dsBugs: TDataSource;
50
    dsBugs: TDataSource;
51
    tblMitarbeiter: TADOTable;
51
    tblMitarbeiter: TADOTable;
52
    dsMitarbeiter: TDataSource;
52
    dsMitarbeiter: TDataSource;
53
    MainMenu1: TMainMenu;
53
    MainMenu1: TMainMenu;
54
    Stammdaten1: TMenuItem;
54
    Stammdaten1: TMenuItem;
55
    Mitarbeiter1: TMenuItem;
55
    Mitarbeiter1: TMenuItem;
56
    Projekte1: TMenuItem;
56
    Projekte1: TMenuItem;
57
    Module1: TMenuItem;
57
    Module1: TMenuItem;
58
    Versionen1: TMenuItem;
58
    Versionen1: TMenuItem;
59
    Projektwechseln1: TMenuItem;
59
    Projektwechseln1: TMenuItem;
60
    XPManifest1: TXPManifest;
60
    XPManifest1: TXPManifest;
61
    qryBugs: TADOQuery;
61
    qryBugs: TADOQuery;
62
    dsVersionen: TDataSource;
62
    dsVersionen: TDataSource;
63
    tblProjekte: TADOTable;
63
    tblProjekte: TADOTable;
64
    dsProjekte: TDataSource;
64
    dsProjekte: TDataSource;
65
    dsModule: TDataSource;
65
    dsModule: TDataSource;
66
    Timer1: TTimer;
66
    Timer1: TTimer;
67
    Splitter1: TSplitter;
67
    Splitter1: TSplitter;
68
    Hilfe1: TMenuItem;
68
    Hilfe1: TMenuItem;
69
    ber1: TMenuItem;
69
    ber1: TMenuItem;
70
    btnFixedToggle: TButton;
70
    btnFixedToggle: TButton;
71
    btnBearbeitungsnotiz: TButton;
71
    btnBearbeitungsnotiz: TButton;
72
    qryBugsid: TAutoIncField;
72
    qryBugsid: TAutoIncField;
73
    qryBugstitel: TStringField;
73
    qryBugstitel: TStringField;
74
    qryBugsbeschreibung: TMemoField;
74
    qryBugsbeschreibung: TMemoField;
75
    qryBugserstellt: TDateTimeField;
75
    qryBugserstellt: TDateTimeField;
76
    qryBugswichtigkeit: TIntegerField;
76
    qryBugswichtigkeit: TIntegerField;
77
    qryBugsbearbeiter: TIntegerField;
77
    qryBugsbearbeiter: TIntegerField;
78
    qryBugsfixdatum: TDateTimeField;
78
    qryBugsfixdatum: TDateTimeField;
79
    qryBugsversion_release: TIntegerField;
79
    qryBugsversion_release: TIntegerField;
80
    qryBugsmodul: TIntegerField;
80
    qryBugsmodul: TIntegerField;
81
    qryBugsprojekt: TIntegerField;
81
    qryBugsprojekt: TIntegerField;
82
    qryVersionen: TADOQuery;
82
    qryVersionen: TADOQuery;
83
    qryModule: TADOQuery;
83
    qryModule: TADOQuery;
84
    LblAngemeldet: TLabel;
84
    LblAngemeldet: TLabel;
85
    Label7: TLabel;
85
    Label7: TLabel;
86
    Label8: TLabel;
86
    Label8: TLabel;
-
 
87
    DBLookupComboBox4: TDBLookupComboBox;
-
 
88
    qryBugserfasser: TIntegerField;
-
 
89
    qryBugsversion_agenda: TIntegerField;
-
 
90
    Label9: TLabel;
-
 
91
    cbxErfasser: TDBLookupComboBox;
-
 
92
    Label10: TLabel;
87
    procedure Mitarbeiter1Click(Sender: TObject);
93
    procedure Mitarbeiter1Click(Sender: TObject);
88
    procedure qryBugsAfterScroll(DataSet: TDataSet);
94
    procedure qryBugsAfterScroll(DataSet: TDataSet);
89
    procedure Module1Click(Sender: TObject);
95
    procedure Module1Click(Sender: TObject);
90
    procedure Projekte1Click(Sender: TObject);
96
    procedure Projekte1Click(Sender: TObject);
91
    procedure Versionen1Click(Sender: TObject);
97
    procedure Versionen1Click(Sender: TObject);
92
    procedure TrackBar1Change(Sender: TObject);
98
    procedure TrackBar1Change(Sender: TObject);
93
    procedure Timer1Timer(Sender: TObject);
99
    procedure Timer1Timer(Sender: TObject);
94
    procedure ComboBox1Change(Sender: TObject);
100
    procedure ComboBox1Change(Sender: TObject);
95
    procedure Projektwechseln1Click(Sender: TObject);
101
    procedure Projektwechseln1Click(Sender: TObject);
96
    procedure qryBugsAfterInsert(DataSet: TDataSet);
102
    procedure qryBugsAfterInsert(DataSet: TDataSet);
97
    procedure ber1Click(Sender: TObject);
103
    procedure ber1Click(Sender: TObject);
98
    procedure btnFixedToggleClick(Sender: TObject);
104
    procedure btnFixedToggleClick(Sender: TObject);
99
    procedure qryBugsversion_releaseValidate(Sender: TField);
105
    procedure qryBugsversion_releaseValidate(Sender: TField);
100
    procedure FormCreate(Sender: TObject);
106
    procedure FormCreate(Sender: TObject);
101
    procedure qryVersionenAfterInsert(DataSet: TDataSet);
107
    procedure qryVersionenAfterInsert(DataSet: TDataSet);
102
    procedure qryModuleAfterInsert(DataSet: TDataSet);
108
    procedure qryModuleAfterInsert(DataSet: TDataSet);
103
    procedure btnBearbeitungsnotizClick(Sender: TObject);
109
    procedure btnBearbeitungsnotizClick(Sender: TObject);
104
  public
110
  public
105
    eingeloggtMitarbeiter: integer;
111
    eingeloggtMitarbeiter: integer;
106
    eingeloggtMitarbeiterName: string;
112
    eingeloggtMitarbeiterName: string;
107
    aktuellesProjekt: integer;
113
    aktuellesProjekt: integer;
108
    aktuellesProjektName: string;
114
    aktuellesProjektName: string;
109
    procedure NeuFiltern;
115
    procedure NeuFiltern;
110
    procedure NotizHinzufuegen(color: TColor; bez: string);
116
    procedure NotizHinzufuegen(color: TColor; bez: string);
111
  end;
117
  end;
112
 
118
 
113
var
119
var
114
  frmBugtracker: TfrmBugtracker;
120
  frmBugtracker: TfrmBugtracker;
115
 
121
 
116
implementation
122
implementation
117
 
123
 
118
uses Mitarbeiter, Module, Versionen, Projekte, Login, About, inifiles;
124
uses Mitarbeiter, Module, Versionen, Projekte, Login, About, inifiles;
119
 
125
 
120
{$R *.dfm}
126
{$R *.dfm}
121
 
127
 
122
procedure TfrmBugtracker.qryBugsAfterInsert(DataSet: TDataSet);
128
procedure TfrmBugtracker.qryBugsAfterInsert(DataSet: TDataSet);
123
begin
129
begin
124
  // Standardwerte für einen neuen Bug
130
  // Standardwerte für einen neuen Bug
125
  qryBugs.FieldByName('wichtigkeit').AsInteger := 5;
131
  qryBugs.FieldByName('wichtigkeit').AsInteger := 5; // Mitte
-
 
132
  qryBugs.FieldByName('erstellt').AsDateTime := Now;
-
 
133
  qryBugs.FieldByName('erfasser').AsInteger := eingeloggtMitarbeiter;
126
  // qryBugs.FieldByName('bearbeiter').AsInteger := eingeloggtMitarbeiter;
134
  // qryBugs.FieldByName('bearbeiter').AsInteger := eingeloggtMitarbeiter;
127
  qryBugs.FieldByName('projekt').AsInteger := aktuellesProjekt;
135
  qryBugs.FieldByName('projekt').AsInteger := aktuellesProjekt;
128
end;
136
end;
129
 
137
 
130
procedure TfrmBugtracker.qryBugsAfterScroll(DataSet: TDataSet);
138
procedure TfrmBugtracker.qryBugsAfterScroll(DataSet: TDataSet);
131
var
139
var
132
  bakEvent: TNotifyEvent;
140
  bakEvent: TNotifyEvent;
133
begin
141
begin
134
  bakEvent := TrackBar1.OnChange;
142
  bakEvent := TrackBar1.OnChange;
135
  TrackBar1.OnChange := nil;
143
  TrackBar1.OnChange := nil;
136
  try
144
  try
137
    TrackBar1.Position := qryBugs.FieldByName('wichtigkeit').AsInteger;
145
    TrackBar1.Position := qryBugs.FieldByName('wichtigkeit').AsInteger;
138
  finally
146
  finally
139
    TrackBar1.OnChange := bakEvent;
147
    TrackBar1.OnChange := bakEvent;
140
  end;
148
  end;
141
end;
149
end;
142
 
150
 
143
procedure TfrmBugtracker.qryBugsversion_releaseValidate(Sender: TField);
151
procedure TfrmBugtracker.qryBugsversion_releaseValidate(Sender: TField);
144
begin
152
begin
145
  if qryBugs.FieldByName('fixdatum').IsNull then
153
  if qryBugs.FieldByName('fixdatum').IsNull then
146
  begin
154
  begin
147
    raise Exception.Create('Vor einer Veröffentlichung muss der Bugfix erst als gefixt markiert werden.');
155
    raise Exception.Create('Vor einer Veröffentlichung muss der Bugfix erst als gefixt markiert werden.');
148
  end;
156
  end;
149
end;
157
end;
150
 
158
 
151
procedure TfrmBugtracker.qryModuleAfterInsert(DataSet: TDataSet);
159
procedure TfrmBugtracker.qryModuleAfterInsert(DataSet: TDataSet);
152
begin
160
begin
153
  // Standardwerte für ein neues Modul
161
  // Standardwerte für ein neues Modul
154
  qryModule.FieldByName('projekt').AsInteger := aktuellesProjekt;
162
  qryModule.FieldByName('projekt').AsInteger := aktuellesProjekt;
155
end;
163
end;
156
 
164
 
157
procedure TfrmBugtracker.qryVersionenAfterInsert(DataSet: TDataSet);
165
procedure TfrmBugtracker.qryVersionenAfterInsert(DataSet: TDataSet);
158
begin
166
begin
159
  // Standardwerte für eine neue Version
167
  // Standardwerte für eine neue Version
160
  qryVersionen.FieldByName('projekt').AsInteger := aktuellesProjekt;
168
  qryVersionen.FieldByName('projekt').AsInteger := aktuellesProjekt;
161
end;
169
end;
162
 
170
 
163
procedure TfrmBugtracker.Timer1Timer(Sender: TObject);
171
procedure TfrmBugtracker.Timer1Timer(Sender: TObject);
164
begin
172
begin
165
  Timer1.Enabled := false;
173
  Timer1.Enabled := false;
166
  if frmLogin.ShowModal = mrCancel then Close;
174
  if frmLogin.ShowModal = mrCancel then Close;
167
end;
175
end;
168
 
176
 
169
procedure TfrmBugtracker.TrackBar1Change(Sender: TObject);
177
procedure TfrmBugtracker.TrackBar1Change(Sender: TObject);
170
begin
178
begin
171
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
179
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
172
  qryBugs.FieldByName('wichtigkeit').AsInteger := TrackBar1.Position;
180
  qryBugs.FieldByName('wichtigkeit').AsInteger := TrackBar1.Position;
173
end;
181
end;
174
 
182
 
175
procedure TfrmBugtracker.Versionen1Click(Sender: TObject);
183
procedure TfrmBugtracker.Versionen1Click(Sender: TObject);
176
begin
184
begin
177
  frmVersionen.ShowModal;
185
  frmVersionen.ShowModal;
178
end;
186
end;
179
 
187
 
180
procedure TfrmBugtracker.ber1Click(Sender: TObject);
188
procedure TfrmBugtracker.ber1Click(Sender: TObject);
181
begin
189
begin
182
  AboutBox.ShowModal;
190
  AboutBox.ShowModal;
183
end;
191
end;
184
 
192
 
185
procedure TfrmBugtracker.btnBearbeitungsnotizClick(Sender: TObject);
193
procedure TfrmBugtracker.btnBearbeitungsnotizClick(Sender: TObject);
186
begin
194
begin
187
  NotizHinzufuegen(clRed, 'Notiz');
195
  NotizHinzufuegen(clRed, 'Notiz');
188
end;
196
end;
189
 
197
 
190
procedure TfrmBugtracker.btnFixedToggleClick(Sender: TObject);
198
procedure TfrmBugtracker.btnFixedToggleClick(Sender: TObject);
191
begin
199
begin
192
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
200
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
193
  if qryBugs.FieldByName('fixdatum').IsNull then
201
  if qryBugs.FieldByName('fixdatum').IsNull then
194
  begin
202
  begin
195
    qryBugs.FieldByName('fixdatum').AsDateTime := Now;
203
    qryBugs.FieldByName('fixdatum').AsDateTime := Now;
196
    NotizHinzufuegen(clGreen, 'Gefixt');
204
    NotizHinzufuegen(clGreen, 'Gefixt');
197
  end
205
  end
198
  else
206
  else
199
  begin
207
  begin
200
    qryBugs.FieldByName('fixdatum').Clear;
208
    qryBugs.FieldByName('fixdatum').Clear;
201
    NotizHinzufuegen(clBlue, 'Neu eröffnet');
209
    NotizHinzufuegen(clBlue, 'Neu eröffnet');
202
  end;
210
  end;
203
end;
211
end;
204
 
212
 
205
procedure TfrmBugtracker.ComboBox1Change(Sender: TObject);
213
procedure TfrmBugtracker.ComboBox1Change(Sender: TObject);
206
begin
214
begin
207
  case ComboBox1.ItemIndex of
215
  case ComboBox1.ItemIndex of
208
    0:
216
    0:
209
      begin
217
      begin
210
        // Meine offenen Bugs (nach Wichtigkeit)
218
        // Meine offenen Bugs (nach Wichtigkeit)
211
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL AND bearbeiter = '+IntToStr(eingeloggtMitarbeiter)+' ORDER BY wichtigkeit DESC';
219
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL AND bearbeiter = '+IntToStr(eingeloggtMitarbeiter)+' ORDER BY wichtigkeit DESC';
212
      end;
220
      end;
213
    1:
221
    1:
214
      begin
222
      begin
215
        // Alle offenen Bugs (nach Wichtigkeit)
223
        // Alle offenen Bugs (nach Wichtigkeit)
216
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL ORDER BY wichtigkeit DESC';
224
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL ORDER BY wichtigkeit DESC';
217
      end;
225
      end;
218
    2:
226
    2:
219
      begin
227
      begin
220
        // Gelöst ohne Veröffentlichung (nach Lösungsdatum)
228
        // Gelöst ohne Veröffentlichung (nach Lösungsdatum)
221
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY fixdatum DESC';
229
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY fixdatum DESC';
222
      end;
230
      end;
223
    3:
231
    3:
224
      begin
232
      begin
225
        // Gelöst und Veröffentlicht (nach Version und Lösungsdatum)
233
        // Gelöst und Veröffentlicht (nach Version und Lösungsdatum)
226
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY version_release DESC, fixdatum DESC';
234
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY version_release DESC, fixdatum DESC';
227
      end;
235
      end;
228
    4:
236
    4:
229
      begin
237
      begin
230
        // Alle Bugs (nach Eröffnungsdatum)
238
        // Alle Bugs (nach Eröffnungsdatum)
231
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' ORDER BY erstellt DESC';
239
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' ORDER BY erstellt DESC';
232
      end;
240
      end;
233
  end;
241
  end;
234
  qryBugs.Active := true;
242
  qryBugs.Active := true;
235
end;
243
end;
236
 
244
 
237
procedure TfrmBugtracker.FormCreate(Sender: TObject);
245
procedure TfrmBugtracker.FormCreate(Sender: TObject);
238
var
246
var
239
  ini: TMemIniFile;
247
  ini: TMemIniFile;
240
begin
248
begin
241
  ini := TMemIniFile.Create('bugtracker.ini');
249
  ini := TMemIniFile.Create('bugtracker.ini');
242
  try
250
  try
-
 
251
    ADOConnection1.Connected := false;
243
    ADOConnection1.ConnectionString := ini.ReadString('Database', 'ConnectionString', '');
252
    ADOConnection1.ConnectionString := ini.ReadString('Database', 'ConnectionString', '');
244
  finally
253
  finally
245
    ini.Free;
254
    ini.Free;
246
  end;
255
  end;
247
 
256
 
248
  ADOConnection1.Connected := true;
257
  ADOConnection1.Connected := true;
249
  qryBugs.Active := true;
258
  qryBugs.Active := true;
250
  tblMitarbeiter.Active := true;
259
  tblMitarbeiter.Active := true;
251
  qryVersionen.Active := true;
260
  qryVersionen.Active := true;
252
  tblProjekte.Active := true;
261
  tblProjekte.Active := true;
253
  qryModule.Active := true;
262
  qryModule.Active := true;
254
end;
263
end;
255
 
264
 
256
procedure TfrmBugtracker.Mitarbeiter1Click(Sender: TObject);
265
procedure TfrmBugtracker.Mitarbeiter1Click(Sender: TObject);
257
begin
266
begin
258
  frmMitarbeiter.ShowModal;
267
  frmMitarbeiter.ShowModal;
259
end;
268
end;
260
 
269
 
261
procedure TfrmBugtracker.Module1Click(Sender: TObject);
270
procedure TfrmBugtracker.Module1Click(Sender: TObject);
262
begin
271
begin
263
  frmModule.ShowModal;
272
  frmModule.ShowModal;
264
end;
273
end;
265
 
274
 
266
procedure TfrmBugtracker.NeuFiltern;
275
procedure TfrmBugtracker.NeuFiltern;
267
begin
276
begin
268
  ComboBox1Change(ComboBox1);
277
  ComboBox1Change(ComboBox1);
269
 
278
 
270
  qryModule.SQL.Text := 'SELECT * FROM module WHERE projekt = ' + IntToStr(aktuellesProjekt);
279
  qryModule.SQL.Text := 'SELECT * FROM module WHERE projekt = ' + IntToStr(aktuellesProjekt);
271
  qryModule.Active := true;
280
  qryModule.Active := true;
272
 
281
 
273
  qryVersionen.SQL.Text := 'SELECT * FROM versionen WHERE projekt = ' + IntToStr(aktuellesProjekt);
282
  qryVersionen.SQL.Text := 'SELECT * FROM versionen WHERE projekt = ' + IntToStr(aktuellesProjekt);
274
  qryVersionen.Active := true;
283
  qryVersionen.Active := true;
275
end;
284
end;
276
 
285
 
277
procedure TfrmBugtracker.NotizHinzufuegen(color: TColor; bez: string);
286
procedure TfrmBugtracker.NotizHinzufuegen(color: TColor; bez: string);
278
var
287
var
279
  leerzeilen: integer;
288
  leerzeilen: integer;
280
  umbruch: string;
289
  umbruch: string;
281
  prefix: string;
290
  prefix: string;
282
begin
291
begin
283
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
292
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
284
 
293
 
285
  // Endet der Text mit zwei Zeilenabständen? Wenn nein, dann einfügen.
294
  // Endet der Text mit zwei Zeilenabständen? Wenn nein, dann einfügen.
286
  leerzeilen := 0;
295
  leerzeilen := 0;
287
  if Copy(DBRichEdit1.Text, 1+Length(DBRichEdit1.Text)-2, 2) = #13#10 then Inc(leerzeilen); // letzte Zeile
296
  if Copy(DBRichEdit1.Text, 1+Length(DBRichEdit1.Text)-2, 2) = #13#10 then Inc(leerzeilen); // letzte Zeile
288
  if Copy(DBRichEdit1.Text, 1+Length(DBRichEdit1.Text)-4, 2) = #13#10 then Inc(leerzeilen); // Vorletzte Zeile
297
  if Copy(DBRichEdit1.Text, 1+Length(DBRichEdit1.Text)-4, 2) = #13#10 then Inc(leerzeilen); // Vorletzte Zeile
289
  case leerzeilen of
298
  case leerzeilen of
290
    0: umbruch := #13#10#13#10;
299
    0: umbruch := #13#10#13#10;
291
    1: umbruch := #13#10;
300
    1: umbruch := #13#10;
292
    2: umbruch := '';
301
    2: umbruch := '';
293
  end;
302
  end;
294
 
303
 
295
  DBRichEdit1.SelStart := DBRichEdit1.GetTextLen;
304
  DBRichEdit1.SelStart := DBRichEdit1.GetTextLen;
296
  DBRichEdit1.SelText := umbruch;
305
  DBRichEdit1.SelText := umbruch;
297
 
306
 
298
  DBRichEdit1.SelAttributes.Size := 13;
307
  DBRichEdit1.SelAttributes.Size := 13;
299
  DBRichEdit1.SelAttributes.Color := color;
308
  DBRichEdit1.SelAttributes.Color := color;
300
  DBRichEdit1.SelAttributes.Style := [fsUnderline];
309
  DBRichEdit1.SelAttributes.Style := [fsUnderline];
301
  if Trim(bez) <> '' then
310
  if Trim(bez) <> '' then
302
    prefix := Trim(bez) + ' - '
311
    prefix := Trim(bez) + ' - '
303
  else
312
  else
304
    prefix := '';
313
    prefix := '';
305
  DBRichEdit1.SelText := prefix + eingeloggtMitarbeiterName + ' ' + FormatDateTime('dd.mm.yyyy hh:nn', Now); // DateTimeToStr(Now);
314
  DBRichEdit1.SelText := prefix + eingeloggtMitarbeiterName + ' ' + FormatDateTime('dd.mm.yyyy hh:nn', Now); // DateTimeToStr(Now);
306
 
315
 
307
  DBRichEdit1.SelAttributes.Size := 10;
316
  DBRichEdit1.SelAttributes.Size := 10;
308
  DBRichEdit1.SelAttributes.Color := clWindowText;
317
  DBRichEdit1.SelAttributes.Color := clWindowText;
309
  DBRichEdit1.SelAttributes.Style := [];
318
  DBRichEdit1.SelAttributes.Style := [];
310
  DBRichEdit1.SelText := #13#10 {+ '<Hier Text eingeben>'};
319
  DBRichEdit1.SelText := #13#10 {+ '<Hier Text eingeben>'};
311
 
320
 
312
  // Ans Ende scrollen
321
  // Ans Ende scrollen
313
  DBRichEdit1.SetFocus;
322
  DBRichEdit1.SetFocus;
314
  DBRichEdit1.SelStart := DBRichEdit1.GetTextLen;
323
  DBRichEdit1.SelStart := DBRichEdit1.GetTextLen;
315
  DBRichEdit1.Perform(EM_SCROLLCARET, 0, 0);
324
  DBRichEdit1.Perform(EM_SCROLLCARET, 0, 0);
316
end;
325
end;
317
 
326
 
318
procedure TfrmBugtracker.Projekte1Click(Sender: TObject);
327
procedure TfrmBugtracker.Projekte1Click(Sender: TObject);
319
begin
328
begin
320
  frmProjekte.ShowModal;
329
  frmProjekte.ShowModal;
321
end;
330
end;
322
 
331
 
323
procedure TfrmBugtracker.Projektwechseln1Click(Sender: TObject);
332
procedure TfrmBugtracker.Projektwechseln1Click(Sender: TObject);
324
begin
333
begin
325
  frmLogin.ShowModal;
334
  frmLogin.ShowModal;
326
end;
335
end;
327
 
336
 
328
end.
337
end.
329
 
338