Subversion Repositories winbugtracker

Rev

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

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