Nun ich benutze das Standard-Element "Frame" um in diesem ein
Unit: TFrame6 = class(TFrame) anzuzeigen. Um damit einige Elemente zusammenzufassen und mit Variablen und Prozeduren zu versehen um sie anzuzeigen ohne ein neues Formular zu erstellen.
Das Frame liegt über der ganzen Form und wird bei Benutzung mit Daten gefüllt und sichtbar gemacht.
Ich habe hier mal etwas "reduzierten" Code angegeben, (also bitte nicht wundern wenn vllt. etwas zu viel ist oder vllt. eine Elementdefinition fehlt). Aber die anderen Elemente funktionieren sauber.
Es kommt mir auf die Prozeduren: "EdCodeChange(Sender: TObject)" und "Frame61EdCodeChange(Sender: Tobject)" an. (Nach meiner erfahrung reicht eine ich hab aber beide getestet) Sie sollen reagieren wenn sich der Text im Feld "EdCode" ändert.
Wozu es aber nicht kommt da wenn ich mit der Tastatur etwas in EdCode schreibe und mit Return bestätige oder die Eingabe abbreche sich der Frame schließt.
Delphi-Quellcode:
unit Unit6;
interface
uses
Systems... und FMX...
type
TFrame6 =
class(TFrame)
BtnLoeschen: TButton;
BtnBestaetigen: TButton;
EdCode: TEdit;
...
procedure BtnLoeschenClick(Sender: TObject);
procedure EdCodeChange(Sender: TObject);
private
FTitel:
string;
FMulti: Boolean;
FUser: TObject;
public
property User: TObject
read FUser
write FUser;
property Multi: Boolean
read FMulti
write FMulti;
procedure gridsBefuellen(listeC1: TStringList; listeB1: TStringList; listeC2: TStringList; listeB2: TStringList);
end;
implementation
procedure TFrame6.gridsBefuellen(listeC1: TStringList; listeB1: TStringList; listeC2: TStringList; listeB2: TStringList);
var
...
begin
...
end;
procedure TFrame6.BtnLoeschenClick(Sender: TObject);
begin
EdCode.Text := '
2';
EdCode.Text := '
';
end;
procedure TFrame6.EdCodeChange(Sender: TObject);
var
...
begin
...
end;
end.
Delphi-Quellcode:
unit Main_FMApp;
interface
uses
system... fmx... UNIT6
type
TForm6 =
class(TForm)
BtnStatus: TButton;
BtnProjekt: TButton;
Frame61: TFrame6;
procedure FormCreate(Sender: TObject);
...
procedure FillFrame(Sender: TObject);
procedure Frame61BtnBestaetigenClick(Sender: TObject);
procedure Frame61EdCodeChange(Sender: TObject);
var
Form6: TForm6;
implementation
procedure TForm6.FormCreate(Sender: TObject);
begin
...
Frame61.Visible := False;
Frame61.Enabled := False;
end;
// Testabfrage ist der Frame aktiviert, wenn ja deaktiviert die "Tablet-Rückfunktion"
// den Frame, andernfalls arbeitet sie normal und verlässt das Programm
procedure TForm6.FormKeyUp(Sender: TObject;
var Key: Word;
var KeyChar: Char;
Shift: TShiftState);
begin
if Frame61.Visible = True
then
begin
Frame61.Visible := False;
Key := 0;
end
else Key := 1;
end;
procedure TForm6.Frame61EdCodeChange(Sender: TObject);
var
...
begin
...
if Frame61.User = BtnProjekt
then
begin
...
end;
if Frame61.User = BtnStatus
then
begin
...
end;
Frame61.Visible := true;
Frame61.Enabled := true;
end;
//Füllen des Frames für die Projektwahl und Anzeige desselben.
procedure TForm6.BtnProjektClick(Sender: TObject);
begin
FillFrame(Sender);
Frame61.Visible := true;
Frame61.Enabled := true;
end;
//Füllen des Frames für die Statuswahl und Anzeige desselben.
procedure TForm6.BtnStatusClick(Sender: TObject);
begin
FillFrame(Sender);
Frame61.Visible := true;
Frame61.Enabled := true;
end;
procedure TForm6.FillFrame(Sender: TObject);
var
...
begin
...
if Sender = BtnProjekt
then
begin
Frame61.setTitel('
Projekt');
Frame61.Multi := False;
...
end;
if Sender = BtnStatus
then
begin
Frame61.SetTitel('
Status');
Frame61.Multi := True;
...
end;
Frame61.User := Sender;
...
end;
end.
PS. Ich bin hier noch nicht so lange dabei und weiss nicht was üblich ist und hoffe daher ich habs mit dem Code nicht übertrieben.