Inhalt
Aktueller Ordner:
duesseldorfer-schuelerinventar-freepascal-clientu_groups.pas
unit u_groups;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Grids,
fpjson, u_api;
type
{ TGroupManagerForm }
TGroupManagerForm = class(TForm)
btnAdd: TButton;
btnClose: TButton;
btnDelete: TButton;
edtNewGroup: TEdit;
Label1: TLabel;
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
FUserID: string;
FSession: string;
FGroups: TJSONArray;
procedure LoadGroups;
procedure UpdateGrid;
procedure OnAddClick(Sender: TObject);
procedure OnDeleteClick(Sender: TObject);
procedure OnCloseClick(Sender: TObject);
public
constructor Create(AOwner: TComponent; const UserID, Session: string); reintroduce;
end;
implementation
{$R *.lfm}
{ TGroupManagerForm }
constructor TGroupManagerForm.Create(AOwner: TComponent; const UserID, Session: string);
begin
inherited Create(AOwner);
FUserID := UserID;
FSession := Session;
Caption := 'Gruppenverwaltung';
Width := 500;
Height := 400;
Position := poScreenCenter;
end;
procedure TGroupManagerForm.FormCreate(Sender: TObject);
begin
StringGrid1.ColCount := 2;
StringGrid1.RowCount := 1;
StringGrid1.FixedCols := 0;
StringGrid1.Cells[0, 0] := 'Gruppenname';
StringGrid1.Cells[1, 0] := '';
StringGrid1.ColWidths[0] := 380;
StringGrid1.ColWidths[1] := 50;
// Buttons manuell verbinden
btnAdd.OnClick := @OnAddClick;
btnDelete.OnClick := @OnDeleteClick;
btnClose.OnClick := @OnCloseClick;
end;
procedure TGroupManagerForm.FormShow(Sender: TObject);
begin
LoadGroups;
end;
procedure TGroupManagerForm.LoadGroups;
begin
if Assigned(FGroups) then
FGroups.Free;
FGroups := GetGroups(FUserID, FSession);
UpdateGrid;
end;
procedure TGroupManagerForm.UpdateGrid;
var
i: Integer;
Group: TJSONObject;
begin
if not Assigned(FGroups) then
begin
StringGrid1.RowCount := 1;
Exit;
end;
StringGrid1.RowCount := FGroups.Count + 1;
for i := 0 to FGroups.Count - 1 do
begin
Group := TJSONObject(FGroups.Objects[i]);
StringGrid1.Cells[0, i + 1] := Group.Get('name', '');
end;
end;
procedure TGroupManagerForm.OnAddClick(Sender: TObject);
var
GroupName: string;
begin
GroupName := Trim(edtNewGroup.Text);
if GroupName = '' then
begin
ShowMessage('Bitte Gruppennamen eingeben');
Exit;
end;
if CreateGroup(FUserID, FSession, GroupName) then
begin
edtNewGroup.Text := '';
LoadGroups;
end
else
ShowMessage('Fehler beim Erstellen der Gruppe');
end;
procedure TGroupManagerForm.OnDeleteClick(Sender: TObject);
var
Row: Integer;
GroupName: string;
GroupID: Integer;
begin
Row := StringGrid1.Row;
if Row < 1 then
Exit;
GroupName := StringGrid1.Cells[0, Row];
GroupID := 0;
if Assigned(FGroups) and (Row - 1 < FGroups.Count) then
GroupID := TJSONObject(FGroups.Objects[Row-1]).Get('gruppeID', 0);
if GroupID = 0 then
begin
ShowMessage('Gruppe nicht gefunden');
Exit;
end;
if MessageDlg('Gruppe löschen', Format('Möchten Sie "%s" wirklich löschen?', [GroupName]),
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
if DeleteGroup(FUserID, FSession, GroupID) then
LoadGroups
else
ShowMessage('Fehler beim Löschen der Gruppe');
end;
end;
procedure TGroupManagerForm.OnCloseClick(Sender: TObject);
begin
Close;
end;
end.