Subversion Repositories winbugtracker

Rev

Rev 2 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 3
Line 1... Line 1...
1
unit WuLiMain;
1
unit WuLiMain;
2
 
2
 
-
 
3
(*
-
 
4
 * TODO:
-
 
5
 * - fertigstellen
-
 
6
 *   ... multi user/projekt testen
-
 
7
 *   ... bearbeitungsnotiz-button (rtf-farben usw)
-
 
8
 *   ...
-
 
9
 * - abfragen ob speichern wenn fenster geschlossen wird
-
 
10
 * - filtern nach modul
-
 
11
 * - verbinden mit ticketsystem von HS
-
 
12
 * - rtf controls?
-
 
13
 *)
-
 
14
 
3
interface
15
interface
4
 
16
 
5
uses
17
uses
6
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
18
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7
  Dialogs, DBXpress, WideStrings, DB, SqlExpr, StdCtrls, ExtCtrls, DBCtrls,
19
  Dialogs, DBXpress, WideStrings, DB, SqlExpr, StdCtrls, ExtCtrls, DBCtrls,
8
  ADODB, ComCtrls, Grids, DBGrids, Mask, Menus, XPMan;
20
  ADODB, ComCtrls, Grids, DBGrids, Mask, Menus, XPMan;
9
 
21
 
10
type
22
type
11
  TForm1 = class(TForm)
23
  TfrmBugtracker = class(TForm)
-
 
24
    Panel1: TPanel;
-
 
25
    DBGrid1: TDBGrid;
-
 
26
    ComboBox1: TComboBox;
12
    ADOConnection1: TADOConnection;
27
    DBNavigator2: TDBNavigator;
-
 
28
    Panel2: TPanel;
-
 
29
    Label1: TLabel;
-
 
30
    Label2: TLabel;
-
 
31
    Label3: TLabel;
-
 
32
    Label4: TLabel;
-
 
33
    Label5: TLabel;
13
    dsBugs: TDataSource;
34
    Label6: TLabel;
14
    DBNavigator1: TDBNavigator;
35
    DBNavigator1: TDBNavigator;
15
    DBRichEdit1: TDBRichEdit;
36
    DBRichEdit1: TDBRichEdit;
16
    DBGrid1: TDBGrid;
-
 
17
    DBEdit1: TDBEdit;
37
    DBEdit1: TDBEdit;
18
    DBLookupComboBox1: TDBLookupComboBox;
38
    DBLookupComboBox1: TDBLookupComboBox;
-
 
39
    DBEdit2: TDBEdit;
-
 
40
    DBEdit3: TDBEdit;
-
 
41
    DBLookupComboBox2: TDBLookupComboBox;
-
 
42
    DBLookupComboBox3: TDBLookupComboBox;
-
 
43
    TrackBar1: TTrackBar;
-
 
44
    ADOConnection1: TADOConnection;
-
 
45
    dsBugs: TDataSource;
19
    tblMitarbeiter: TADOTable;
46
    tblMitarbeiter: TADOTable;
20
    dsMitarbeiter: TDataSource;
47
    dsMitarbeiter: TDataSource;
21
    Label1: TLabel;
-
 
22
    Label2: TLabel;
-
 
23
    MainMenu1: TMainMenu;
48
    MainMenu1: TMainMenu;
24
    Stammdaten1: TMenuItem;
49
    Stammdaten1: TMenuItem;
25
    Mitarbeiter1: TMenuItem;
50
    Mitarbeiter1: TMenuItem;
26
    Projekte1: TMenuItem;
51
    Projekte1: TMenuItem;
27
    Module1: TMenuItem;
52
    Module1: TMenuItem;
-
 
53
    Versionen1: TMenuItem;
-
 
54
    Projektwechseln1: TMenuItem;
28
    XPManifest1: TXPManifest;
55
    XPManifest1: TXPManifest;
29
    qryBugs: TADOQuery;
56
    qryBugs: TADOQuery;
30
    DBEdit2: TDBEdit;
-
 
31
    DBEdit3: TDBEdit;
-
 
32
    Label3: TLabel;
-
 
33
    Label4: TLabel;
-
 
34
    tblVersionen: TADOTable;
57
    tblVersionen: TADOTable;
35
    dsVersionen: TDataSource;
58
    dsVersionen: TDataSource;
36
    tblProjekte: TADOTable;
59
    tblProjekte: TADOTable;
37
    dsProjekte: TDataSource;
60
    dsProjekte: TDataSource;
38
    tblModule: TADOTable;
61
    tblModule: TADOTable;
39
    dsModule: TDataSource;
62
    dsModule: TDataSource;
-
 
63
    Timer1: TTimer;
-
 
64
    Splitter1: TSplitter;
40
    Versionen1: TMenuItem;
65
    Hilfe1: TMenuItem;
41
    DBLookupComboBox2: TDBLookupComboBox;
66
    ber1: TMenuItem;
42
    Label5: TLabel;
67
    btnFixedToggle: TButton;
43
    DBLookupComboBox3: TDBLookupComboBox;
68
    btnBearbeitungsnotiz: TButton;
44
    Label6: TLabel;
69
    qryBugsid: TAutoIncField;
45
    TrackBar1: TTrackBar;
70
    qryBugstitel: TStringField;
-
 
71
    qryBugsbeschreibung: TMemoField;
-
 
72
    qryBugserstellt: TDateTimeField;
-
 
73
    qryBugswichtigkeit: TIntegerField;
-
 
74
    qryBugsbearbeiter: TIntegerField;
-
 
75
    qryBugsfixdatum: TDateTimeField;
-
 
76
    qryBugsversion_release: TIntegerField;
46
    ComboBox1: TComboBox;
77
    qryBugsmodul: TIntegerField;
-
 
78
    qryBugsprojekt: TIntegerField;
47
    procedure Mitarbeiter1Click(Sender: TObject);
79
    procedure Mitarbeiter1Click(Sender: TObject);
48
    procedure DateTimePicker1CloseUp(Sender: TObject);
-
 
49
    procedure qryBugsAfterScroll(DataSet: TDataSet);
80
    procedure qryBugsAfterScroll(DataSet: TDataSet);
50
    procedure Module1Click(Sender: TObject);
81
    procedure Module1Click(Sender: TObject);
51
    procedure Projekte1Click(Sender: TObject);
82
    procedure Projekte1Click(Sender: TObject);
52
    procedure Versionen1Click(Sender: TObject);
83
    procedure Versionen1Click(Sender: TObject);
53
    procedure TrackBar1Change(Sender: TObject);
84
    procedure TrackBar1Change(Sender: TObject);
-
 
85
    procedure Timer1Timer(Sender: TObject);
-
 
86
    procedure ComboBox1Change(Sender: TObject);
-
 
87
    procedure Projektwechseln1Click(Sender: TObject);
-
 
88
    procedure qryBugsAfterInsert(DataSet: TDataSet);
-
 
89
    procedure ber1Click(Sender: TObject);
-
 
90
    procedure btnFixedToggleClick(Sender: TObject);
-
 
91
    procedure qryBugsversion_releaseValidate(Sender: TField);
-
 
92
    procedure FormCreate(Sender: TObject);
54
  private
93
  private
55
    { Private-Deklarationen }
94
    { Private-Deklarationen }
56
  public
95
  public
57
    { Public-Deklarationen }
96
    { Public-Deklarationen }
-
 
97
    eingeloggtMitarbeiter: integer;
-
 
98
    aktuellesProjekt: integer;
-
 
99
    procedure NeuFiltern;
58
  end;
100
  end;
59
 
101
 
60
var
102
var
61
  Form1: TForm1;
103
  frmBugtracker: TfrmBugtracker;
62
 
104
 
63
implementation
105
implementation
64
 
106
 
65
uses Mitarbeiter, Module, Versionen, Projekte;
107
uses Mitarbeiter, Module, Versionen, Projekte, Login, About, inifiles;
66
 
108
 
67
{$R *.dfm}
109
{$R *.dfm}
68
 
110
 
69
procedure TForm1.qryBugsAfterScroll(DataSet: TDataSet);
111
procedure TfrmBugtracker.qryBugsAfterInsert(DataSet: TDataSet);
70
begin
112
begin
-
 
113
  // Standardwerte für einen neuen Bug
71
//  DateTimePicker1.DateTime := qryBugs.FieldByName('fixdatum').AsDateTime;
114
  qryBugs.FieldByName('wichtigkeit').AsInteger := 5;
-
 
115
  // qryBugs.FieldByName('bearbeiter').AsInteger := eingeloggtMitarbeiter;
-
 
116
  qryBugs.FieldByName('projekt').AsInteger := aktuellesProjekt;
-
 
117
end;
-
 
118
 
-
 
119
procedure TfrmBugtracker.qryBugsAfterScroll(DataSet: TDataSet);
-
 
120
var
-
 
121
  bakEvent: TNotifyEvent;
-
 
122
begin
-
 
123
  bakEvent := TrackBar1.OnChange;
-
 
124
  TrackBar1.OnChange := nil;
-
 
125
  try
72
//  TrackBar1.Position := qryBugs.FieldByName('wichtigkeit').AsInteger;
126
    TrackBar1.Position := qryBugs.FieldByName('wichtigkeit').AsInteger;
-
 
127
  finally
-
 
128
    TrackBar1.OnChange := bakEvent;
-
 
129
  end;
73
end;
130
end;
74
 
131
 
-
 
132
procedure TfrmBugtracker.qryBugsversion_releaseValidate(Sender: TField);
-
 
133
begin
-
 
134
  if qryBugs.FieldByName('fixdatum').IsNull then
-
 
135
  begin
-
 
136
    raise Exception.Create('Vor einer Veröffentlichung muss der Bugfix erst als gefixt markiert werden.');
-
 
137
  end;
-
 
138
end;
-
 
139
 
-
 
140
procedure TfrmBugtracker.Timer1Timer(Sender: TObject);
-
 
141
begin
-
 
142
  Timer1.Enabled := false;
-
 
143
  if frmLogin.ShowModal = mrCancel then Close;
-
 
144
end;
-
 
145
 
75
procedure TForm1.TrackBar1Change(Sender: TObject);
146
procedure TfrmBugtracker.TrackBar1Change(Sender: TObject);
76
begin
147
begin
77
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
148
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
78
  qryBugs.FieldByName('wichtigkeit').AsInteger := TrackBar1.Position;
149
  qryBugs.FieldByName('wichtigkeit').AsInteger := TrackBar1.Position;
79
end;
150
end;
80
 
151
 
81
procedure TForm1.Versionen1Click(Sender: TObject);
152
procedure TfrmBugtracker.Versionen1Click(Sender: TObject);
82
begin
153
begin
83
  frmVersionen.ShowModal;
154
  frmVersionen.ShowModal;
84
end;
155
end;
85
 
156
 
86
procedure TForm1.DateTimePicker1CloseUp(Sender: TObject);
157
procedure TfrmBugtracker.ber1Click(Sender: TObject);
-
 
158
begin
-
 
159
  AboutBox.ShowModal;
-
 
160
end;
-
 
161
 
-
 
162
procedure TfrmBugtracker.btnFixedToggleClick(Sender: TObject);
87
begin
163
begin
88
  (*
-
 
89
  LockWindowUpdate(DBGrid1.Handle);
-
 
90
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
164
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
91
  qryBugs.FieldByName('fixdatum').AsDateTime := DateTimePicker1.DateTime;
165
  if qryBugs.FieldByName('fixdatum').IsNull then
92
  LockWindowUpdate(0);
166
    qryBugs.FieldByName('fixdatum').AsDateTime := Now
93
  *)
167
  else
-
 
168
    qryBugs.FieldByName('fixdatum').Clear;
94
end;
169
end;
95
 
170
 
-
 
171
procedure TfrmBugtracker.ComboBox1Change(Sender: TObject);
-
 
172
begin
-
 
173
  case ComboBox1.ItemIndex of
-
 
174
    0:
-
 
175
      begin
-
 
176
        // Meine offenen Bugs (nach Wichtigkeit)
-
 
177
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL AND bearbeiter = '+IntToStr(eingeloggtMitarbeiter)+' ORDER BY wichtigkeit DESC';
-
 
178
      end;
-
 
179
    1:
-
 
180
      begin
-
 
181
        // Alle offenen Bugs (nach Wichtigkeit)
-
 
182
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL ORDER BY wichtigkeit DESC';
-
 
183
      end;
-
 
184
    2:
-
 
185
      begin
-
 
186
        // Gelöst ohne Veröffentlichung (nach Lösungsdatum)
-
 
187
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY fixdatum DESC';
-
 
188
      end;
-
 
189
    3:
-
 
190
      begin
-
 
191
        // Gelöst und Veröffentlicht (nach Version und Lösungsdatum)
-
 
192
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY version_release DESC, fixdatum DESC';
-
 
193
      end;
-
 
194
    4:
-
 
195
      begin
-
 
196
        // Alle Bugs (nach Eröffnungsdatum)
-
 
197
        qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' ORDER BY erstellt DESC';
-
 
198
      end;
-
 
199
  end;
-
 
200
  qryBugs.Active := true;
-
 
201
end;
-
 
202
 
-
 
203
procedure TfrmBugtracker.FormCreate(Sender: TObject);
-
 
204
var
-
 
205
  ini: TMemIniFile;
-
 
206
begin
-
 
207
  ini := TMemIniFile.Create('bugtracker.ini');
-
 
208
  try
-
 
209
    ADOConnection1.ConnectionString := ini.ReadString('Database', 'ConnectionString', '');
-
 
210
  finally
-
 
211
    ini.Free;
-
 
212
  end;
-
 
213
 
-
 
214
  ADOConnection1.Connected := true;
-
 
215
  qryBugs.Active := true;
-
 
216
  tblMitarbeiter.Active := true;
-
 
217
  tblVersionen.Active := true;
-
 
218
  tblProjekte.Active := true;
-
 
219
  tblModule.Active := true;
-
 
220
end;
-
 
221
 
96
procedure TForm1.Mitarbeiter1Click(Sender: TObject);
222
procedure TfrmBugtracker.Mitarbeiter1Click(Sender: TObject);
97
begin
223
begin
98
  frmMitarbeiter.ShowModal;
224
  frmMitarbeiter.ShowModal;
99
end;
225
end;
100
 
226
 
101
procedure TForm1.Module1Click(Sender: TObject);
227
procedure TfrmBugtracker.Module1Click(Sender: TObject);
102
begin
228
begin
103
  frmModule.ShowModal;
229
  frmModule.ShowModal;
104
end;
230
end;
105
 
231
 
-
 
232
procedure TfrmBugtracker.NeuFiltern;
-
 
233
begin
-
 
234
  ComboBox1Change(ComboBox1);
-
 
235
end;
-
 
236
 
106
procedure TForm1.Projekte1Click(Sender: TObject);
237
procedure TfrmBugtracker.Projekte1Click(Sender: TObject);
107
begin
238
begin
108
  frmProjekte.ShowModal;
239
  frmProjekte.ShowModal;
109
end;
240
end;
110
 
241
 
-
 
242
procedure TfrmBugtracker.Projektwechseln1Click(Sender: TObject);
-
 
243
begin
-
 
244
  frmLogin.ShowModal;
-
 
245
end;
-
 
246
 
111
end.
247
end.