Subversion Repositories winbugtracker

Compare Revisions

No changes between revisions

Regard whitespace Rev 1 → Rev HEAD

/trunk/LICENSE
0,0 → 1,202
 
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
 
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 
1. Definitions.
 
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
 
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
 
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
 
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
 
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
 
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
 
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
 
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
 
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
 
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
 
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
 
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
 
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
 
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
 
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
 
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
 
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
 
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
 
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
 
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
 
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
 
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
 
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
 
END OF TERMS AND CONDITIONS
 
APPENDIX: How to apply the Apache License to your work.
 
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
 
Copyright 2018 Daniel Marschall, ViaThinkSoft
 
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
 
http://www.apache.org/licenses/LICENSE-2.0
 
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
/trunk/README.md
0,0 → 1,8
 
# Bugtracker for Windows
 
A bugtracker for Windows, developed in Delphi.
Supported databases are MySQL and MS SQL.
 
The development was cancelled in the early development state.
You are free to continue development.
/trunk/BugtrackerMain.pas
0,0 → 1,423
unit BugtrackerMain;
 
(*
* TODO:
* - Spezielle Filter
* ... Auflisten nach Modul
* ... Anzeigen der Agenda
* - rtf control bar?
* - ein neu angelegter bug soll links aus der leiste verschwinden, wenn er nicht in das kriterium passt
*
* NOT INCLUDED:
* - duplicate of
*
* FUTURE:
* - HS Info integration
*)
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WideStrings, DB, SqlExpr, StdCtrls, ExtCtrls, DBCtrls,
ADODB, ComCtrls, Grids, DBGrids, Mask, Menus, XPMan;
 
type
TfrmBugtracker = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
ComboBox1: TComboBox;
DBNavigator2: TDBNavigator;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
DBNavigator1: TDBNavigator;
DBRichEdit1: TDBRichEdit;
DBEdit1: TDBEdit;
DBLookupComboBox1: TDBLookupComboBox;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBLookupComboBox2: TDBLookupComboBox;
DBLookupComboBox3: TDBLookupComboBox;
TrackBar1: TTrackBar;
ADOConnection1: TADOConnection;
dsBugs: TDataSource;
tblMitarbeiter: TADOTable;
dsMitarbeiter: TDataSource;
MainMenu1: TMainMenu;
Stammdaten1: TMenuItem;
Mitarbeiter1: TMenuItem;
Projekte1: TMenuItem;
Module1: TMenuItem;
Versionen1: TMenuItem;
Projektwechseln1: TMenuItem;
XPManifest1: TXPManifest;
qryBugs: TADOQuery;
dsVersionen: TDataSource;
tblProjekte: TADOTable;
dsProjekte: TDataSource;
dsModule: TDataSource;
Timer1: TTimer;
Splitter1: TSplitter;
Hilfe1: TMenuItem;
ber1: TMenuItem;
btnBearbeitungsnotiz: TButton;
qryBugsid: TAutoIncField;
qryBugstitel: TStringField;
qryBugsbeschreibung: TMemoField;
qryBugserstellt: TDateTimeField;
qryBugswichtigkeit: TIntegerField;
qryBugsbearbeiter: TIntegerField;
qryBugsversion_release: TIntegerField;
qryBugsmodul: TIntegerField;
qryBugsprojekt: TIntegerField;
qryVersionen: TADOQuery;
qryModule: TADOQuery;
LblAngemeldet: TLabel;
Label7: TLabel;
Label8: TLabel;
DBLookupComboBox4: TDBLookupComboBox;
qryBugserfasser: TIntegerField;
qryBugsversion_agenda: TIntegerField;
Label9: TLabel;
cbxErfasser: TDBLookupComboBox;
Label10: TLabel;
lkpStatus: TADOTable;
dsStatus: TDataSource;
DBLookupComboBox5: TDBLookupComboBox;
qryBugsstatus: TIntegerField;
qryBugsstatus_geaendert: TDateTimeField;
Bugs1: TMenuItem;
Wechselnzu1: TMenuItem;
lkpStatusid: TAutoIncField;
lkpStatusstatus: TStringField;
lkpStatuscolor: TIntegerField;
procedure Mitarbeiter1Click(Sender: TObject);
procedure qryBugsAfterScroll(DataSet: TDataSet);
procedure Module1Click(Sender: TObject);
procedure Projekte1Click(Sender: TObject);
procedure Versionen1Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Projektwechseln1Click(Sender: TObject);
procedure qryBugsAfterInsert(DataSet: TDataSet);
procedure ber1Click(Sender: TObject);
procedure qryBugsversion_releaseValidate(Sender: TField);
procedure FormCreate(Sender: TObject);
procedure qryVersionenAfterInsert(DataSet: TDataSet);
procedure qryModuleAfterInsert(DataSet: TDataSet);
procedure btnBearbeitungsnotizClick(Sender: TObject);
procedure qryBugsBeforeCancel(DataSet: TDataSet);
procedure DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure qryBugsstatusChange(Sender: TField);
procedure Wechselnzu1Click(Sender: TObject);
public
eingeloggtMitarbeiter: integer;
eingeloggtMitarbeiterName: string;
aktuellesProjekt: integer;
aktuellesProjektName: string;
procedure NeuFiltern;
procedure NotizHinzufuegen(color: TColor; bez: string);
end;
 
var
frmBugtracker: TfrmBugtracker;
 
implementation
 
uses Mitarbeiter, Module, Versionen, Projekte, Login, About, inifiles;
 
{$R *.dfm}
 
procedure TfrmBugtracker.qryBugsAfterInsert(DataSet: TDataSet);
begin
// Standardwerte für einen neuen Bug
qryBugs.FieldByName('wichtigkeit').AsInteger := 5; // Mitte
qryBugs.FieldByName('erstellt').AsDateTime := Now;
qryBugs.FieldByName('erfasser').AsInteger := eingeloggtMitarbeiter;
qryBugs.FieldByName('projekt').AsInteger := aktuellesProjekt;
qryBugs.FieldByName('status').AsInteger := 1; // Offen
end;
 
procedure TfrmBugtracker.qryBugsAfterScroll(DataSet: TDataSet);
var
bakEvent: TNotifyEvent;
begin
bakEvent := TrackBar1.OnChange;
TrackBar1.OnChange := nil;
try
TrackBar1.Position := qryBugs.FieldByName('wichtigkeit').AsInteger;
finally
TrackBar1.OnChange := bakEvent;
end;
end;
 
procedure TfrmBugtracker.qryBugsBeforeCancel(DataSet: TDataSet);
var
abfrage: Integer;
begin
// Tag 1 = Es wurde der "Abbrechen"-Knopf im DBNavigator gedrückt, also wollen wir keine unnötige Bestätigung
// Alles andere = Irgendwas anderes (z.B. Scrolling oder versehentlich versucht das Fenster zu schließen)
if qryBugs.Tag = 1 then exit;
 
abfrage := MessageDlg('Speichern?', mtConfirmation, mbYesNoCancel, 0);
 
if (abfrage = IDNo) or (abfrage = IDYes) or (abfrage = IDOK) then
begin
if abfrage = IDYes then
begin
if (qryBugs.state in [dsEdit, dsInsert]) then qryBugs.Post;
end;
if abfrage = IDNo then
begin
// Wir befinden uns bereits in qryBugs.Cancel, daher auskommentiert.
// if (qryBugs.state in [dsEdit, dsInsert]) then qryBugs.Cancel;
end;
end
else raise EAbort.Create('Abbruch durch Benutzer'); // Cancel geklickt
end;
 
procedure TfrmBugtracker.qryBugsstatusChange(Sender: TField);
var
col: TColor;
begin
qryBugsstatus_geaendert.AsDateTime := Now;
 
DBLookupComboBox5.KeyValue := qryBugsstatus.AsVariant; // nur benötigt, daamit wir auf DBLookupComboBox5.Text zugreifen können
col := TColor(lkpStatuscolor.AsInteger);
NotizHinzufuegen(col, DBLookupComboBox5.Text);
end;
 
procedure TfrmBugtracker.qryBugsversion_releaseValidate(Sender: TField);
begin
if qryBugs.FieldByName('status').AsInteger <> 5 then
begin
// raise Exception.Create('Vor einer Veröffentlichung muss der Bugfix erst als "Veröffentlicht" markiert werden.');
qryBugs.FieldByName('status').AsInteger := 5;
end;
end;
 
procedure TfrmBugtracker.qryModuleAfterInsert(DataSet: TDataSet);
begin
// Standardwerte für ein neues Modul
qryModule.FieldByName('projekt').AsInteger := aktuellesProjekt;
end;
 
procedure TfrmBugtracker.qryVersionenAfterInsert(DataSet: TDataSet);
begin
// Standardwerte für eine neue Version
qryVersionen.FieldByName('projekt').AsInteger := aktuellesProjekt;
end;
 
procedure TfrmBugtracker.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
if frmLogin.ShowModal = mrCancel then Close;
end;
 
procedure TfrmBugtracker.TrackBar1Change(Sender: TObject);
begin
if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
qryBugs.FieldByName('wichtigkeit').AsInteger := TrackBar1.Position;
end;
 
procedure TfrmBugtracker.Versionen1Click(Sender: TObject);
begin
frmVersionen.ShowModal;
end;
 
procedure TfrmBugtracker.Wechselnzu1Click(Sender: TObject);
var
s: string;
id, ec: integer;
begin
s := Trim(InputBox('Wechseln zu Bug', 'ID des Bugs eingeben', '0'));
if s = '' then exit;
Val(s, id, ec);
if ec <> 0 then
begin
ShowMessageFmt('"%s" ist keine gültige Bug-ID-Nummer.', [id]);
exit;
end;
qryBugs.Locate('id', id, []);
end;
 
procedure TfrmBugtracker.ber1Click(Sender: TObject);
begin
AboutBox.ShowModal;
end;
 
procedure TfrmBugtracker.btnBearbeitungsnotizClick(Sender: TObject);
begin
NotizHinzufuegen(clOlive, 'Notiz');
end;
 
procedure TfrmBugtracker.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0:
begin
// Meine offenen Aufgaben (nach Wichtigkeit)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND (status = 1 OR status = 3) AND bearbeiter = '+IntToStr(eingeloggtMitarbeiter)+' ORDER BY wichtigkeit DESC';
end;
1:
begin
// Alle offenen Aufgaben (nach Wichtigkeit)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND (status = 1 OR status = 3) ORDER BY wichtigkeit DESC';
end;
2:
begin
// Gelöst ohne Veröffentlichung (nach Lösungsdatum)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND status = 4 ORDER BY status_geaendert DESC';
end;
3:
begin
// Gelöst und Veröffentlicht (nach Version und Lösungsdatum)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND status = 5 ORDER BY status_geaendert DESC';
end;
4:
begin
// Von mir erfasste Aufgaben (nach Erfassungsdatum)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND erfasser = '+IntToStr(eingeloggtMitarbeiter)+' ORDER BY erstellt DESC';
end;
5:
begin
// Alle Aufgaben (nach Eröffnungsdatum)
qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' ORDER BY erstellt DESC';
end;
end;
qryBugs.Active := true;
end;
 
procedure TfrmBugtracker.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
begin
if Button = nbCancel then
begin
if qryBugs.state in [dsEdit,dsInsert] then
begin
// Tag=1 soll verhindern, dass nicht gefragt wird, ob man Speichern möchte.
// Ansonsten würde diese Meldung kommen, denn ".Cancel" wird automatisch
// bei Ereignissen wie z.B. dem Scrolling aufgerufen (noch bevor
// OnBeforeScroll aufgerufen wird), bei dem man einen MBOnCloseQuery wünscht.
qryBugs.Tag := 1;
try
qryBugs.Cancel;
finally
qryBugs.Tag := 0;
end;
end;
end;
end;
 
procedure TfrmBugtracker.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
qryBugs.Cancel;
end;
 
procedure TfrmBugtracker.FormCreate(Sender: TObject);
var
ini: TMemIniFile;
begin
ini := TMemIniFile.Create('bugtracker.ini');
try
ADOConnection1.Connected := false;
ADOConnection1.ConnectionString := ini.ReadString('Database', 'ConnectionString', '');
finally
ini.Free;
end;
 
ADOConnection1.Connected := true;
qryBugs.Active := true;
tblMitarbeiter.Active := true;
qryVersionen.Active := true;
tblProjekte.Active := true;
qryModule.Active := true;
lkpStatus.Active := true;
end;
 
procedure TfrmBugtracker.Mitarbeiter1Click(Sender: TObject);
begin
frmMitarbeiter.ShowModal;
end;
 
procedure TfrmBugtracker.Module1Click(Sender: TObject);
begin
frmModule.ShowModal;
end;
 
procedure TfrmBugtracker.NeuFiltern;
begin
ComboBox1Change(ComboBox1);
 
qryModule.SQL.Text := 'SELECT * FROM module WHERE projekt = ' + IntToStr(aktuellesProjekt);
qryModule.Active := true;
 
qryVersionen.SQL.Text := 'SELECT * FROM versionen WHERE projekt = ' + IntToStr(aktuellesProjekt);
qryVersionen.Active := true;
end;
 
procedure TfrmBugtracker.NotizHinzufuegen(color: TColor; bez: string);
var
leerzeilen: integer;
umbruch: string;
prefix: string;
begin
if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
 
// Endet der Text mit zwei Zeilenabständen? Wenn nein, dann einfügen.
if Trim(DBRichEdit1.Text) <> '' then
begin
leerzeilen := 0;
if Copy(DBRichEdit1.Text, 1+Length(DBRichEdit1.Text)-2, 2) = #13#10 then Inc(leerzeilen); // letzte Zeile
if Copy(DBRichEdit1.Text, 1+Length(DBRichEdit1.Text)-4, 2) = #13#10 then Inc(leerzeilen); // Vorletzte Zeile
case leerzeilen of
0: umbruch := #13#10#13#10;
1: umbruch := #13#10;
2: umbruch := '';
end;
end
else
begin
umbruch := '';
end;
 
DBRichEdit1.SelStart := DBRichEdit1.GetTextLen;
DBRichEdit1.SelText := umbruch;
 
DBRichEdit1.SelAttributes.Size := 13;
DBRichEdit1.SelAttributes.Color := color;
DBRichEdit1.SelAttributes.Style := [fsUnderline];
if Trim(bez) <> '' then
prefix := Trim(bez) + ' - '
else
prefix := '';
DBRichEdit1.SelText := prefix + eingeloggtMitarbeiterName + ' ' + FormatDateTime('dd.mm.yyyy hh:nn', Now); // DateTimeToStr(Now);
 
DBRichEdit1.SelAttributes.Size := 10;
DBRichEdit1.SelAttributes.Color := clWindowText;
DBRichEdit1.SelAttributes.Style := [];
DBRichEdit1.SelText := #13#10 {+ '<Hier Text eingeben>'};
 
// Ans Ende scrollen
DBRichEdit1.SetFocus;
DBRichEdit1.SelStart := DBRichEdit1.GetTextLen;
DBRichEdit1.Perform(EM_SCROLLCARET, 0, 0);
end;
 
procedure TfrmBugtracker.Projekte1Click(Sender: TObject);
begin
frmProjekte.ShowModal;
end;
 
procedure TfrmBugtracker.Projektwechseln1Click(Sender: TObject);
begin
frmLogin.ShowModal;
end;
 
end.
/trunk/BugtrackerMain.dfm
0,0 → 1,545
object frmBugtracker: TfrmBugtracker
Left = 0
Top = 0
Align = alClient
Caption = 'ViaThinkSoft Bugtracker f'#252'r Windows'
ClientHeight = 596
ClientWidth = 763
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
Menu = MainMenu1
OldCreateOrder = False
Position = poScreenCenter
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Splitter1: TSplitter
Left = 249
Top = 0
Height = 596
ExplicitLeft = 0
ExplicitTop = 136
ExplicitHeight = 100
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 249
Height = 596
Align = alLeft
TabOrder = 0
DesignSize = (
249
596)
object DBGrid1: TDBGrid
Left = 8
Top = 35
Width = 233
Height = 504
Anchors = [akLeft, akTop, akRight, akBottom]
DataSource = dsBugs
ReadOnly = True
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
Columns = <
item
Expanded = False
FieldName = 'id'
Width = 46
Visible = True
end
item
Expanded = False
FieldName = 'titel'
Width = 111
Visible = True
end
item
Expanded = False
FieldName = 'wichtigkeit'
Width = 36
Visible = True
end>
end
object ComboBox1: TComboBox
Left = 8
Top = 8
Width = 233
Height = 21
Style = csDropDownList
Anchors = [akLeft, akTop, akRight]
ItemHeight = 13
TabOrder = 1
OnChange = ComboBox1Change
Items.Strings = (
'Meine offenen Aufgaben (nach Wichtigkeit)'
'Alle offenen Aufgaben (nach Wichtigkeit)'
'Gel'#246'st ohne Ver'#246'ffentlichung (nach L'#246'sungsdatum)'
'Gel'#246'st und Ver'#246'ffentlicht (nach Version und L'#246'sungsdatum)'
'Von mir erfasste Aufgaben (nach Erfassungsdatum)'
'Alle Aufgaben (nach Er'#246'ffnungsdatum)')
end
object DBNavigator2: TDBNavigator
Left = 11
Top = 554
Width = 232
Height = 25
DataSource = dsBugs
VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast]
Anchors = [akLeft, akRight, akBottom]
TabOrder = 2
end
end
object Panel2: TPanel
Left = 252
Top = 0
Width = 511
Height = 596
Align = alClient
TabOrder = 1
DesignSize = (
511
596)
object Label1: TLabel
Left = 17
Top = 101
Width = 50
Height = 13
Caption = 'Bearbeiter'
end
object Label2: TLabel
Left = 17
Top = 195
Width = 20
Height = 13
Caption = 'Titel'
end
object Label3: TLabel
Left = 240
Top = 53
Width = 33
Height = 13
Caption = 'Erstellt'
end
object Label4: TLabel
Left = 240
Top = 101
Width = 31
Height = 13
BiDiMode = bdLeftToRight
Caption = 'Status'
ParentBiDiMode = False
end
object Label5: TLabel
Left = 17
Top = 147
Width = 28
Height = 13
Caption = 'Modul'
end
object Label6: TLabel
Left = 240
Top = 216
Width = 119
Height = 13
Caption = 'Ver'#246'ffentlicht als Version'
end
object LblAngemeldet: TLabel
Left = 3
Top = 0
Width = 83
Height = 13
Caption = 'Nicht angemeldet'
end
object Label7: TLabel
Left = 250
Top = 0
Width = 46
Height = 13
Caption = 'Unwichtig'
end
object Label8: TLabel
Left = 366
Top = 0
Width = 34
Height = 13
Alignment = taRightJustify
Caption = 'Kritisch'
end
object Label9: TLabel
Left = 240
Top = 170
Width = 92
Height = 13
Caption = 'Geplant f'#252'r Version'
end
object Label10: TLabel
Left = 17
Top = 53
Width = 40
Height = 13
Caption = 'Erfasser'
end
object DBNavigator1: TDBNavigator
Left = 15
Top = 19
Width = 184
Height = 25
DataSource = dsBugs
VisibleButtons = [nbInsert, nbDelete, nbPost, nbCancel]
TabOrder = 0
BeforeAction = DBNavigator1BeforeAction
end
object DBRichEdit1: TDBRichEdit
Left = 15
Top = 280
Width = 483
Height = 299
Anchors = [akLeft, akTop, akRight, akBottom]
DataField = 'beschreibung'
DataSource = dsBugs
TabOrder = 10
end
object DBEdit1: TDBEdit
Left = 17
Top = 213
Width = 186
Height = 21
DataField = 'titel'
DataSource = dsBugs
TabOrder = 6
end
object DBLookupComboBox1: TDBLookupComboBox
Left = 17
Top = 120
Width = 186
Height = 21
DataField = 'bearbeiter'
DataSource = dsBugs
KeyField = 'id'
ListField = 'name'
ListSource = dsMitarbeiter
NullValueKey = 46
TabOrder = 1
end
object DBEdit2: TDBEdit
Left = 240
Top = 72
Width = 155
Height = 21
TabStop = False
Color = clBtnFace
DataField = 'erstellt'
DataSource = dsBugs
ReadOnly = True
TabOrder = 8
end
object DBEdit3: TDBEdit
Left = 240
Top = 141
Width = 155
Height = 21
TabStop = False
Color = clBtnFace
DataField = 'status_geaendert'
DataSource = dsBugs
ReadOnly = True
TabOrder = 3
end
object DBLookupComboBox2: TDBLookupComboBox
Left = 17
Top = 168
Width = 186
Height = 21
DataField = 'modul'
DataSource = dsBugs
KeyField = 'id'
ListField = 'modul'
ListSource = dsModule
NullValueKey = 46
TabOrder = 4
end
object DBLookupComboBox3: TDBLookupComboBox
Left = 240
Top = 235
Width = 155
Height = 21
DataField = 'version_release'
DataSource = dsBugs
KeyField = 'id'
ListField = 'version'
ListSource = dsVersionen
TabOrder = 7
end
object TrackBar1: TTrackBar
Left = 245
Top = 12
Width = 164
Height = 45
Position = 5
TabOrder = 11
OnChange = TrackBar1Change
end
object btnBearbeitungsnotiz: TButton
Left = 17
Top = 240
Width = 185
Height = 25
Caption = 'Notiz hinzuf'#252'gen'
TabOrder = 9
OnClick = btnBearbeitungsnotizClick
end
object DBLookupComboBox4: TDBLookupComboBox
Left = 240
Top = 189
Width = 155
Height = 21
DataField = 'version_agenda'
DataSource = dsBugs
KeyField = 'id'
ListField = 'version'
ListSource = dsVersionen
TabOrder = 5
end
object cbxErfasser: TDBLookupComboBox
Left = 17
Top = 72
Width = 186
Height = 21
Color = clBtnFace
DataField = 'erfasser'
DataSource = dsBugs
KeyField = 'id'
ListField = 'name'
ListSource = dsMitarbeiter
NullValueKey = 46
ReadOnly = True
TabOrder = 12
end
object DBLookupComboBox5: TDBLookupComboBox
Left = 240
Top = 120
Width = 155
Height = 21
DataField = 'status'
DataSource = dsBugs
KeyField = 'id'
ListField = 'status'
ListSource = dsStatus
TabOrder = 2
end
end
object ADOConnection1: TADOConnection
Connected = True
ConnectionString =
'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In' +
'fo=False;Initial Catalog=WULI;Data Source=GREINER\CORA2012,49001'
LoginPrompt = False
Provider = 'SQLOLEDB.1'
Left = 104
Top = 344
end
object dsBugs: TDataSource
DataSet = qryBugs
Left = 168
Top = 312
end
object tblMitarbeiter: TADOTable
Active = True
Connection = ADOConnection1
CursorType = ctStatic
TableName = 'mitarbeiter'
Left = 208
Top = 344
end
object dsMitarbeiter: TDataSource
DataSet = tblMitarbeiter
Left = 208
Top = 312
end
object MainMenu1: TMainMenu
Left = 88
Top = 216
object Stammdaten1: TMenuItem
Caption = 'Stammdaten'
object Mitarbeiter1: TMenuItem
Caption = 'Mitarbeiter'
OnClick = Mitarbeiter1Click
end
object Projekte1: TMenuItem
Caption = 'Projekte'
OnClick = Projekte1Click
end
object Module1: TMenuItem
Caption = 'Module'
OnClick = Module1Click
end
object Versionen1: TMenuItem
Caption = 'Versionen'
OnClick = Versionen1Click
end
end
object Bugs1: TMenuItem
Caption = 'Bugs'
object Wechselnzu1: TMenuItem
Caption = 'Wechseln zu...'
OnClick = Wechselnzu1Click
end
end
object Projektwechseln1: TMenuItem
Caption = 'Projekt wechseln'
OnClick = Projektwechseln1Click
end
object Hilfe1: TMenuItem
Caption = 'Hilfe'
object ber1: TMenuItem
Caption = #220'ber'
OnClick = ber1Click
end
end
end
object XPManifest1: TXPManifest
Left = 48
Top = 216
end
object qryBugs: TADOQuery
Active = True
Connection = ADOConnection1
CursorType = ctStatic
AfterInsert = qryBugsAfterInsert
BeforeCancel = qryBugsBeforeCancel
AfterScroll = qryBugsAfterScroll
Parameters = <>
SQL.Strings = (
'SELECT * FROM bugs order by wichtigkeit')
Left = 168
Top = 344
object qryBugsid: TAutoIncField
FieldName = 'id'
ReadOnly = True
end
object qryBugstitel: TStringField
FieldName = 'titel'
Size = 255
end
object qryBugsbeschreibung: TMemoField
FieldName = 'beschreibung'
BlobType = ftMemo
end
object qryBugserstellt: TDateTimeField
FieldName = 'erstellt'
end
object qryBugswichtigkeit: TIntegerField
FieldName = 'wichtigkeit'
end
object qryBugsbearbeiter: TIntegerField
FieldName = 'bearbeiter'
end
object qryBugsversion_release: TIntegerField
FieldName = 'version_release'
OnValidate = qryBugsversion_releaseValidate
end
object qryBugsmodul: TIntegerField
FieldName = 'modul'
end
object qryBugsprojekt: TIntegerField
FieldName = 'projekt'
end
object qryBugserfasser: TIntegerField
FieldName = 'erfasser'
end
object qryBugsversion_agenda: TIntegerField
FieldName = 'version_agenda'
end
object qryBugsstatus: TIntegerField
FieldName = 'status'
OnChange = qryBugsstatusChange
end
object qryBugsstatus_geaendert: TDateTimeField
FieldName = 'status_geaendert'
end
end
object dsVersionen: TDataSource
DataSet = qryVersionen
Left = 240
Top = 312
end
object tblProjekte: TADOTable
Active = True
Connection = ADOConnection1
CursorType = ctStatic
TableName = 'projekte'
Left = 272
Top = 344
end
object dsProjekte: TDataSource
DataSet = tblProjekte
Left = 272
Top = 312
end
object dsModule: TDataSource
DataSet = qryModule
Left = 304
Top = 312
end
object Timer1: TTimer
OnTimer = Timer1Timer
Left = 128
Top = 216
end
object qryVersionen: TADOQuery
Active = True
Connection = ADOConnection1
CursorType = ctStatic
AfterInsert = qryVersionenAfterInsert
Parameters = <>
SQL.Strings = (
'SELECT * FROM versionen')
Left = 240
Top = 344
end
object qryModule: TADOQuery
Active = True
Connection = ADOConnection1
CursorType = ctStatic
AfterInsert = qryModuleAfterInsert
Parameters = <>
SQL.Strings = (
'SELECT * FROM module')
Left = 304
Top = 344
end
object lkpStatus: TADOTable
Active = True
Connection = ADOConnection1
CursorType = ctStatic
TableName = 'lkp_status'
Left = 344
Top = 344
object lkpStatusid: TAutoIncField
FieldName = 'id'
ReadOnly = True
end
object lkpStatusstatus: TStringField
FieldName = 'status'
Size = 255
end
object lkpStatuscolor: TIntegerField
FieldName = 'color'
end
end
object dsStatus: TDataSource
DataSet = lkpStatus
Left = 344
Top = 312
end
end
/trunk/bugtracker_mssql.sql
0,0 → 1,53
 
CREATE TABLE [dbo].[bugs](
[id] [int] IDENTITY(1,1) NOT NULL,
[titel] [varchar](255) NULL,
[beschreibung] [text] NULL,
[erstellt] [datetime] NOT NULL,
[wichtigkeit] [int] NOT NULL,
[erfasser] [int] NOT NULL,
[bearbeiter] [int] NULL,
[status] [int] NOT NULL,
[status_geandert] [datetime] NULL,
[version_release] [int] NULL,
[version_agenda] [int] NULL,
[modul] [int] NULL,
[projekt] [int] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
ALTER TABLE [dbo].[bugs] ADD CONSTRAINT [DF_bugs_wichtigkeit] DEFAULT ((5)) FOR [wichtigkeit]
ALTER TABLE [dbo].[bugs] ADD CONSTRAINT [DF_bugs_status] DEFAULT ((1)) FOR [status]
 
CREATE TABLE [dbo].[mitarbeiter](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](255) NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[module](
[id] [int] IDENTITY(1,1) NOT NULL,
[modul] [varchar](255) NULL,
[projekt] [int] NOT NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[projekte](
[id] [int] IDENTITY(1,1) NOT NULL,
[projekt] [varchar](255) NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[versionen](
[id] [int] IDENTITY(1,1) NOT NULL,
[version] [varchar](255) NULL,
[projekt] [int] NOT NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[lkp_status](
[id] [int] IDENTITY(1,1) NOT NULL,
[status] [varchar](255) NULL,
[color] [int] NOT NULL
) ON [PRIMARY]
ALTER TABLE [dbo].[lkp_status] ADD CONSTRAINT [DF_lkp_status_color] DEFAULT ((0))
 
INSERT INTO [lkp_status] ([status]) VALUES ('Offen', 255);
INSERT INTO [lkp_status] ([status]) VALUES ('Abgelehnt', 128);
INSERT INTO [lkp_status] ([status]) VALUES ('In Arbeit', 8388736);
INSERT INTO [lkp_status] ([status]) VALUES ('Abgeschlossen', 8421376);
INSERT INTO [lkp_status] ([status]) VALUES ('Veröffentlicht', 32768);
/trunk/bugtracker_mysql.sql
0,0 → 1,131

--
-- Tabellenstruktur für Tabelle `bugs`
--
 
CREATE TABLE IF NOT EXISTS `bugs` (
`id` int(11) NOT NULL,
`titel` varchar(255) NOT NULL,
`beschreibung` longtext NOT NULL,
`erstellt` datetime DEFAULT NULL,
`wichtigkeit` int(11) NOT NULL DEFAULT '5',
`erfasser` int(11) DEFAULT NOT NULL,
`bearbeiter` int(11) DEFAULT NULL,
`status` int(11) NOT NULL DEFAULT '1',
`status_geandert` datetime DEFAULT NULL,
`version_release` int(11) NOT NULL,
`version_agenda` int(11) NOT NULL,
`modul` int(11) NOT NULL,
`projekt` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
 
-- --------------------------------------------------------
 
--
-- Tabellenstruktur für Tabelle `mitarbeiter`
--
 
CREATE TABLE IF NOT EXISTS `mitarbeiter` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
 
-- --------------------------------------------------------
 
--
-- Tabellenstruktur für Tabelle `module`
--
 
CREATE TABLE IF NOT EXISTS `module` (
`id` int(11) NOT NULL,
`projekt` int(11) NOT NULL,
`modul` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
 
-- --------------------------------------------------------
 
--
-- Tabellenstruktur für Tabelle `projekte`
--
 
CREATE TABLE IF NOT EXISTS `projekte` (
`id` int(11) NOT NULL,
`projekt` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
 
-- --------------------------------------------------------
 
--
-- Tabellenstruktur für Tabelle `versionen`
--
 
CREATE TABLE IF NOT EXISTS `versionen` (
`id` int(11) NOT NULL,
`version` varchar(255) NOT NULL,
`projekt` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
 
--
-- Tabellenstruktur für Tabelle `lkp_status`
--
 
CREATE TABLE IF NOT EXISTS `lkp_status` (
`id` int(11) NOT NULL,
`status` varchar(255) NOT NULL,
`color` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
 
--
-- Indexes for dumped tables
--
 
ALTER TABLE `bugs`
ADD PRIMARY KEY (`id`);
 
ALTER TABLE `mitarbeiter`
ADD PRIMARY KEY (`id`);
 
ALTER TABLE `module`
ADD PRIMARY KEY (`id`);
 
ALTER TABLE `projekte`
ADD PRIMARY KEY (`id`);
 
ALTER TABLE `versionen`
ADD PRIMARY KEY (`id`);
 
ALTER TABLE `lkp_status`
ADD PRIMARY KEY (`id`);
 
--
-- AUTO_INCREMENT for dumped tables
--
 
ALTER TABLE `bugs`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
 
ALTER TABLE `mitarbeiter`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
 
ALTER TABLE `module`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
 
ALTER TABLE `projekte`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
 
ALTER TABLE `versionen`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
 
ALTER TABLE `lkp_status`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
 
--
-- Daten für Tabelle `lkp_status`
--
 
INSERT INTO `lkp_status` (`id`, `status`) VALUES
(1, 'Offen', 255),
(2, 'Abgelehnt', 128),
(3, 'In Arbeit', 8388736),
(4, 'Abgeschlossen', 8421376),
(5, 'Veröffentlicht', 32768);
/trunk/Bugtracker.dproj
0,0 → 1,90
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{d9325f5e-2b75-4c5f-b683-9907a01f0c72}</ProjectGuid>
<MainSource>Bugtracker.dpr</MainSource>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
<DCC_DependencyCheckOutputName>Bugtracker.exe</DCC_DependencyCheckOutputName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Version>7.0</Version>
<DCC_DebugInformation>False</DCC_DebugInformation>
<DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_Define>RELEASE</DCC_Define>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Version>7.0</Version>
<DCC_Define>DEBUG</DCC_Define>
</PropertyGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType />
<BorlandProject>
<BorlandProject xmlns=""> <Delphi.Personality> <Parameters>
<Parameters Name="UseLauncher">False</Parameters>
<Parameters Name="LoadAllSymbols">True</Parameters>
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
</Parameters>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1031</VersionInfo>
<VersionInfo Name="CodePage">1252</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName">ViaThinkSoft</VersionInfoKeys>
<VersionInfoKeys Name="FileDescription">Bugtracker für Windows</VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName">WuLi</VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright">(C) 2016 ViaThinkSoft</VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
<VersionInfoKeys Name="OriginalFilename">Bugtracker.exe</VersionInfoKeys>
<VersionInfoKeys Name="ProductName">ViaThinkSoft Bugtracker für Windows</VersionInfoKeys>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments">www.daniel-marschall.de</VersionInfoKeys>
</VersionInfoKeys>
<Source>
<Source Name="MainSource">Bugtracker.dpr</Source>
</Source>
</Delphi.Personality> </BorlandProject></BorlandProject>
</ProjectExtensions>
<ItemGroup />
<ItemGroup>
<DelphiCompile Include="Bugtracker.dpr">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="About.pas">
<Form>AboutBox</Form>
</DCCReference>
<DCCReference Include="BugtrackerMain.pas">
<Form>frmBugtracker</Form>
</DCCReference>
<DCCReference Include="Login.pas">
<Form>frmLogin</Form>
</DCCReference>
<DCCReference Include="Mitarbeiter.pas">
<Form>frmMitarbeiter</Form>
</DCCReference>
<DCCReference Include="Module.pas">
<Form>frmModule</Form>
</DCCReference>
<DCCReference Include="Projekte.pas">
<Form>frmProjekte</Form>
</DCCReference>
<DCCReference Include="Versionen.pas">
<Form>frmVersionen</Form>
</DCCReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
</Project>
/trunk/Mitarbeiter.dfm
0,0 → 1,47
object frmMitarbeiter: TfrmMitarbeiter
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Mitarbeiter'
ClientHeight = 280
ClientWidth = 273
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
PixelsPerInch = 96
TextHeight = 13
object DBGrid1: TDBGrid
Left = 8
Top = 8
Width = 257
Height = 233
DataSource = frmBugtracker.dsMitarbeiter
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
Columns = <
item
Expanded = False
FieldName = 'name'
Visible = True
end>
end
object DBNavigator1: TDBNavigator
Left = 8
Top = 247
Width = 256
Height = 25
DataSource = frmBugtracker.dsMitarbeiter
VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbPost, nbCancel]
TabOrder = 1
end
end
/trunk/Mitarbeiter.pas
0,0 → 1,29
unit Mitarbeiter;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls;
 
type
TfrmMitarbeiter = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
 
var
frmMitarbeiter: TfrmMitarbeiter;
 
implementation
 
{$R *.dfm}
 
uses
BugtrackerMain;
 
end.
/trunk/Module.dfm
0,0 → 1,47
object frmModule: TfrmModule
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Module'
ClientHeight = 280
ClientWidth = 273
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
PixelsPerInch = 96
TextHeight = 13
object DBGrid1: TDBGrid
Left = 8
Top = 8
Width = 257
Height = 233
DataSource = frmBugtracker.dsModule
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
Columns = <
item
Expanded = False
FieldName = 'modul'
Visible = True
end>
end
object DBNavigator1: TDBNavigator
Left = 8
Top = 247
Width = 256
Height = 25
DataSource = frmBugtracker.dsModule
VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbPost, nbCancel]
TabOrder = 1
end
end
/trunk/Module.pas
0,0 → 1,29
unit Module;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls;
 
type
TfrmModule = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
 
var
frmModule: TfrmModule;
 
implementation
 
{$R *.dfm}
 
uses
BugtrackerMain;
 
end.
/trunk/Projekte.dfm
0,0 → 1,47
object frmProjekte: TfrmProjekte
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Projekte'
ClientHeight = 280
ClientWidth = 273
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
PixelsPerInch = 96
TextHeight = 13
object DBGrid1: TDBGrid
Left = 8
Top = 8
Width = 257
Height = 233
DataSource = frmBugtracker.dsProjekte
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
Columns = <
item
Expanded = False
FieldName = 'projekt'
Visible = True
end>
end
object DBNavigator1: TDBNavigator
Left = 8
Top = 247
Width = 256
Height = 25
DataSource = frmBugtracker.dsProjekte
VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbPost, nbCancel]
TabOrder = 1
end
end
/trunk/Projekte.pas
0,0 → 1,29
unit Projekte;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls;
 
type
TfrmProjekte = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
 
var
frmProjekte: TfrmProjekte;
 
implementation
 
{$R *.dfm}
 
uses
BugtrackerMain;
 
end.
/trunk/Versionen.dfm
0,0 → 1,47
object frmVersionen: TfrmVersionen
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Versionen'
ClientHeight = 280
ClientWidth = 273
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
PixelsPerInch = 96
TextHeight = 13
object DBGrid1: TDBGrid
Left = 8
Top = 8
Width = 257
Height = 233
DataSource = frmBugtracker.dsVersionen
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
Columns = <
item
Expanded = False
FieldName = 'version'
Visible = True
end>
end
object DBNavigator1: TDBNavigator
Left = 8
Top = 247
Width = 256
Height = 25
DataSource = frmBugtracker.dsVersionen
VisibleButtons = [nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbPost, nbCancel]
TabOrder = 1
end
end
/trunk/Versionen.pas
0,0 → 1,29
unit Versionen;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls;
 
type
TfrmVersionen = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
 
var
frmVersionen: TfrmVersionen;
 
implementation
 
{$R *.dfm}
 
uses
BugtrackerMain;
 
end.
/trunk/bugtracker.ini
0,0 → 1,7
[Database]
 
; Daniel Marschall Privat
;ConnectionString=Provider=MSDASQL.1;Persist Security Info=False;Data Source=MySQL RAS;Initial Catalog=bugtracker;
 
; HickelSOFT
ConnectionString=Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=WULI;Data Source=GREINER\CORA2012,49001
/trunk/About.dfm
0,0 → 1,104
object AboutBox: TAboutBox
Left = 200
Top = 108
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Info '#252'ber'
ClientHeight = 213
ClientWidth = 298
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = True
Position = poMainFormCenter
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 8
Top = 8
Width = 281
Height = 161
BevelInner = bvRaised
BevelOuter = bvLowered
ParentColor = True
TabOrder = 0
object ProgramIcon: TImage
Left = 8
Top = 8
Width = 65
Height = 57
Picture.Data = {
07544269746D617076020000424D760200000000000076000000280000002000
0000200000000100040000000000000200000000000000000000100000000000
000000000000000080000080000000808000800000008000800080800000C0C0
C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
FF00000000000000000000000000000000000EE8787878EEEEEEE03F30878EEE
EEE00EE8787878EEEEEEE03F30878EEEEEE00EE8787878EEEEEEE03F30878EEE
EEE00EE8787878EEEEEEE03F30878EEEEEE00887787877788888803F3088787E
EEE00788787878878887803F3088887EEEE00788887888878887803F3088887E
EEE00877888887788888703F308887EEEEE00888777778888888037883088888
8EE007777777777777703787883087777EE00888888888888803787FF8830888
888008888888888880378777778830888880077777777788037873F3F3F87808
88E00888888888803787FFFFFFFF8830EEE00887777778800001111111111100
EEE00888888888888899B999B99999EEEEE00888888888888899B9B99BB9B9EE
EEE0088888888888899BB9BB99BB99EEEEE0078888888888899B999B999999EE
EEE0087788888778899B9B9BB9BB99EEEEE00888778778888E9B9B9BB9999EEE
EEE0088888788888EE9B99B9BB9BEEEEEEE00EE8888888EEEEE999B9999EEEEE
EEE00EEEE888EEEEEEEE99BB999EEEEEEEE00EEEEE8EEEEEEEEEE999B9EEEEEE
EEE00EEEEE8EEEEEEEEEEEE999EEEEEEEEE00EEEEE8EEEEEEEEEEEEE99EEEEEE
EEE00EEEEE8EEEEEEEEEEEEE9EEEEEEEEEE00EEEEE8EEEEEEEEEEEEEEEEEEEEE
EEE00EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE00000000000000000000000000000
0000}
Stretch = True
IsControl = True
end
object ProductName: TLabel
Left = 88
Top = 16
Width = 178
Height = 13
Caption = 'ViaThinkSoft Bugtracker f'#252'r Windows'
IsControl = True
end
object Version: TLabel
Left = 88
Top = 40
Width = 53
Height = 13
Caption = 'Version 0.1'
IsControl = True
end
object Copyright: TLabel
Left = 8
Top = 80
Width = 135
Height = 13
Caption = 'Copyright 2016 ViaThinkSoft'
IsControl = True
end
object Comments: TLabel
Left = 8
Top = 104
Width = 258
Height = 52
AutoSize = False
Caption = 'Entwickelt von Daniel Marschall, www.daniel-marschall.de'
WordWrap = True
IsControl = True
end
end
object OKButton: TButton
Left = 111
Top = 180
Width = 75
Height = 25
Cancel = True
Caption = 'OK'
Default = True
ModalResult = 1
TabOrder = 1
end
end
/trunk/Login.dfm
0,0 → 1,111
object frmLogin: TfrmLogin
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'ViaThinkSoft Bugtracker f'#252'r Windows'
ClientHeight = 385
ClientWidth = 298
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poMainFormCenter
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 32
Top = 24
Width = 233
Height = 33
AutoSize = False
Caption = 'Wilkommen'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -27
Font.Name = 'Tahoma'
Font.Style = [fsBold, fsItalic]
ParentFont = False
end
object GroupBox1: TGroupBox
Left = 32
Top = 80
Width = 233
Height = 105
Caption = 'Wer sind Sie?'
TabOrder = 0
object Label2: TLabel
Left = 98
Top = 59
Width = 103
Height = 13
Cursor = crHandPoint
Alignment = taRightJustify
Caption = 'Mitarbeiter verwalten'
Font.Charset = DEFAULT_CHARSET
Font.Color = clHotLight
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsUnderline]
ParentFont = False
OnClick = Label2Click
end
object cbxMitarbeiter: TDBLookupComboBox
Left = 24
Top = 32
Width = 177
Height = 21
KeyField = 'id'
ListField = 'name'
ListSource = frmBugtracker.dsMitarbeiter
TabOrder = 0
end
end
object GroupBox2: TGroupBox
Left = 32
Top = 200
Width = 233
Height = 105
Caption = 'An was m'#246'chten Sie arbeiten?'
TabOrder = 1
object Label3: TLabel
Left = 110
Top = 59
Width = 91
Height = 13
Cursor = crHandPoint
Alignment = taRightJustify
Caption = 'Projekte verwalten'
Font.Charset = DEFAULT_CHARSET
Font.Color = clHotLight
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsUnderline]
ParentFont = False
OnClick = Label3Click
end
object cbxProjekt: TDBLookupComboBox
Left = 24
Top = 32
Width = 177
Height = 21
KeyField = 'id'
ListField = 'projekt'
ListSource = frmBugtracker.dsProjekte
TabOrder = 0
end
end
object Button1: TButton
Left = 94
Top = 327
Width = 115
Height = 36
Caption = 'Los geht'#39's'
Default = True
TabOrder = 2
OnClick = Button1Click
end
end
/trunk/Login.pas
0,0 → 1,73
unit Login;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, DB, DBClient;
 
type
TfrmLogin = class(TForm)
Label1: TLabel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
cbxMitarbeiter: TDBLookupComboBox;
cbxProjekt: TDBLookupComboBox;
procedure Label2Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
 
var
frmLogin: TfrmLogin;
 
implementation
 
uses
BugtrackerMain, Mitarbeiter, Projekte;
 
{$R *.dfm}
 
procedure TfrmLogin.Button1Click(Sender: TObject);
begin
if VarIsNull(cbxMitarbeiter.KeyValue) then
begin
ShowMessage('Bitte Mitarbeiter auswählen.');
cbxMitarbeiter.SetFocus;
Exit;
end;
if VarIsNull(cbxProjekt.KeyValue) then
begin
ShowMessage('Bitte Projekt auswählen.');
cbxProjekt.SetFocus;
Exit;
end;
frmBugtracker.eingeloggtMitarbeiter := cbxMitarbeiter.KeyValue;
frmBugtracker.eingeloggtMitarbeiterName := cbxMitarbeiter.Text;
frmBugtracker.aktuellesProjekt := cbxProjekt.KeyValue;
frmBugtracker.aktuellesProjektName := cbxProjekt.Text;
 
frmBugtracker.LblAngemeldet.Caption := Format('Eingeloggt: %s, Projekt: %s', [frmBugtracker.eingeloggtMitarbeiterName, frmBugtracker.aktuellesProjektName]);
frmBugtracker.NeuFiltern;
 
ModalResult := mrOk; // Das schließt den Dialog
end;
 
procedure TfrmLogin.Label2Click(Sender: TObject);
begin
frmMitarbeiter.ShowModal;
end;
 
procedure TfrmLogin.Label3Click(Sender: TObject);
begin
frmProjekte.ShowModal;
end;
 
end.
/trunk/Bugtracker.bdsproj
0,0 → 1,175
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject>
<PersonalityInfo>
<Option>
<Option Name="Personality">Delphi.Personality</Option>
<Option Name="ProjectType"></Option>
<Option Name="Version">1.0</Option>
<Option Name="GUID">{D9325F5E-2B75-4C5F-B683-9907A01F0C72}</Option>
</Option>
</PersonalityInfo>
<Delphi.Personality>
<Source>
<Source Name="MainSource">Bugtracker.dpr</Source>
</Source>
<FileVersion>
<FileVersion Name="Version">7.0</FileVersion>
</FileVersion>
<Compiler>
<Compiler Name="A">8</Compiler>
<Compiler Name="B">0</Compiler>
<Compiler Name="C">1</Compiler>
<Compiler Name="D">1</Compiler>
<Compiler Name="E">0</Compiler>
<Compiler Name="F">0</Compiler>
<Compiler Name="G">1</Compiler>
<Compiler Name="H">1</Compiler>
<Compiler Name="I">1</Compiler>
<Compiler Name="J">0</Compiler>
<Compiler Name="K">0</Compiler>
<Compiler Name="L">1</Compiler>
<Compiler Name="M">0</Compiler>
<Compiler Name="N">1</Compiler>
<Compiler Name="O">1</Compiler>
<Compiler Name="P">1</Compiler>
<Compiler Name="Q">0</Compiler>
<Compiler Name="R">0</Compiler>
<Compiler Name="S">0</Compiler>
<Compiler Name="T">0</Compiler>
<Compiler Name="U">0</Compiler>
<Compiler Name="V">1</Compiler>
<Compiler Name="W">0</Compiler>
<Compiler Name="X">1</Compiler>
<Compiler Name="Y">1</Compiler>
<Compiler Name="Z">1</Compiler>
<Compiler Name="ShowHints">True</Compiler>
<Compiler Name="ShowWarnings">True</Compiler>
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
<Compiler Name="NamespacePrefix"></Compiler>
<Compiler Name="GenerateDocumentation">False</Compiler>
<Compiler Name="DefaultNamespace"></Compiler>
<Compiler Name="SymbolDeprecated">True</Compiler>
<Compiler Name="SymbolLibrary">True</Compiler>
<Compiler Name="SymbolPlatform">True</Compiler>
<Compiler Name="SymbolExperimental">True</Compiler>
<Compiler Name="UnitLibrary">True</Compiler>
<Compiler Name="UnitPlatform">True</Compiler>
<Compiler Name="UnitDeprecated">True</Compiler>
<Compiler Name="UnitExperimental">True</Compiler>
<Compiler Name="HResultCompat">True</Compiler>
<Compiler Name="HidingMember">True</Compiler>
<Compiler Name="HiddenVirtual">True</Compiler>
<Compiler Name="Garbage">True</Compiler>
<Compiler Name="BoundsError">True</Compiler>
<Compiler Name="ZeroNilCompat">True</Compiler>
<Compiler Name="StringConstTruncated">True</Compiler>
<Compiler Name="ForLoopVarVarPar">True</Compiler>
<Compiler Name="TypedConstVarPar">True</Compiler>
<Compiler Name="AsgToTypedConst">True</Compiler>
<Compiler Name="CaseLabelRange">True</Compiler>
<Compiler Name="ForVariable">True</Compiler>
<Compiler Name="ConstructingAbstract">True</Compiler>
<Compiler Name="ComparisonFalse">True</Compiler>
<Compiler Name="ComparisonTrue">True</Compiler>
<Compiler Name="ComparingSignedUnsigned">True</Compiler>
<Compiler Name="CombiningSignedUnsigned">True</Compiler>
<Compiler Name="UnsupportedConstruct">True</Compiler>
<Compiler Name="FileOpen">True</Compiler>
<Compiler Name="FileOpenUnitSrc">True</Compiler>
<Compiler Name="BadGlobalSymbol">True</Compiler>
<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
<Compiler Name="InvalidDirective">True</Compiler>
<Compiler Name="PackageNoLink">True</Compiler>
<Compiler Name="PackageThreadVar">True</Compiler>
<Compiler Name="ImplicitImport">True</Compiler>
<Compiler Name="HPPEMITIgnored">True</Compiler>
<Compiler Name="NoRetVal">True</Compiler>
<Compiler Name="UseBeforeDef">True</Compiler>
<Compiler Name="ForLoopVarUndef">True</Compiler>
<Compiler Name="UnitNameMismatch">True</Compiler>
<Compiler Name="NoCFGFileFound">True</Compiler>
<Compiler Name="ImplicitVariants">True</Compiler>
<Compiler Name="UnicodeToLocale">True</Compiler>
<Compiler Name="LocaleToUnicode">True</Compiler>
<Compiler Name="ImagebaseMultiple">True</Compiler>
<Compiler Name="SuspiciousTypecast">True</Compiler>
<Compiler Name="PrivatePropAccessor">True</Compiler>
<Compiler Name="UnsafeType">False</Compiler>
<Compiler Name="UnsafeCode">False</Compiler>
<Compiler Name="UnsafeCast">False</Compiler>
<Compiler Name="OptionTruncated">True</Compiler>
<Compiler Name="WideCharReduced">True</Compiler>
<Compiler Name="DuplicatesIgnored">True</Compiler>
<Compiler Name="UnitInitSeq">True</Compiler>
<Compiler Name="LocalPInvoke">True</Compiler>
<Compiler Name="MessageDirective">True</Compiler>
<Compiler Name="CodePage"></Compiler>
</Compiler>
<Linker>
<Linker Name="MapFile">0</Linker>
<Linker Name="OutputObjs">0</Linker>
<Linker Name="GenerateHpps">False</Linker>
<Linker Name="ConsoleApp">1</Linker>
<Linker Name="DebugInfo">False</Linker>
<Linker Name="RemoteSymbols">False</Linker>
<Linker Name="GenerateDRC">False</Linker>
<Linker Name="MinStackSize">16384</Linker>
<Linker Name="MaxStackSize">1048576</Linker>
<Linker Name="ImageBase">4194304</Linker>
<Linker Name="ExeDescription"></Linker>
</Linker>
<Directories>
<Directories Name="OutputDir"></Directories>
<Directories Name="UnitOutputDir"></Directories>
<Directories Name="PackageDLLOutputDir"></Directories>
<Directories Name="PackageDCPOutputDir"></Directories>
<Directories Name="SearchPath"></Directories>
<Directories Name="Packages"></Directories>
<Directories Name="Conditionals"></Directories>
<Directories Name="DebugSourceDirs"></Directories>
<Directories Name="UsePackages">False</Directories>
</Directories>
<Parameters>
<Parameters Name="RunParams"></Parameters>
<Parameters Name="HostApplication"></Parameters>
<Parameters Name="Launcher"></Parameters>
<Parameters Name="UseLauncher">False</Parameters>
<Parameters Name="DebugCWD"></Parameters>
<Parameters Name="Debug Symbols Search Path"></Parameters>
<Parameters Name="LoadAllSymbols">True</Parameters>
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
</Parameters>
<Language>
<Language Name="ActiveLang"></Language>
<Language Name="ProjectLang">$00000000</Language>
<Language Name="RootDir"></Language>
</Language>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1031</VersionInfo>
<VersionInfo Name="CodePage">1252</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName">ViaThinkSoft</VersionInfoKeys>
<VersionInfoKeys Name="FileDescription">Bugtracker für Windows</VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName">WuLi</VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright">(C) 2016 ViaThinkSoft</VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
<VersionInfoKeys Name="OriginalFilename">Bugtracker.exe</VersionInfoKeys>
<VersionInfoKeys Name="ProductName">ViaThinkSoft Bugtracker für Windows</VersionInfoKeys>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments">www.daniel-marschall.de</VersionInfoKeys>
</VersionInfoKeys>
</Delphi.Personality>
</BorlandProject>
/trunk/Bugtracker.cfg
0,0 → 1,38
-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J-
-$K-
-$L+
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$YD
-$Z1
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-LE"C:\Users\user\Documents\Borland Studio-Projekte\Bpl"
-LN"C:\Users\user\Documents\Borland Studio-Projekte\Bpl"
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST
/trunk/Bugtracker.dpr
0,0 → 1,25
program Bugtracker;
 
uses
Forms,
BugtrackerMain in 'BugtrackerMain.pas' {frmBugtracker},
Mitarbeiter in 'Mitarbeiter.pas' {frmMitarbeiter},
Versionen in 'Versionen.pas' {frmVersionen},
Module in 'Module.pas' {frmModule},
Projekte in 'Projekte.pas' {frmProjekte},
Login in 'Login.pas' {frmLogin},
About in 'About.pas' {AboutBox};
 
{$R *.res}
 
begin
Application.Initialize;
Application.CreateForm(TfrmBugtracker, frmBugtracker);
Application.CreateForm(TfrmMitarbeiter, frmMitarbeiter);
Application.CreateForm(TfrmVersionen, frmVersionen);
Application.CreateForm(TfrmModule, frmModule);
Application.CreateForm(TfrmProjekte, frmProjekte);
Application.CreateForm(TfrmLogin, frmLogin);
Application.CreateForm(TAboutBox, AboutBox);
Application.Run;
end.
/trunk/Bugtracker.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/About.pas
0,0 → 1,31
unit About;
 
interface
 
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
 
type
TAboutBox = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
Comments: TLabel;
OKButton: TButton;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
 
var
AboutBox: TAboutBox;
 
implementation
 
{$R *.dfm}
 
end.
/trunk/DBDateEdit.txt
0,0 → 1,14
 
procedure TForm1.qryBugsAfterScroll(DataSet: TDataSet);
begin
DateTimePicker1.DateTime := qryBugs.FieldByName('fixdatum').AsDateTime;
end;
 
procedure TForm1.DateTimePicker1CloseUp(Sender: TObject);
begin
LockWindowUpdate(DBGrid1.Handle);
if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
qryBugs.FieldByName('fixdatum').AsDateTime := DateTimePicker1.DateTime;
LockWindowUpdate(0);
end;
 
/trunk/.
Property changes:
Added: svn:ignore
+*.dcu
+*.exe
+__history
+*.local
+*.identcache