unit USpielbearbeitung;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Menus, Grids, USpieleigenschaften, IniFiles;
type
TSpielBearbeitung =
class
//Objekte
BearbeitungsForm : TForm;
Grid : TStringgrid;
Box : TComboBox;
(...)
//Variablen
zPfad :
String;
aktCellX : Integer;
aktCellY : Integer;
//(...)
procedure SetRect(rec:Trect);
// <-------------------------------------- hier rein
private
{private-Deklarationen}
procedure AktuelleZelleSpeichern(Sender: TObject; ACol,ARow: Integer;
var CanSelect: Boolean);
//(...)
public
{public-Deklarationen}
//(...)
end;
implementation
uses UMain;
//----------------------------------------------------------------------------//
//constructor
// - Form erzeugen, konfigurieren, anzeigem
// - Menu erzeugen, konfigurieren
// - Grid erzeugen, konfigurieren
//----------------------------------------------------------------------------//
constructor TSpielBearbeitung.create(pPfad :
String; Eigenschaften : Boolean);
begin
//Form -erzeugen, -konfigurieren, -anzeigen
BearbeitungsForm := TForm.create(
nil);
with BearbeitungsForm
do
begin
BorderIcons := BorderIcons - [biMaximize] - [biSystemMenu] - [biMaximize];
width := 500;
height := 300;
position := poScreencenter;
end;
//(...)
//Grid erzeugen, konfigurieren
Grid := TStringgrid.Create(
nil);
with Grid
do
begin
parent := Bearbeitungsform;
fixedcols := 0;
fixedrows := 2;
Options := Options + [goAlwaysShowEditor] + [goEditing];
OnSelectCell := AktuelleZelleSpeichern;
end;
//ComboBox erzeugen
Box := TComboBox.Create(
nil);
//Form anzeigen
BearbeitungsForm.Show;
end;
//----------------------------------------------------------------------------//
//schliessen
// - Spielbearbeitung schließen
//----------------------------------------------------------------------------//
procedure TSpielBearbeitung.schliessen(Sender:TObject);
begin
Bearbeitungsform.Close;
end;
//----------------------------------------------------------------------------//
//destructor
// - Objekte zerstören
//----------------------------------------------------------------------------//
destructor TSpielBearbeitung.free();
begin
//ComboBox freigeben
Box.Free;
//Gridfreigeben
Grid.Free;
//Form freigeben
BearbeitungsForm.Free;
end;
//----------------------------------------------------------------------------//
//Aktuelle Zelle Speichern
// - Die aktuell gewählte Zelle wird gespeichert
// - Wenn es die letzte ist, wird die ComboBox angezeigt
//----------------------------------------------------------------------------//
{procedure TSpielbearbeitung.AktuelleZelleSpeichern(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);}
procedure TfoDBEdit.StringGridOnDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
// <--- anderes ereignis!!!!
begin
self.aktCellX := Acol;
self.aktCellY := Arow;
if ACol = Grid.ColCount
then
begin
self.SetRect(Grid.CellRect(ACol,ARow));
Box.visible:=true;
// sichtbar
end
else
box.visible:=false;
// unsichtbar
end;
//----------------------------------------------------------------------------//
//Der ComboBox die aktuelle Zelle zuweisen
//----------------------------------------------------------------------------//
procedure TSpielBearbeitung.SetRect(rec:TRect);
var r : TRect;
begin
CopyRect(r,rec);
r.BottomRight := Box.Parent.ClientToScreen(Grid.ClienttoScreen(r.BottomRight));
r.TopLeft := Box.Parent.ClienttoScreen(Grid.ClienttoScreen(r.TopLeft));
Box.SetBounds(r.left,r.top,r.right-r.left,r.bottom-r.top);
Box.BringToFront;
end;
end